diff --git a/.github/workflows/infra-deploy.yml b/.github/workflows/infra-deploy.yml index 54de9ec9b..d7d93fc09 100644 --- a/.github/workflows/infra-deploy.yml +++ b/.github/workflows/infra-deploy.yml @@ -79,7 +79,7 @@ jobs: run: | echo "CMS_APP_API_ENDPOINT=$API_GATEWAY_URL" >> .env echo ${{ secrets.NPM_FONTAWESOME_CONFIG }} | base64 -d >> .npmrc - export NODE_OPTIONS="--max_old_space_size=4096" + export NODE_OPTIONS="--max_old_space_size=8192" npm ci --legacy-peer-deps npm run gen-api-docs-all npm run build diff --git a/docs/api/authentication.md b/docs/api/authentication.md index 129c9632f..42e0955a3 100644 --- a/docs/api/authentication.md +++ b/docs/api/authentication.md @@ -68,8 +68,8 @@ To authenticate to the ISC APIs, you must be able to connect to your tenant to s Your tenant's OAuth details refer to the details you need to know to connect it to the APIs. You need to know your tenant's name, its `authorizeEndpoint` URL, and its `tokenEndpoint` URL. -Your ISC instance is likely using the domain name supplied by SailPoint (`{tenant}.api.identitynow.com`), in which case, the tenant name is in the URL. This is assumed to be the case in this guide. -However, if your ISC instance is using a vanity URL, you must enter this URL into your browser to get your OAuth info: `https://{tenant}.api.identitynow.com/oauth/info` +Your ISC instance is likely using the domain name supplied by SailPoint (`[tenant].api.identitynow.com`), in which case, the tenant name is in the URL. This is assumed to be the case in this guide. +However, if your ISC instance is using a vanity URL, you must enter this URL into your browser to get your OAuth info: `https://[tenant].api.identitynow.com/oauth/info` If you have admin access but don't know your tenant name, you can learn it by following these steps: @@ -100,7 +100,7 @@ A personal access token (PAT) is a method of authenticating to an API as a user Any ISC user can generate a PAT. To do so, follow these steps: -1. Select **Preferences** from the drop-down menu under your username, then **Personal Access Tokens** on the left. You can also go directly to the page by using this URL (replace `{tenant}` with your Identity Security Cloud tenant): `https://{tenant}.identitynow.com/ui/d/user-preferences/personal-access-tokens` +1. Select **Preferences** from the drop-down menu under your username, then **Personal Access Tokens** on the left. You can also go directly to the page by using this URL (replace `[tenant]` with your Identity Security Cloud tenant): `https://[tenant].identitynow.com/ui/d/user-preferences/personal-access-tokens` 2. Click **New Token** and enter a meaningful description to help differentiate the token from others. @@ -130,7 +130,7 @@ There are several different authorization flows that OAuth 2.0 supports, and eac 1. [**Client Credentials**](https://oauth.net/2/grant-types/client-credentials/) - Clients use this grant type to obtain a JWT `access_token` without user involvement such as scripts, programs or system to system integration. 2. [**Authorization Code**](https://oauth.net/2/grant-types/authorization-code/) - Clients use this grant type to exchange an authorization code for an `access_token`. Authorization codes are mainly used by web applications because there is a login into ISC with a subsequent redirect back to the web application/client. -3. [**Refresh Token**](https://oauth.net/2/grant-types/refresh-token/) - Clients use this grant type to exchange a refresh token for a new `access_token` when the existing `access_token` has expired. This allows clients to continue using the APIs without having to re-authenticate as frequently. This grant type is commonly used together with `Authorization Code` to prevent a user from having to log in several times per day. +3. [**Refresh Token**](https://oauth.net/2/grant-types/refresh-token/) - Clients use this grant type to exchange a refresh token for a new `access_token` when the existing `access_token` has expired. This allows clients to continue using the APIs without having to re-authenticate as frequently. This grant type can only be used together with `Authorization Code` to prevent a user from having to log in several times per day. One way to determine which authorization flow you need to use is to look at the specification for the endpoint you want to use. The endpoint will have the supported OAuth flows listed under the 'Authorization' dropdown, like the [List Access Profiles endpoint](https://developer.sailpoint.com/docs/api/beta/list-access-profiles): @@ -170,7 +170,7 @@ This is the overall authorization flow: 1. The client first submits an OAuth 2.0 token request to ISC in this form: ```text -POST https://{tenant}.api.identitynow.com/oauth/token +POST https://[tenant].api.identitynow.com/oauth/token ``` The request includes the client credential information passed in the request body, as shown in this example using [Postman](https://www.getpostman.com): @@ -182,22 +182,22 @@ This example shows how to pass the information with form-data in the request bod - Use x-www-form-urlencoded data to pass in the client credential information in the request body. - Use query parameters to pass the information in the request URL. The request URL will look like this: ```text - https://{tenant}.api.identitynow.com/oauth/token?grant_type=client_credentials&client_id={{clientId}}&client_secret={{clientSecret}} + https://[tenant].api.identitynow.com/oauth/token?grant_type=client_credentials&client_id={{clientId}}&client_secret={{clientSecret}} ``` -- If you are using Postman, you can use the 'Authorization' tab to pass in the client credentials. If you use this option, you must also specify the access token URL: https://{tenant}.api.identitynow.com/oauth/token +- If you are using Postman, you can use the 'Authorization' tab to pass in the client credentials. If you use this option, you must also specify the access token URL: https://[tenant].api.identitynow.com/oauth/token The OAuth 2.0 token request must include this information: | Key | Description | | --- | --- | | `grant_type` | This is set to `CLIENT_CREDENTIALS` for the authorization code grant type. | -| `client_id` | This is the API client's ID (e.g. `b61429f5-203d-494c-94c3-04f54e17bc5c`). You can generate this ID at `https://{tenant}.identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`, or you can generate it when you create a PAT. | -| `client_secret` | This is the API client's secret describing (e.g. `c924417c85b19eda40e171935503d8e9747ca60ddb9b48ba4c6bb5a7145fb6c5`). You can generate this secret at `https://{tenant}.identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`, or you can generate it when you create a PAT. | +| `client_id` | This is the API client's ID (e.g. `b61429f5-203d-494c-94c3-04f54e17bc5c`). You can generate this ID at `https://[tenant].identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`, or you can generate it when you create a PAT. | +| `client_secret` | This is the API client's secret describing (e.g. `c924417c85b19eda40e171935503d8e9747ca60ddb9b48ba4c6bb5a7145fb6c5`). You can generate this secret at `https://[tenant].identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`, or you can generate it when you create a PAT. | This example cURL command passes client credentials in the body as form-data to generate an access token: ```bash -curl --location 'https://{tenant}.api.identitynow.com/oauth/token' \ +curl --location 'https://[tenant].api.identitynow.com/oauth/token' \ --header 'scope: sp:scope:all' \ --form 'grant_type="client_credentials"' \ --form 'client_id="{clientId}"' \ @@ -251,11 +251,11 @@ sequenceDiagram participant I as Identity Security Cloud U->>W: Click login link - W->>I: Authorization request to https://{tenant}.login.sailpoint.com/oauth/authorize + W->>I: Authorization request to https://[tenant].login.sailpoint.com/oauth/authorize I->>U: Redirect to login prompt U->>I: Authentication I->>W: Authorization code granted - W->>I: Authorization code to https://{tenant}.api.identitynow.com/oauth/token + W->>I: Authorization code to https://[tenant].api.identitynow.com/oauth/token I->>W: JWT access token granted ``` @@ -268,7 +268,7 @@ This is the overall authorization flow: 2. The web app sends an authorization request to ISC in this form: ```Text -GET https://{tenant}.login.sailpoint.com/oauth/authorize?client_id={client-id}&response_type=code&redirect_uri={redirect-url} +GET https://[tenant].login.sailpoint.com/oauth/authorize?client_id={client-id}&response_type=code&redirect_uri={redirect-url} ``` 3. ISC redirects the user to a login prompt to authenticate to Identity Security Cloud. @@ -280,12 +280,12 @@ GET https://{tenant}.login.sailpoint.com/oauth/authorize?client_id={client-id}&r 6. The web app submits an OAuth 2.0 token request to ISC in this form: ```text -POST https://{tenant}.api.identitynow.com/oauth/token?grant_type=authorization_code&client_id={client-id}&code={code}&redirect_uri={redirect-url} +POST https://[tenant].api.identitynow.com/oauth/token?grant_type=authorization_code&client_id={client-id}&code={code}&redirect_uri={redirect-url} ``` :::info -The token endpoint URL is `{tenant}.api.identitynow.com`, and the authorize URL is `{tenant}.login.sailpoint.com`. Please be sure to use the correct URL when you're setting up your webapp to use this flow. You can read more about [finding your tenant OAuth details here](https://developer.sailpoint.com/docs/api/authentication/#find-your-tenants-oauth-details). +The token endpoint URL is `[tenant].api.identitynow.com`, and the authorize URL is `[tenant].login.sailpoint.com`. Please be sure to use the correct URL when you're setting up your webapp to use this flow. You can read more about [finding your tenant OAuth details here](https://developer.sailpoint.com/docs/api/authentication/#find-your-tenants-oauth-details). ::: @@ -296,7 +296,7 @@ These are the query parameters in the OAuth 2.0 token request for the authorizat | Key | Description | | --- | --- | | `grant_type` | Set this to `authorization_code` for the authorization code grant type. | -| `client_id` | This is the client ID for the API client (e.g. `b61429f5-203d-494c-94c3-04f54e17bc5c`). This can be generated at `https://{tenant}.identitynow.com/ui/admin/#admin:global:security:apimanagementpanel` | +| `client_id` | This is the client ID for the API client (e.g. `b61429f5-203d-494c-94c3-04f54e17bc5c`). This can be generated at `https://[tenant].identitynow.com/ui/admin/#admin:global:security:apimanagementpanel` | | `code` | This is a code returned by `/oauth/authorize`. | | `redirect_uri` | This is the application URL to redirect to once the token has been granted. | @@ -317,7 +317,7 @@ For more information about the OAuth authorization code grant flow, refer [here] Clients use this grant type in order to exchange a refresh token for a new `access_token` once the existing `access_token` has expired. This allows clients to continue to have a valid `access_token` without the need for the user to login as frequently. -The OAuth 2.0 client you are using must have `REFRESH_TOKEN` as one of its grant types, and you would typically use this type in conjunction with another grant type, like `CLIENT_CREDENTIALS` or `AUTHORIZATION_CODE`: +The OAuth 2.0 client you are using must have `REFRESH_TOKEN` and `AUTHORIZATION_CODE` as its grant types: ```json { @@ -337,12 +337,12 @@ The OAuth 2.0 client you are using must have `REFRESH_TOKEN` as one of its grant This is the overall authorization flow: -1. The client application receives an `access_token` and a `refresh_token` from one of the other OAuth grant flows, like `AUTHORIZATION_CODE`. +1. The client application receives an `access_token` and a `refresh_token` when using the `AUTHORIZATION_CODE` grant flow. 2. The client application detects that the `access_token` is about to expire, based on the `expires_in` attribute contained within the JWT token. 3. The client submits an OAuth 2.0 token request to ISC in this form: ```text -POST https://{tenant}.api.identitynow.com/oauth/token?grant_type=refresh_token&client_id={client_id}&client_secret={client_secret}&refresh_token={refresh_token} +POST https://[tenant].api.identitynow.com/oauth/token?grant_type=refresh_token&client_id={client_id}&client_secret={client_secret}&refresh_token={refresh_token} ``` 4. ISC validates the token request and submits a response. If the request is successful, the response contains a new `access_token` and `refresh_token`. @@ -352,8 +352,8 @@ These are the query parameters in the OAuth 2.0 token request for the refresh to | Key | Description | | --- | --- | | `grant_type` | Set to `refresh_token` for the authorization code grant type. | -| `client_id` | This is the client ID for the API client (e.g. `b61429f5-203d-494c-94c3-04f54e17bc5c`). This can be generated at `https://{tenant}.identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`. | -| `client_secret` | This is the client secret for the API client (e.g. `c924417c85b19eda40e171935503d8e9747ca60ddb9b48ba4c6bb5a7145fb6c5`). This can be generated at `https://{tenant}.identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`. | +| `client_id` | This is the client ID for the API client (e.g. `b61429f5-203d-494c-94c3-04f54e17bc5c`). This can be generated at `https://[tenant].identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`. | +| `client_secret` | This is the client secret for the API client (e.g. `c924417c85b19eda40e171935503d8e9747ca60ddb9b48ba4c6bb5a7145fb6c5`). This can be generated at `https://[tenant].identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`. | | `refresh_token` | This is the `refresh_token` that was provided along with the now expired `access_token`. | Here is an example call OAuth 2.0 Token Request for the Refresh Token grant. @@ -370,7 +370,7 @@ For more information about the OAuth refresh token grant flow, refer [here](http ### OAuth token response -A successful request using any of the grant flows to `https://{tenant}.api.identitynow.com/oauth/token` will contain a response body like this: +A successful request using any of the grant flows to `https://[tenant].api.identitynow.com/oauth/token` will contain a response body like this: ```json { @@ -397,7 +397,7 @@ You can use the JWT `access_token` to authorize REST API calls through the ISC A ```bash curl -X GET \ - 'https://{tenant}.api.identitynow.com/v3/account-activities' \ + 'https://[tenant].api.identitynow.com/v3/account-activities' \ -H 'Authorization: Bearer {access_token}' \ -H 'cache-control: no-cache' ``` @@ -521,13 +521,13 @@ Having issues? Follow these steps: ### Verify API endpoint calls 1. Verify the structure of the API call: -2. Verify that the API calls are going through the API gateway: `https://{tenant}.api.identitynow.com` +2. Verify that the API calls are going through the API gateway: `https://[tenant].api.identitynow.com` 3. Verify you are calling their version correctly: - - Private APIs: `https://{tenant}.api.identitynow.com/cc/api/{endpoint}` - - V2 APIs: `https://{tenant}.api.identitynow.com/v2/{endpoint}` - - V3 APIs: `https://{tenant}.api.identitynow.com/v3/{endpoint}` - - Beta APIs: `https://{tenant}.api.identitynow.com/beta/{endpoint}` + - Private APIs: `https://[tenant].api.identitynow.com/cc/api/{endpoint}` + - V2 APIs: `https://[tenant].api.identitynow.com/v2/{endpoint}` + - V3 APIs: `https://[tenant].api.identitynow.com/v3/{endpoint}` + - Beta APIs: `https://[tenant].api.identitynow.com/beta/{endpoint}` 4. Verify that the API calls have the correct headers (e.g., `content-type`), query parameters, and body data. 5. If the HTTP response is **401 Unauthorized** , this is an indication either that there is no `Authorization` header or that the `access_token` is invalid. Verify that the API calls are providing the `access_token` in the `Authorization` header correctly (ex. `Authorization: Bearer {access_token}`) and that the `access_token` has not expired. @@ -559,7 +559,7 @@ or GET /beta/oauth-clients/ ``` -You can also view all of the active clients in the UI by going to `https://{tenant}.identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`. +You can also view all of the active clients in the UI by going to `https://[tenant].identitynow.com/ui/admin/#admin:global:security:apimanagementpanel`. 3. Verify that the OAuth 2.0 client grant types match the OAuth 2.0 grant type flow you're trying to use. For example, this client will work with [Authorization Code](#authorization-code-grant-flow) and [Client Credentials](#client-Credentials-grant-flow) grant flows, but not [Refresh Token](#refresh-token-grant-flow) flows: @@ -583,4 +583,4 @@ You can also view all of the active clients in the UI by going to `https://{tena ### Verify OAuth calls -Verify that the OAuth call flow is going to the right URLs, with the correct query parameters and data values. A common source of errors is using the wrong host for authorization and token API calls. The token endpoint URL is `{tenant}.api.identitynow.com`, while the authorize URL is `{tenant}.identitynow.com`. +Verify that the OAuth call flow is going to the right URLs, with the correct query parameters and data values. A common source of errors is using the wrong host for authorization and token API calls. The token endpoint URL is `[tenant].api.identitynow.com`, while the authorize URL is `[tenant].identitynow.com`. diff --git a/docs/api/authorization.md b/docs/api/authorization.md index eefc5774e..84f157d23 100644 --- a/docs/api/authorization.md +++ b/docs/api/authorization.md @@ -43,13 +43,9 @@ sequenceDiagram When managing a user's access to the API, you must first assign the target user an appropriate [user level](https://documentation.sailpoint.com/saas/help/common/users/user_level_matrix.html). It is important to choose the correct user level as it will place a boundary on which APIs a user can call, which also affects the areas and functions of the UI they have access to. For example, if a user is in charge of creating reports for auditing requirements, consider granting them the "Report Admin" user level. -User levels are typically granted through the UI, [following the procedures from this document](https://documentation.sailpoint.com/saas/help/accounts/identities.html#setting-user-level-permissions). -:::caution +User levels are typically granted through the UI, [following the procedures from this document](https://documentation.sailpoint.com/saas/help/accounts/identities.html#setting-user-level-permissions). You can also set user levels via API using the [auth user update](https://developer.sailpoint.com/docs/api/v3/patch-auth-user) endpoint. -There is an [API that can set an identity's user level](https://developer.sailpoint.com/discuss/t/assign-identitynow-admin-roles-via-api/1874/4), but it is a V1 API with no guaranteed support. Use it at your own risk! - -::: User levels act as the first line of defense by applying a rigid boundary around the APIs that a user can call. The next section introduces scopes, which allow users to apply granular controls on the APIs an access token can call. @@ -100,7 +96,7 @@ When you create a PAT in the UI, you can apply scopes to the token. More informa You can [create PATs](https://developer.sailpoint.com/docs/api/v3/create-personal-access-token) programmatically with the API. The request body for the endpoint allows the caller to specify a list of scopes to be applied to the PAT. If the `scope` property is omitted from the request body, then `sp:scopes:all` is granted to the credentials. The following example shows how to generate a PAT with the `idn:access-request:manage` and `idn:nelm:manage` scopes. -POST +POST `https://{tenant}.api.identitynow.com/v3/personal-access-tokens` Request Body diff --git a/docs/api/getting-started.md b/docs/api/getting-started.md index 0f1dffe2c..f9ac44ab9 100644 --- a/docs/api/getting-started.md +++ b/docs/api/getting-started.md @@ -69,7 +69,7 @@ There is a rate limit of 100 requests per `access_token` per 10 seconds for V3 A **Headers**: -- **Retry-After**: {seconds to wait before rate limit resets} +- **Retry-After**: [seconds to wait before rate limit resets] ## API Tools diff --git a/docs/api/nerm/pagination-metadata-filtering.md b/docs/api/nerm/pagination-metadata-filtering.md index d2fc8673d..6cff5dba3 100644 --- a/docs/api/nerm/pagination-metadata-filtering.md +++ b/docs/api/nerm/pagination-metadata-filtering.md @@ -179,7 +179,7 @@ This rule searches for profiles based on an attribute that profile has. | object_type | string **required** | The values must equal 'NeAttribute' | | condition_object_id | string **required** | this is the id of the attribute you are searching against | | comparison_operator | string **required** | This is how the comparison is made for the attribute values.

Available basic operators: Available date operators: | -| value | string **required** | This is the value used for comparison.

Value formatting: | +| value | string **required** | This is the value used for comparison.

Value formatting: | | \_destroy | boolean | Supplying this option with "true" will cause the condition to be destroyed | Example: diff --git a/docs/api/postman-collections.md b/docs/api/postman-collections.md index 4e51e4f3c..6f5eb9e41 100644 --- a/docs/api/postman-collections.md +++ b/docs/api/postman-collections.md @@ -51,7 +51,7 @@ To send API requests in Postman, you must authenticate to the APIs. To authentic :::caution -Don't specify your baseUrl in your environment variables. When you fork an API collection, the baseUrl is automatically set as . Setting your baseURl in your environment variables may interfere with this process. +Don't specify your baseUrl in your environment variables. When you fork an API collection, the baseUrl is automatically set as `https://{{tenant}}.api.{{domain}}.com`. Setting your baseURl in your environment variables may interfere with this process. ::: diff --git a/docs/api/rate-limit.md b/docs/api/rate-limit.md index 327d50989..ec2769cc5 100644 --- a/docs/api/rate-limit.md +++ b/docs/api/rate-limit.md @@ -18,4 +18,4 @@ There is a rate limit of 100 requests per `access_token` per 10 seconds for V3 A **Headers**: -- **Retry-After**: {seconds to wait before rate limit resets} +- **Retry-After**: [seconds to wait before rate limit resets] diff --git a/docs/api/standard-collection-parameters.md b/docs/api/standard-collection-parameters.md index 20eb3b267..70ecab956 100644 --- a/docs/api/standard-collection-parameters.md +++ b/docs/api/standard-collection-parameters.md @@ -5,9 +5,9 @@ pagination_label: Standard Collection Parameters sidebar_label: Standard Collection Parameters sidebar_position: 5 sidebar_class_name: standardCollectionParameters -keywords: ['standard collection parameters'] +keywords: ['standard collection parameters','filter','pagination','paginate','sort'] description: ISC API pagination, filtering, and sorting. -tags: ['Standard Collection Parameters'] +tags: ['Standard Collection Parameters','Filter','Sort','Pagination'] --- Many endpoints in the Identity Security Cloud API support a generic syntax for paginating, filtering and sorting the results. A collection endpoint has the following characteristics: @@ -50,7 +50,7 @@ The `searchAfter` capability provides the ability to page on sorted field values Here is an example of a search API call with `searchAfter` paging. The first query will get the first set of results. The default limit for search is 10,000, which is different from other collection endpoints. For this example, the query is set to page 100 records at a time. Paginating search queries also requires the `sort` property to be set to `id`. -**POST** +**POST** `https://{tenant}.api.identitynow.com/v3/search?limit=100&count=true` ```json { @@ -64,7 +64,7 @@ Here is an example of a search API call with `searchAfter` paging. The first que This query will return 100 records. To get the next 100 records, find the last record's `id` and use it in the next query's `searchAfter` property. -**POST** +**POST** `https://{tenant}.api.identitynow.com/v3/search?limit=100&count=true` ```json { @@ -108,11 +108,11 @@ These filter operators apply directly to fields and their values: | `ca` | True if the collection-valued field contains all the listed values. | groups ca ("Venezia","Firenze") | | `co` | True if the value of the field contains the specified value as a substring.(Applicable to string-valued fields only.) | name co "Rajesh" | | `eq` | True if the value of the field indicated by the first operand is equal to the value specified by the second operand. | identitySummary.id eq "2c9180846e85e4b8016eafeba20c1314" | -| `ge` | True if the value of the field indicated by the first operand is greater or equal to the value specified by the second operand. | daysUntilEscalation ge 7 name ge "Genaro" | -| `gt` | True if the value of the field indicated by the first operand is greater than the value specified by the second operand. | daysUntilEscalation gt 7 name gt "Genaro" created gt 2018-12-18T23:05:55Z | +| `ge` | True if the value of the field indicated by the first operand is greater or equal to the value specified by the second operand. | daysUntilEscalation ge 7



name ge "Genaro" | +| `gt` | True if the value of the field indicated by the first operand is greater than the value specified by the second operand. | daysUntilEscalation gt 7



name gt "Genaro"



created gt 2018-12-18T23:05:55Z | | `in` | True if the field value is in the list of values. | accountActivityItemId in ("2c9180846b0a0583016b299f210c1314","2c9180846b0a0581016b299e82560c1314") | -| `le` | True if the value of the field indicated by the first operand is less or equal to the value specified by the second operand. | daysUntilEscalation le 7 name le "Genaro" | -| `lt` | True if the value of the field indicated by the first operand is less than the value specified by the second operand. | daysUntilEscalation lt 7 name lt "Genaro" created lt 2018-12-18T23:05:55Z | +| `le` | True if the value of the field indicated by the first operand is less or equal to the value specified by the second operand. | daysUntilEscalation le 7



name le "Genaro" | +| `lt` | True if the value of the field indicated by the first operand is less than the value specified by the second operand. | daysUntilEscalation lt 7



name lt "Genaro"



created lt 2018-12-18T23:05:55Z | | `ne` | True if the value of the field indicated by the first operand is not equal to the value specified by the second operand. | type ne "ROLE" | | `pr` | True if the field is present, that is, not null. | pr accountRequestInfo | | `isnull` | True if the field is null. | lastUsed isnull | diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-create.md b/docs/connectivity/saas-connectivity/connector-commands/account-create.md index 477522c15..32a84dfd5 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-create.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-create.md @@ -59,6 +59,8 @@ tags: ['Connectivity', 'Connector Command'] The account create command triggers whenever ISC is told to provision entitlements for an identity on the target source, but no account for the identity on the target source exists yet. For example, if you create an access profile that grants a group on the target source and then add that access profile to a role, any identity matching that role’s membership criteria will be granted to the group. ISC determines which identities do not have accounts on the target source and triggers the account create command for each identity. If an identity already has an account, then it invokes the account update command. +To use this command, you must specify this value in the `commands` array: `std:account:create` + ## The Provisioning Plan The account create command accepts a provisioning plan from ISC and creates the corresponding account(s) in the target source. When you configure your source in ISC, you must set up ‘Create Profile’ to tell ISC how to provision new accounts for your source. diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-delete.md b/docs/connectivity/saas-connectivity/connector-commands/account-delete.md index 2ce42fedf..575047250 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-delete.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-delete.md @@ -40,6 +40,8 @@ The account delete command sends one attribute from ISC, the identity to delete. Enable account delete in ISC through a BeforeProvisioning rule. The connector honors whichever operation the provisioning plan sends. For more information, see the [documentation](https://community.sailpoint.com/t5/Identity Security Cloud-Articles/Identity Security Cloud-Rule-Guide/ta-p/76665) and an [example implementation](https://community.sailpoint.com/t5/Identity Security Cloud-Wiki/Identity Security Cloud-Rule-Guide-Before-Provisioning-Rule/ta-p/77415). +To use this command, you must specify this value in the `commands` array: `std:account:delete` + The following snippet shows an example of account delete command implementation: [index.ts](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/src/index.ts) diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-disable.md b/docs/connectivity/saas-connectivity/connector-commands/account-disable.md index 105371100..336dd04f7 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-disable.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-disable.md @@ -56,6 +56,8 @@ Disabling accounts is generally preferred if the source supports account disabli > 🚧 It is important to note that although SaaS Connectivity supports the account delete command, ISC never sends the account delete command, only the account disable command. The connector’s developer determines the appropriate action for account disable on the source. +To use this command, you must specify this value in the `commands` array: `std:account:disable` + Account disable is similar to implementing the account update command. If you have implemented your source call to modify any of the values on your source, then you can use the same method to implement the command. The following code implements disable: ```javascript diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-discover.md b/docs/connectivity/saas-connectivity/connector-commands/account-discover.md index f83efc723..6dcc33a18 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-discover.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-discover.md @@ -53,6 +53,8 @@ tags: ['Connectivity', 'Connector Command'] The account discover schema command tells ISC to dynamically create the account schema for the source rather than use the account schema provided by the connector in connector-spec.json. It is often ideal to statically define the account schema because it is generally more performant and easier to develop and reason about the code. However, some sources have schemas that can be different for each customer deployment. It can also be difficult to determine which account attributes to statically expose, which requires the schema to be dynamically generated. SalesForce is an example of a source that can have thousands of account attributes, which makes it impractical to statically define a set of attributes that satisfies all connector users. Although the SalesForce connector defines a standard set of account attributes out of the box, it also allows schema discovery for users looking for more attributes. +To use this command, you must specify this value in the `commands` array: `std:account:discover-schema` + ## Implementation If your connector requires dynamic schema discovery, you must add std:account:discover-schema to the list of commands in connector-spec.json. Because the account schema is dynamic, you do not need to specify an accountSchema or an accountCreateTemplate object in connector-spec.json. Your connector-spec.json file will look similar to this example from the [Airtable connector](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/connector-spec.json). diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-enable.md b/docs/connectivity/saas-connectivity/connector-commands/account-enable.md index 2f5c9e7a6..1ab547055 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-enable.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-enable.md @@ -52,6 +52,8 @@ tags: ['Connectivity', 'Connector Command'] You typically invoke the `account enable` command during the joiner, mover, leaver (JML) lifecycle. An identity’s rejoining the organization or move to a role that grants access to a previously disabled account triggers the account enable command. +To use this command, you must specify this value in the `commands` array: `std:account:enable` + Implementing `account enable` is similar to implementing the `account update` command. If you have implemented your source call to modify any of the values on your source, then you can use the same method to implement the command. The following code implements enable: ```javascript diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-list.md b/docs/connectivity/saas-connectivity/connector-commands/account-list.md index 9362a721d..70e528c82 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-list.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-list.md @@ -49,6 +49,8 @@ tags: ['Connectivity', 'Connector Command'] The account list command aggregates all accounts from the target source into Identity Security Cloud. ISC calls this command during a manual or scheduled account aggregation. +To use this command, you must specify this value in the `commands` array: `std:account:list` + ![Account List](./img/account_list_idn.png) ## Implementation diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-read.md b/docs/connectivity/saas-connectivity/connector-commands/account-read.md index 21d3e0a2e..cbc484a3a 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-read.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-read.md @@ -52,6 +52,8 @@ tags: ['Connectivity', 'Connector Command'] The account read command aggregates a single account from the target source into Identity Security Cloud. ISC can call this command during a “one-off” account refresh, which you can trigger by aggregating an individual account in ISC. +To use this command, you must specify this value in the `commands` array: `std:account:read` + ![Account Read](./img/account_read_idn.png) ## Implementation diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-unlock.md b/docs/connectivity/saas-connectivity/connector-commands/account-unlock.md index e110ed10f..d5ea79f34 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-unlock.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-unlock.md @@ -52,6 +52,8 @@ tags: ['Connectivity', 'Connector Command'] The account lock and account unlock commands provide ways to temporarily prevent access to an account. ISC only supports the unlock command, so accounts must be locked on the source level, but they can be unlocked through ISC, and ISC can store the account's status. +To use this command, you must specify this value in the `commands` array: `std:account:unlock` + Implementing account unlock is similar to the other commands that update attributes on an account. The following code unlocks an account: ```javascript diff --git a/docs/connectivity/saas-connectivity/connector-commands/account-update.md b/docs/connectivity/saas-connectivity/connector-commands/account-update.md index 5c9f8dfd5..202cae19e 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/account-update.md +++ b/docs/connectivity/saas-connectivity/connector-commands/account-update.md @@ -61,6 +61,8 @@ tags: ['Connectivity', 'Connector Command'] The account update command triggers whenever ISC is told to modify an identity's attributes or entitlements on the target source. For example, granting an identity a new entitlement through a role, changing an identity’s lifecycle state, or modifying an identity attribute tied to an account attribute all trigger the account update command. +To use this command, you must specify this value in the `commands` array: `std:account:update` + ## Input Schema The payload from ISC contains the ID of the identity to modify, the configuration items the connector needs to call the source API, and one or more change operations to apply to the identity. Each operation has the following special considerations: diff --git a/docs/connectivity/saas-connectivity/connector-commands/change-password.md b/docs/connectivity/saas-connectivity/connector-commands/change-password.md index 36028109a..2664497df 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/change-password.md +++ b/docs/connectivity/saas-connectivity/connector-commands/change-password.md @@ -37,6 +37,8 @@ tags: ['Connectivity', 'Connector Command'] The change password command is triggered in ISC when a user changes their password through ISC. When this occurs, if your source has change password enabled, then you can change the user password on the source system through ISC. +To use this command, you must specify this value in the `commands` array: `std:change-password` + ## The Provisioning Plan The change password command sends the password change event to your connector whenever a user changes their password through the Password Manager. Handling this even is as simple as implementing a method on the source system that updates a users password diff --git a/docs/connectivity/saas-connectivity/connector-commands/entitlement-list.md b/docs/connectivity/saas-connectivity/connector-commands/entitlement-list.md index 931e542e3..4c11a53bd 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/entitlement-list.md +++ b/docs/connectivity/saas-connectivity/connector-commands/entitlement-list.md @@ -44,6 +44,8 @@ tags: ['Connectivity', 'Connector Command'] The entitlement list command triggers during a manual or scheduled entitlement aggregation operation within ISC. This operation gathers a list of all entitlements available on the target source, usually multi-valued entitlements like groups or roles. This operation provides ISC administrators with a list of entitlements available on the source so they can create access profiles and roles accordingly, and it provides ISC with more details about the entitlements. The entitlement schema’s minimum requirements are name and ID, but you can add other values, such as created date, updated date, status, etc. +To use this command, you must specify this value in the `commands` array: `std:entitlement:list` + ![Discover Schema 4](./img/entitlement_list_idn.png) ## Defining the Schema diff --git a/docs/connectivity/saas-connectivity/connector-commands/entitlement-read.md b/docs/connectivity/saas-connectivity/connector-commands/entitlement-read.md index 5481797f4..a42bbe969 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/entitlement-read.md +++ b/docs/connectivity/saas-connectivity/connector-commands/entitlement-read.md @@ -15,6 +15,8 @@ At this time Entitlement Read is not triggered from ISC for any specific workflo ::: +To use this command, you must specify this value in the `commands` array: `std:entitlement:list` + | Input/Output | Data Type | | :----------- | :----------------------: | | Input | StdEntitlementReadInput | diff --git a/docs/connectivity/saas-connectivity/connector-commands/source-data-discover.md b/docs/connectivity/saas-connectivity/connector-commands/source-data-discover.md index 14bc2e672..dd4f6318a 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/source-data-discover.md +++ b/docs/connectivity/saas-connectivity/connector-commands/source-data-discover.md @@ -48,6 +48,8 @@ Use the source data discover command to identify the types of data your source c One typical use for the source data discover command is found in Identity Security Cloud customer forms for dropdown menus: they use the command to identify the additional source types their sources can provide to Identity Security Cloud and use that information to populate the dropdown menus. +To use this command, you must specify this value in the `commands` array: `std:source-data:discover` + This is a simple example of the source data discover command. It has been implemented to list two types of queries that the Airtable source can supply. ```javascript diff --git a/docs/connectivity/saas-connectivity/connector-commands/source-data-read.md b/docs/connectivity/saas-connectivity/connector-commands/source-data-read.md index fb4f86148..e601a3452 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/source-data-read.md +++ b/docs/connectivity/saas-connectivity/connector-commands/source-data-read.md @@ -47,6 +47,8 @@ tags: ['Connectivity', 'Connector Command'] Use the source data read command to query a source in Identity Security Cloud and return a set of data. This data is typically used to populate a dropdown menu for selection purposes. This functionality is typically useful for Identity Security Cloud forms, but it can be used for any type of implementation that requires you to get other information from a source, information that is not normally retrieved from identites or entitlements. +To use this command, you must specify this value in the `commands` array: `std:source-data:read` + This is a simple example of the source data read command. It is implemented to retrieve the base ID name. The `sourceDataKey` is required, the `source data read` command should return it. ```javascript diff --git a/docs/connectivity/saas-connectivity/connector-commands/test-connection.md b/docs/connectivity/saas-connectivity/connector-commands/test-connection.md index 94ed0e6f2..416b9b417 100644 --- a/docs/connectivity/saas-connectivity/connector-commands/test-connection.md +++ b/docs/connectivity/saas-connectivity/connector-commands/test-connection.md @@ -25,6 +25,8 @@ tags: ['Connectivity', 'Connector Command'] The test connection command ensures the connector can communicate with the target web service. It validates API credentials, host names, ports, and other configuration items. To implement this command, look for either a health endpoint or a simple GET endpoint. Some web services implement a health endpoint that returns status information about the service, which can be useful to test a connection. If no health endpoint exists, use a simple GET endpoint that takes few to no parameters to ensure the connector can make a successful call to the web service. +To use this command, you must specify this value in the `commands` array: `std:test-connection` + Use ‘Test Connection’ in the ISC UI after an admin has finished entering configuration information for a new instance of the connector. ![Test Connection](./img/test_command_idn.png) diff --git a/docs/extensibility/configuration-management/saas-configuration.mdx b/docs/extensibility/configuration-management/saas-configuration.mdx index f0451b0b7..a1d357b11 100644 --- a/docs/extensibility/configuration-management/saas-configuration.mdx +++ b/docs/extensibility/configuration-management/saas-configuration.mdx @@ -13,7 +13,10 @@ tags: ['SaaS Configuration'] import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -This is a guide about using the SailPoint SaaS Configuration APIs to import configurations into and export configurations from the SailPoint SaaS system. Use these APIs to get configurations in bulk in support of environmental promotion, go-live, or tenant-to-tenant configuration management processes and pipelines. +You can use the SailPoint SaaS Configuration APIs to export snapshots of your tenant configurations and import them to restore those configurations in other SaaS systems, such as new or existing tenants. +Use these APIs to get configurations in bulk in support of environmental promotion, go-live, or tenant-to-tenant configuration management processes and pipelines. + +Read this document to learn about the different SaaS Configuration APIs and what you can do with them. For more details around how to manage configurations, refer to [SailPoint SaaS Change Management and Deployment Best Practices](https://community.sailpoint.com/t5/IdentityNow-Articles/SailPoint-SaaS-Change-Management-and-Deployment-Best-Practices/ta-p/189871). @@ -23,6 +26,16 @@ This document is intended for technically proficient administrators, implementer ## Supported Objects +A SailPoint tenant configuration comprises various objects and their details, such as an organization's different identity profiles, roles, certification campaigns, and more. +You can use the SaaS Configuration APIs to exclude objects from the imports and exports. + +This table lists the objects supported for import and export with the SaaS Configuration APIs: + +:::note +This table also lists the objects supported for backup and deploy, the terms used in Configuration Hub for export and import functionality. +To learn more about Configuration Hub, refer to [Configuration Hub](https://documentation.sailpoint.com/saas/help/confighub/config_hub.html). +::: + | **Object** | **Object Type** | **Export** | **Import** | **Backup** | **Deploy** | | :-- | :-- | :-- | :-- | :-- | :-- | | Access Profiles | `ACCESS_PROFILE` | ✅ | ❌ | ✅ | ✅ | diff --git a/docs/extensibility/event-triggers/available/access-request-decision.md b/docs/extensibility/event-triggers/available/access-request-decision.md index f098dc7e7..901ac153b 100644 --- a/docs/extensibility/event-triggers/available/access-request-decision.md +++ b/docs/extensibility/event-triggers/available/access-request-decision.md @@ -77,6 +77,11 @@ This is an example input from this trigger: } } ``` +:::info + +`clientMetadata` is determined by the user that invoked `create-access-request` and can contain any value at runtime that was specified in the access request. + +::: ## Additional Information and Links diff --git a/docs/extensibility/event-triggers/available/access-request-dynamic-approval.md b/docs/extensibility/event-triggers/available/access-request-dynamic-approval.md index ddeebc5ab..1fd2ee55f 100644 --- a/docs/extensibility/event-triggers/available/access-request-dynamic-approval.md +++ b/docs/extensibility/event-triggers/available/access-request-dynamic-approval.md @@ -30,6 +30,8 @@ You can use this trigger to develop logic outside of Identity Security Cloud’s - A security officer - A high-risk governance group for highly sensitive roles +If there is an active subscription to the [Access Request Submitted trigger](./access-request-submitted.md), this trigger is invoked **after** a response is submitted to the Access Request Submitted trigger, and only if that response is to approve the access request. + ## Configuration This is a `REQUEST_RESPONSE` trigger type. For more information about how to respond to a `REQUEST_RESPONSE` type trigger, see [responding to a request response type trigger](../responding-to-a-request-response-trigger.mdx) . This trigger intercepts newly submitted access requests and allows the subscribing service to add one additional identity or governance group as the last step in the approver list for the access request. diff --git a/docs/extensibility/event-triggers/available/access-request-submitted.md b/docs/extensibility/event-triggers/available/access-request-submitted.md index 3888885c9..fc73881c0 100644 --- a/docs/extensibility/event-triggers/available/access-request-submitted.md +++ b/docs/extensibility/event-triggers/available/access-request-submitted.md @@ -21,7 +21,7 @@ tags: ['Event Triggers', 'Available Event Triggers', 'Request Response'] ## Event Context -The platform now includes event triggers within the access request approval workflow. The 'Access Request Submitted' event trigger provides more proactive governance, ensures users can quickly obtain needed access, and helps with more preventative measures towards unintended access. +The platform now includes event triggers within the access request approval workflow. The 'Access Request Submitted' event trigger provides more proactive governance, ensures users can quickly obtain needed access, and helps with more preventative measures towards unintended access. When an access request is submitted, this trigger is invoked before the [Access Request Dynamic Approval trigger](./access-request-dynamic-approval.md). ![Flow](./img/access-request-preapproval-path.png) @@ -96,10 +96,20 @@ To deny an access request, the subscribing service responds to the event trigger } ``` -This event trigger interrupts the normal workflow for access requests. Access requests can only proceed if the subscribing service responds within the alotted time by approving the request. If the subscribing service is non-responsive or it is responding with an incorrect payload, access requests will fail after the **Separation of Duties** check. If you see numerous access requests failing at this stage, verify that your subscribing service itself is operating correctly. +:::warning +The `approver` does not have to be the name of an existing identity in your ISC tenant. It can be anything you want it to be. However, if you have an active subscription to the [Access Request Decision](./access-request-decision.md) trigger, you **MUST** provide the **username** of an existing identity in your tenant in the `approver` field. If you do not provide the **username** of an existing identity, then your Access Request Decision subscriptions will never be triggered. +::: + +:::warning +This event trigger interrupts the normal workflow for access requests. Access requests can only proceed if the subscribing service responds within the alotted time by approving the request. If the subscribing service is non-responsive or it is responding with an incorrect payload, access requests will fail after the **Separation of Duties** check. ![AR failed](./img/access-request-preapproval-failure.png) +If you see numerous access requests failing at this stage, verify that your subscribing service is operating correctly. +::: + + + ## Additional Information and Links - **Trigger Type**: [REQUEST_RESPONSE](../trigger-types.md#request-response) diff --git a/docs/extensibility/event-triggers/available/account-aggregation-completed.md b/docs/extensibility/event-triggers/available/account-aggregation-completed.md index 6e0de65a9..1451fbca7 100644 --- a/docs/extensibility/event-triggers/available/account-aggregation-completed.md +++ b/docs/extensibility/event-triggers/available/account-aggregation-completed.md @@ -20,7 +20,6 @@ The platform has introduced an event trigger within the Source Aggregation workf After the initial collection of accounts in the source system during aggregation completes, some uses cases for this trigger include the following: - Notify an administrator that Identity Security Cloud was able to successfully connect to the source system and collect source accounts. -- Notify an administrator when the aggregation is terminated manually during the account collection phase. - Notify an administrator or system (e.g. PagerDuty) that Identity Security Cloud failed to collect accounts during aggregation and indicate required remediation for the source system. :::info @@ -69,13 +68,10 @@ In this example, there are 10 changed accounts (`scanned` (200) - `unchanged` - > This event trigger fires even without changed accounts. The unchanged count will match the scanned accounts in the response. -The status of the aggregation can be one of three possible values: +The status of the aggregation can be one of two possible values: - **Success**: Account collection was successful and aggregation can move to the next step. - **Error**: There is a failure in account collection or an issue connecting to the source. The `errors` vary by source. -- **Termination**: The aggregation was terminated during the account collection phase. Aggregation can be terminated when the account deletion threshold is exceeded. For example, an account delete threshold of 10% is set by default for the source, and if the number of `removed` accounts for the above example is 21 (more than 10% of `scanned` accounts (200)), the aggregation is cancelled. - -![Account_Delete_Threshold](./img/aggregation-delete-threshold.png) ## Additional Information and Links diff --git a/docs/extensibility/event-triggers/available/identity-attribute-changed.md b/docs/extensibility/event-triggers/available/identity-attribute-changed.md index 02f30b340..c91036beb 100644 --- a/docs/extensibility/event-triggers/available/identity-attribute-changed.md +++ b/docs/extensibility/event-triggers/available/identity-attribute-changed.md @@ -18,6 +18,13 @@ Identity Attribute Changed events occur when any attributes aggegrated from an a This event trigger provides a flexible way to extend Joiner-Mover-Leaver processes. This provides more proactive governance and ensures users can quickly get necessary access when they enter your organization. +:::info + +This event trigger doesn't detect an identity's change in lifecycle state from 'null' to 'active', so it's recommended that you set an identity's lifecycle state when it's created. You can then use the [Identity Created](./identity-created.md) trigger to detect that change to 'active' for Joiners. + +::: + + Some uses cases for this trigger include the following: - Notify an administrator or system to take the appropriate provisioning actions as part of the Mover workflow. diff --git a/docs/extensibility/event-triggers/available/img/aggregation-diagram.png b/docs/extensibility/event-triggers/available/img/aggregation-diagram.png index ca1ddaac8..8296d3bd4 100644 Binary files a/docs/extensibility/event-triggers/available/img/aggregation-diagram.png and b/docs/extensibility/event-triggers/available/img/aggregation-diagram.png differ diff --git a/docs/extensibility/event-triggers/filtering-events.md b/docs/extensibility/event-triggers/filtering-events.md index a5ddee82d..5eb16ddeb 100644 --- a/docs/extensibility/event-triggers/filtering-events.md +++ b/docs/extensibility/event-triggers/filtering-events.md @@ -61,8 +61,8 @@ Operators provide more options to filter JSON structures. | != | **Not equal to** - Evaluates to `true` if operands do not match. | $[?($.identity.name != "george.washington")] | | > | **Greater than** - Evaluates to `true` if the left operand is greater than the right operand. It works on strings and numbers. | $[?($.attributes.created > '2020-04-27T16:48:33.200Z')] | | >= | **Greater than or equal to** - Evaluates to `true` if the left operand is greater than or equal to the right operand. | $[?($.attributes.created >= '2020-04-27T16:48:33.597Z')] | -| < | **Less than** - Evaluates to `true` if the left operand is less than the right operand. | $[?($.attributes.created < '2020-04-27T16:48:33.200Z')] | -| <= | **Less than or equal to** - Evaluates to `true` if the left operand is less than or equal to the right operand. | $[?($.attributes.created <= '2020-04-27T16:48:33.200Z')] | +| \< | **Less than** - Evaluates to `true` if the left operand is less than the right operand. | $[?($.attributes.created < '2020-04-27T16:48:33.200Z')] | +| \<= | **Less than or equal to** - Evaluates to `true` if the left operand is less than or equal to the right operand. | $[?($.attributes.created \<= '2020-04-27T16:48:33.200Z')] | | =~ | **Regular expression** - Evaluates to `true` if the left operand matches the regular expression. | $.changes[?(@.attribute == "department" && @.newValue =~ /US.*Support/i)] | | in | **In** - Evaluates to `true` if the left operand exists in the list of values on the right. | $.changes[?(@.attribute == 'department' && @.newValue in ['sales','engineering'])] | | nin | **Not in** - Evaluates to `true` if the left operand **does not** exist in the list of values on the right. | $.changes[?(@.attribute == 'department' && @.newValue nin ['sales','engineering'])] | @@ -79,7 +79,7 @@ Operators provide more options to filter JSON structures. Developing a filter can be faster when you use a tool like an online [JSONpath editor](https://www.javainuse.com/jsonpath). These tools can provide quick feedback on your filter, allowing you to focus on the exact filter expression you want before testing it on a trigger. Just paste an example of your event trigger input and start crafting an expression to see its result. -:::Warning +:::warning Third party websites like the one mentioned earlier must be treated with caution. Do not use real data from your tenant when you're interacting with these tools. ::: @@ -182,7 +182,7 @@ POST https://{tenant}.api.identitynow.com/beta/trigger-subscriptions/validate-fi If SailPoint accepts your trigger filter, you must test whether it actually works. You must configure your trigger subscription to point to the URL of your testing service. [webhook.site](https://webhook.site) is an easy to use testing service. Just copy the unique URL it generates and paste it into your subscription's integration URL field. The easiest way to test a trigger subscription is to use the UI to fire off a test event. -:::Warning +:::warning Third party websites like the one mentioned earlier must be treated with caution. Do not use real data from your tenant when you're interacting with these tools. ::: diff --git a/docs/extensibility/rules/cloud-rules/account_profile_attribute_generator_from_template.md b/docs/extensibility/rules/cloud-rules/account_profile_attribute_generator_from_template.md index 641d2194f..cad98724a 100644 --- a/docs/extensibility/rules/cloud-rules/account_profile_attribute_generator_from_template.md +++ b/docs/extensibility/rules/cloud-rules/account_profile_attribute_generator_from_template.md @@ -5,7 +5,7 @@ pagination_label: Account Profile Attribute Generator (from Template) sidebar_label: Account Profile Attribute Generator (from Template) sidebar_class_name: accountProfileAttributeGeneratorTemplate keywords: ['cloud', 'rules', 'account profile', 'attribute generator'] -description: This rule generates complex account attribute values during provisioning, e.g. when creating an account. The rule's configuration comes from a template of values. +description: This rule generates complex account attribute values during provisioning, e.g. when creating an account. slug: /extensibility/rules/cloud-rules/account-profile-attribute-generator-template tags: ['Rules'] --- diff --git a/docs/extensibility/rules/cloud-rules/build_map_rule.md b/docs/extensibility/rules/cloud-rules/build_map_rule.md index 0dae8082d..e337ab82c 100644 --- a/docs/extensibility/rules/cloud-rules/build_map_rule.md +++ b/docs/extensibility/rules/cloud-rules/build_map_rule.md @@ -5,7 +5,7 @@ pagination_label: BuildMap Rule sidebar_label: BuildMap Rule sidebar_class_name: buildMapRule keywords: ['cloud', 'rules'] -description: This rule manipulates raw input data provided by the rows and columns in a file and builds a map from the incoming data. +description: This rule manipulates raw input data provided by the rows and columns in a file. slug: /extensibility/rules/cloud-rules/buildmap-rule tags: ['Rules'] --- diff --git a/docs/extensibility/rules/cloud-rules/index.md b/docs/extensibility/rules/cloud-rules/index.md index 79e3e1466..0843e5ed6 100644 --- a/docs/extensibility/rules/cloud-rules/index.md +++ b/docs/extensibility/rules/cloud-rules/index.md @@ -34,7 +34,7 @@ In this process, SailPoint does _not check_ whether the rule executes correctly ## Submit for Rule Review -To submit your Cloud Rule for review, approval, and inclusion in the SailPoint platform, submit a [SailPoint support portal request](https://support.sailpoint.com/csm) or send an email to . Attach the rule, validator output, tenant name (e.g., acme-sb.identitynow.com for sandbox or acme.identitynow.com for production) and approval for expert services to proceed. If you need assistance writing and testing rules, Expert Services can assist in that process as well. Make sure your contact information is up to date so the review team can contact you if they need to. +To submit your Cloud Rule for review, approval, and inclusion in the SailPoint platform, submit a [SailPoint support portal request](https://support.sailpoint.com/csm) or send an email to `support@sailpoint.com`. Attach the rule, validator output, tenant name (e.g., acme-sb.identitynow.com for sandbox or acme.identitynow.com for production) and approval for expert services to proceed. If you need assistance writing and testing rules, Expert Services can assist in that process as well. Make sure your contact information is up to date so the review team can contact you if they need to. ## Review Guidelines diff --git a/docs/extensibility/rules/connector-rules/index.md b/docs/extensibility/rules/connector-rules/index.md index 45634da07..70b50e617 100644 --- a/docs/extensibility/rules/connector-rules/index.md +++ b/docs/extensibility/rules/connector-rules/index.md @@ -40,10 +40,10 @@ Connector Rules are directly editable with the [Connector Rule REST APIs](https: | Name | Path | | --- | --- | | [List Connector Rules](/docs/api/beta/get-connector-rule-list) | `GET /beta/connector-rules/` | -| [Get Connector Rule](/docs/api/beta/get-connector-rule) | `GET /beta/connector-rules/{id}` | +| [Get Connector Rule](/docs/api/beta/get-connector-rule) | `GET /beta/connector-rules/[id]` | | [Create Connector Rule](/docs/api/beta/create-connector-rule) | `POST /beta/connector-rules/` | -| [Update Connector Rule](/docs/api/beta/update-connector-rule) | `PUT /beta/connector-rules/{id}` | -| [Delete Connector Rule](/docs/api/beta/delete-connector-rule) | `DELETE /beta/connector-rules/{id}` | +| [Update Connector Rule](/docs/api/beta/update-connector-rule) | `PUT /beta/connector-rules/[id]` | +| [Delete Connector Rule](/docs/api/beta/delete-connector-rule) | `DELETE /beta/connector-rules/[id]` | | [Validate Connector Rule](/docs/api/beta/validate-connector-rule) | `POST /beta/connector-rules/validate` | SailPoint architectural optimizations have added resiliency and protections against malformed or long-running rules. These APIs also offer built-in protection and checking against potentially harmful code. For more information, see [Rule Code Restrictions](../../rules/index.md#rule-code-restrictions). @@ -99,7 +99,7 @@ For the `PATCH` operations, you must provide an `op` key. For new configurations ### BeforeProvisioning Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -119,7 +119,7 @@ Content-Type: `application/json-patch+json` ### AfterCreate, AfterModify, AfterDelete, BeforeCreate, BeforeModify, BeforeDelete Rules -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -141,7 +141,7 @@ The value key is a list. All available AfterCreate, AfterModify, BeforeCreate, a ### Correlation Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -161,7 +161,7 @@ Content-Type: `application/json-patch+json` ### ManagerCorrelation Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -181,7 +181,7 @@ Content-Type: `application/json-patch+json` ### BuildMap Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -197,7 +197,7 @@ Content-Type: `application/json-patch+json` ### JDBCBuildMap Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -213,7 +213,7 @@ Content-Type: `application/json-patch+json` ### JDBCProvision Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -229,7 +229,7 @@ Content-Type: `application/json-patch+json` ### SAP HR Provisioning Modify Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -245,7 +245,7 @@ Content-Type: `application/json-patch+json` ### WebServiceBeforeOperation Rule -`PATCH` /v3/sources/{id} +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` @@ -263,7 +263,7 @@ _Note: Replace `_`with the index location of operation the way it is configured ### WebServiceAfterOperation Rule -`PATCH` /v3/sources/{id} Content-Type: `application/json-patch+json` +`PATCH` /v3/sources/[id] Content-Type: `application/json-patch+json` _Note: Replace \[\*\] with the index location of the operation the way it is configured on the source. For example, 0, 1, 2, etc. You can use a `GET` call on the source first to verify the index location prior to executing the `PATCH` call to attach the rule._ diff --git a/docs/extensibility/rules/connector-rules/web_services_after_operation_rule.md b/docs/extensibility/rules/connector-rules/web_services_after_operation_rule.md index f40c05dc1..cb0c98207 100644 --- a/docs/extensibility/rules/connector-rules/web_services_after_operation_rule.md +++ b/docs/extensibility/rules/connector-rules/web_services_after_operation_rule.md @@ -26,7 +26,7 @@ This rule calculates attributes after a web-service operation call. | Argument | Type | Purpose | | --- | --- | --- | | application | sailpoint.object.Application | Application whose data file is being processed. | -| processedResponseObject | List> | List of map (account/group). The map contains a key, the identityAttribute of the application schema, and a value, all the account/group attributes (schema) passed by the connector after parsing the respective API response. | +| processedResponseObject | List\\> | List of map (account/group). The map contains a key, the identityAttribute of the application schema, and a value, all the account/group attributes (schema) passed by the connector after parsing the respective API response. | | requestEndPoint | sailpoint.connector.webservices.EndPoint | Current request information. It contains the header, body, context url, method type, response attribute map, successful response code. | | restClient | sailpoint.connector.webservices.WebServicesClient | WebServicesClient (HttpClient) object that enables the user to call the Web Services API target system. | | rawResponseObject | String | String object that holds the raw response returned from the target system, which can be in JSON or XML form. | diff --git a/docs/extensibility/rules/guides/your_first_rule.md b/docs/extensibility/rules/guides/your_first_rule.md index 04e8d62a8..ebb7c3e25 100644 --- a/docs/extensibility/rules/guides/your_first_rule.md +++ b/docs/extensibility/rules/guides/your_first_rule.md @@ -483,11 +483,11 @@ ________________________________________________________________________________ ## Submit for Rule Review -To submit your Cloud Rule for review, approval, and inclusion in the SailPoint platform, submit a [SailPoint support portal request](https://support.sailpoint.com/csm) or send an email to . Attach the rule, validator output, tenant name (e.g., acme-sb.identitynow.com for sandbox or acme.identitynow.com for production) and approval for expert services to proceed. If you need assistance writing and testing rules, Expert Services can assist in that process as well. Make sure your contact information is up to date so the review team can contact you if they need to. +To submit your Cloud Rule for review, approval, and inclusion in the SailPoint platform, submit a [SailPoint support portal request](https://support.sailpoint.com/csm) or send an email to `support@sailpoint.com`. Attach the rule, validator output, tenant name (e.g., acme-sb.identitynow.com for sandbox or acme.identitynow.com for production) and approval for expert services to proceed. If you need assistance writing and testing rules, Expert Services can assist in that process as well. Make sure your contact information is up to date so the review team can contact you if they need to. ## Add Rule To Account Creation -Log into your ISC tenant and navigate to **Admin** -> **Connections** -> **Sources** -> **{Source Name}** -> **Accounts** -> **Create Account**. Scroll to the attribute you wish to use the rule for generating the username. Check the generator radio button and pick your new rule from the drop down. +Log into your ISC tenant and navigate to **Admin** -\> **Connections** -\> **Sources** -\> **[Source Name]** -\> **Accounts** -\> **Create Account**. Scroll to the attribute you wish to use the rule for generating the username. Check the generator radio button and pick your new rule from the drop down. ![Account Create](./img/account-create.png) diff --git a/docs/extensibility/transforms/operations/date-compare.md b/docs/extensibility/transforms/operations/date-compare.md index 5ad89b8a0..3cf0cad10 100644 --- a/docs/extensibility/transforms/operations/date-compare.md +++ b/docs/extensibility/transforms/operations/date-compare.md @@ -54,7 +54,7 @@ The date compare transform takes as an input the two dates to compare, denoted a - **secondDate** - This is the second date to consider (i.e., the date that would be on the right hand side of the comparison operation). - **operator** - This is the comparison to perform. The following values are valid: - **LT**: Strictly less than: firstDate < secondDate - - **LTE**: Less than or equal to: firstDate <= secondDate + - **LTE**: Less than or equal to: firstDate \<= secondDate - **GT**: Strictly greater than: firstDate > secondDate - **GTE**: Greater than or equal to: firstDate >= secondDate - **positiveCondition** - This is the value to return if the comparison is true. diff --git a/docs/extensibility/transforms/operations/generate-random-string.md b/docs/extensibility/transforms/operations/generate-random-string.md index a48f201be..50daa6b5c 100644 --- a/docs/extensibility/transforms/operations/generate-random-string.md +++ b/docs/extensibility/transforms/operations/generate-random-string.md @@ -57,7 +57,7 @@ The structure of a generate random string transform requires the `name` of the r - ( - ) - \+ - - < + - \< - \> - ? - **length** - This is the required length ofthe randomly generated string. diff --git a/docs/iiq/plugin-developer-guide/appendix-a/index.md b/docs/iiq/plugin-developer-guide/appendix-a/index.md index 68493b559..5f380e6cf 100644 --- a/docs/iiq/plugin-developer-guide/appendix-a/index.md +++ b/docs/iiq/plugin-developer-guide/appendix-a/index.md @@ -40,7 +40,7 @@ The object model for plugins has also changed somewhat. This table maps the old | certificationLevel | certificationLevel | | pluginAccessRight | rightRequired | -Gone in 7.1 is the idea of a plugin configuration model, and a snippet model. Instead, these elements have been rolled into the 'PluginAttributes' map that appears in the 'manifest.xml' file required by each plugin. The 'fullPage' object is now a single entry in the attributes mapping, which only holds the title of the 'fullPage'. Snippets move into a 'List' entry key in the attributes map. For each snippet entry in the 'List', implementers can define a regular expression 'regexPattern' to match against, the 'rightRequired' to see the snippet, and then a list of and that determine the look and action of the snippet. +Gone in 7.1 is the idea of a plugin configuration model, and a snippet model. Instead, these elements have been rolled into the 'PluginAttributes' map that appears in the 'manifest.xml' file required by each plugin. The 'fullPage' object is now a single entry in the attributes mapping, which only holds the title of the 'fullPage'. Snippets move into a 'List' entry key in the attributes map. For each snippet entry in the 'List', implementers can define a regular expression 'regexPattern' to match against, the 'rightRequired' to see the snippet, and then a list of \ and \ that determine the look and action of the snippet. The most readily apparent change in plugin definition going from 7.0 to 7.1 is the location of each setting's plugins. Previously, developers could define a URL to a settings page ('settingsPageTemplateURL') that they could completely customize. In 7.1, in order to support future portability and support, the settings page has been removed, and individual plugin settings have been internalized to the 'manifest.xm'l file. These settings are now defined in a 'Settings' list in the 'PluginAttributes' map. Each element of the list is a 'Setting', which can have the following defined: diff --git a/docs/iiq/plugin-developer-guide/chapter-5/index.md b/docs/iiq/plugin-developer-guide/chapter-5/index.md index 6515051a9..57f96b663 100644 --- a/docs/iiq/plugin-developer-guide/chapter-5/index.md +++ b/docs/iiq/plugin-developer-guide/chapter-5/index.md @@ -15,7 +15,7 @@ tags: ['plugin', 'guide', 'identityiq'] Most plugins will have some additional UI component that will display in IdentityIQ. You can use images, CSS files, HTML templates, and JavaScript to provide the interactions and views required by the plugin. Plugins using a `fullPage` element will look for a file called 'page.xhtml' in the build. -:::Note +:::info Any css installed with the plugin will apply to all elements in IdentityIQ. For this reason it is recommended that developers keep their css classes specific to their plugin. diff --git a/docs/iiq/plugin-developer-guide/chapter-7/index.md b/docs/iiq/plugin-developer-guide/chapter-7/index.md index 9babfd7c0..8ed129fab 100644 --- a/docs/iiq/plugin-developer-guide/chapter-7/index.md +++ b/docs/iiq/plugin-developer-guide/chapter-7/index.md @@ -49,7 +49,7 @@ An annotation should have at least three parts - **Line 2** - The path or endpoint - this can be parameterized, which is useful for pulling back a single record. The earlier example uses parameterization by adding the variable within {} tags to the end of the URL and also declaring the @PathParam "appName" in the input arguments of the method signature. - **Line 3** - The authorization of the method. The following values are allowed: - **@AllowAll** - Allows anyone to interrogate the endpoint. - - **@RequiredRight("")** - Allows users with the named SPRight to access the endpoint. + - **@RequiredRight("\")** - Allows users with the named SPRight to access the endpoint. - **@SystemAdmin** - System administrator access only. - **@Deferred** - Authorization is deferred to the method. When this option is selected, the implementer must also create an `Authorizer` class that implements the `sailpoint.authorization.Authorize`r interface. The `Authorizer` class should override the `authorize(UserContext)` method of the base `Authorizer` interface. Inside the REST resource method, the author would then call `authorize()`. Here is a simple example: diff --git a/docs/tools/cli/search.md b/docs/tools/cli/search.md index 596554fb9..3e8a5f142 100644 --- a/docs/tools/cli/search.md +++ b/docs/tools/cli/search.md @@ -15,7 +15,7 @@ tags: ['CLI'] Learn how to use the CLI to search your ISC tenant in this guide. -In Identity Security Cloud (ISC), you can search across all the sources connected to your tenant and return virtually any information you have access to. The `search` command allows you to access ISC search functionality within the CLI. For more information about the `search` command, refer to the CLI [Search guide](docs/tools/cli/search). For more information about search in ISC, refer to [Search](docs/api/v3/search). +In Identity Security Cloud (ISC), you can search across all the sources connected to your tenant and return virtually any information you have access to. The `search` command allows you to access ISC search functionality within the CLI. For more information about the `search` command, refer to the CLI [Search guide](./search.md). For more information about search in ISC, refer to [Search](../../api/v3/search). In Identity Security Cloud, you can search all the sources connected to your tenant and return virtually any information you have access to. To learn more about search in Identity Security Cloud, refer to [Search](https://documentation.sailpoint.com/saas/help/search/index.html). diff --git a/docs/tools/community-toolbox/index.md b/docs/tools/community-toolbox/index.md index bc75bb19b..c223916f7 100644 --- a/docs/tools/community-toolbox/index.md +++ b/docs/tools/community-toolbox/index.md @@ -100,7 +100,7 @@ When you launch the Community Toolbox, it prompts you to provide your tenant inf You must provide this tenant information to be able to log in: - **Tenant**: This is your organization's tenant name. - **Domain**: This is usually 'identitynow'. -- **Base URL**: This is the API URL - it is 'https://{tenant}.{domain}.com', like 'https:acme.identitynow.com', for example. +- **Base URL**: This is the API URL - it is 'https://[tenant].[domain].com', like 'https:acme.identitynow.com', for example. - **Tenant URL**: This is the tenant URL - it is often the same as the API URL. Once you have provided your tenant information, the Community Toolbox prompts you to log in to your tenant the same way you would from the browser. You must provide a password and possibly some additional form of authentication. diff --git a/docs/tools/rule-development-kit/index.md b/docs/tools/rule-development-kit/index.md index 333f78f93..243fb1944 100644 --- a/docs/tools/rule-development-kit/index.md +++ b/docs/tools/rule-development-kit/index.md @@ -68,7 +68,7 @@ src/ - **`src/test/java/sailpoint/`** Use this folder for test classes to test your rules. -## Install depedencies +## Install dependencies Install all the required dependencies by running Maven install in the root of the project: diff --git a/docs/tools/sdk/python/getting-started.md b/docs/tools/sdk/python/getting-started.md index 303eda36c..a547b35d3 100644 --- a/docs/tools/sdk/python/getting-started.md +++ b/docs/tools/sdk/python/getting-started.md @@ -15,9 +15,9 @@ Once your SDK is installed and configured, you can start accessing the SDK's dif ## List Transforms -One of the most useful functionalities of the Python SDK is the ability to easily access all the [V3 APIs](/idn/api/v3) and [Beta APIs](/idn/api/beta) and implement them in your project. +One of the most useful functionalities of the Python SDK is the ability to easily access all the [V3 APIs](/docs/api/v3) and [Beta APIs](/docs/api/beta) and implement them in your project. -Here is an example of how to use the SDK to get a list of available [transforms](/idn/docs/transforms). This example leverages the [List Transforms endpoint](/idn/api/v3/list-transforms). +Here is an example of how to use the SDK to get a list of available [transforms](/docs/extensibility/transforms). This example leverages the [List Transforms endpoint](/docs/api/v3/list-transforms). Create a file in your project called "sdk.py" and copy this content into it: @@ -57,7 +57,7 @@ You can use this example as a guide for how to access all the V3 and Beta APIs ( With the same SDK function, you can use query parameters to limit the results of your transforms list to only the results you want. -Refer to the [List Transforms endpoint specification](/idn/api/v3/list-transforms) to view all its query parameters. +Refer to the [List Transforms endpoint specification](/docs/api/v3/list-transforms) to view all its query parameters. Here is an example that uses query parameters to limit the list to no more than 10 transforms that all start with the name "Test": diff --git a/docs/tools/sdk/python/index.mdx b/docs/tools/sdk/python/index.mdx index f5017cd2b..6a1c955f1 100644 --- a/docs/tools/sdk/python/index.mdx +++ b/docs/tools/sdk/python/index.mdx @@ -19,7 +19,7 @@ You need the following to use the Python SDK: - Python version 3.7 or above. You can download it [here](https://www.python.org/downloads/). You can use `python --version` to check your version. -- Your tenant name in Identity Security Cloud. To learn how to find it, refer to [Getting Started](/idn/api/getting-started#find-your-tenant-name). The SDK will use this tenant name to connect to your Identity Security Cloud instance. +- Your tenant name in Identity Security Cloud. To learn how to find it, refer to [Getting Started](/docs/api/getting-started.md#find-your-tenant-name). The SDK will use this tenant name to connect to your Identity Security Cloud instance. - A PAT with a client secret and ID. To learn how to create one in Identity Security Cloud, refer to [Personal Access Tokens](https://documentation.sailpoint.com/saas/help/common/api_keys.html#generating-a-personal-access-token). The SDK will use this PAT to authenticate with the SailPoint APIs. diff --git a/docs/tools/sdk/python/pagination.md b/docs/tools/sdk/python/pagination.md index 506c1f55e..ceeb5c197 100644 --- a/docs/tools/sdk/python/pagination.md +++ b/docs/tools/sdk/python/pagination.md @@ -11,7 +11,7 @@ slug: /tools/sdk/python/paginate tags: ['SDK'] --- -By default, your requests will return a maximum of 250 records. To return more, you must implement pagination. To learn more about pagination, refer to [Paginating Results](/idn/api/standard-collection-parameters/#paginating-results). +By default, your requests will return a maximum of 250 records. To return more, you must implement pagination. To learn more about pagination, refer to [Paginating Results](/docs/api/standard-collection-parameters/#paginating-results). Here is an example of how to implement pagination with the SDK on line 10: @@ -44,4 +44,4 @@ The `result_limit` specifies the total number of results you can return, 1000. T You can also provide an `offset` value to specify which record number to start the request on. For example, you can add `offset=11` to start getting accounts from the 12th record, 11, instead of the first, 0. -To find out whether an endpoint supports pagination, refer to its documentation. Any API supporting pagination lists the optional query parameters detailed in [Paginating Results](/idn/api/standard-collection-parameters/#paginating-results). +To find out whether an endpoint supports pagination, refer to its documentation. Any API supporting pagination lists the optional query parameters detailed in [Paginating Results](/docs/api/standard-collection-parameters/#paginating-results). diff --git a/docs/tools/sdk/python/search.md b/docs/tools/sdk/python/search.md index 6451b723a..2cd6a5e39 100644 --- a/docs/tools/sdk/python/search.md +++ b/docs/tools/sdk/python/search.md @@ -11,7 +11,7 @@ slug: /tools/sdk/python/search tags: ['SDK'] --- -One of the most useful functionalities you can access with the Python SDK is Identity Security Cloud's [search functionality](/idn/api/v3/search-post). +One of the most useful functionalities you can access with the Python SDK is Identity Security Cloud's [search functionality](/docs/api/v3/search-post). Here is an example of how you can implement Search, along with pagination. Copy this code into your "sdk.py" file to try it out: @@ -46,9 +46,9 @@ This example returns 1000 identities, 100 per page, and sorts them in descending There are two main ways you can manipulate this example to search for the results you want: -The first way is to change the `indices`, the document types you want to limit your search to. For example, if you add `"access profiles"` to the indices, the SDK will search access profiles too. To see all the indices you can search, refer to the [Search endpoint specification](/idn/api/v3/search-post). +The first way is to change the `indices`, the document types you want to limit your search to. For example, if you add `"access profiles"` to the indices, the SDK will search access profiles too. To see all the indices you can search, refer to the [Search endpoint specification](/docs/api/v3/search-post). The second way is to change the `query`, the value you're searching for. For example, if you change the query to "a*", the search will return all records starting with the letter "a". To learn more about how to build search queries, refer to [Building a Search Query](https://documentation.sailpoint.com/saas/help/search/building-query.html). -You can also change the sorting logic in the brackets next to `sort`. For more information about sorting results, refer to [Sorting Results](/idn/api/standard-collection-parameters/#sorting-results). +You can also change the sorting logic in the brackets next to `sort`. For more information about sorting results, refer to [Sorting Results](/docs/api/standard-collection-parameters/#sorting-results). diff --git a/docusaurus.config.js b/docusaurus.config.js index 704771810..e61e93897 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -1,8 +1,9 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion -const lightCodeTheme = require('prism-react-renderer/themes/github'); -const darkCodeTheme = require('prism-react-renderer/themes/dracula'); +const {themes} = require('prism-react-renderer'); +const lightCodeTheme = themes.github; +const darkCodeTheme = themes.dracula; const footer = require('./footer'); const navbar = require('./navbar'); @@ -37,7 +38,6 @@ const config = { showLastUpdateTime: true, sidebarCollapsible: true, sidebarPath: require.resolve('./sidebars.js'), - docLayoutComponent: '@theme/DocPage', docItemComponent: '@theme/ApiItem', // Derived from docusaurus-theme-openapi }, theme: { @@ -98,6 +98,7 @@ const config = { 'bash', 'go', 'python', + 'json' ], }, mermaid: { diff --git a/output.txt b/output.txt new file mode 100644 index 000000000..d40209041 --- /dev/null +++ b/output.txt @@ -0,0 +1,9 @@ + +> sailpoint-developer-portal@0.0.0 start +> docusaurus start --port=4200 + + + ------------------------------------------------------------------------------ Update available 3.0.1 ΓåÆ 3.4.0 To upgrade Docusaurus packages with the latest version, run the following command: `npm i @docusaurus/plugin-client-redirects@latest @docusaurus/plugin-content-docs@latest @docusaurus/plugin-google-tag-manager@latest @docusaurus/theme-mermaid@latest @docusaurus/core@latest @docusaurus/types@latest @docusaurus/module-type-aliases@latest @docusaurus/preset-classic@latest` ------------------------------------------------------------------------------ + +[INFO] Starting the development server... +[ERROR] Something is already running on port 4200. diff --git a/package-lock.json b/package-lock.json index 34c8f6ddc..c78f9e05b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,41 +8,43 @@ "name": "sailpoint-developer-portal", "version": "0.0.0", "dependencies": { - "@docusaurus/plugin-client-redirects": "2.4.3", - "@docusaurus/plugin-content-docs": "^2.4.3", - "@docusaurus/plugin-google-tag-manager": "^2.4.3", - "@docusaurus/theme-mermaid": "2.4.3", + "@docusaurus/plugin-client-redirects": "3.4.0", + "@docusaurus/plugin-google-tag-manager": "3.4.0", + "@docusaurus/theme-mermaid": "3.4.0", "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/pro-duotone-svg-icons": "^6.5.1", "@fortawesome/pro-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@mdx-js/react": "^1.6.22", + "@gracefullight/docusaurus-plugin-microsoft-clarity": "^1.0.0", + "@mdx-js/react": "^3.0.0", "@typeform/embed-react": "^1.21.0", "autoprefixer": "^10.4.13", "classnames": "^2.3.2", - "clsx": "^1.1.1", - "docusaurus-plugin-openapi-docs": "^2.0.2", - "docusaurus-theme-openapi-docs": "^2.0.2", + "clsx": "^2.0.0", + "docusaurus-plugin-openapi-docs": "^3.0.1", + "docusaurus-theme-openapi-docs": "^3.0.1", "docusaurus2-dotenv": "^1.4.0", "esbuild-loader": "^2.20.0", "ldrs": "^1.0.1", - "prism-react-renderer": "^1.3.1", + "prism-react-renderer": "^2.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-live": "^4.0.0", "react-markdown": "^8.0.7", "react-spinners": "^0.13.8", "react-tabs": "^4.3.0" }, "devDependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/module-type-aliases": "2.4.3", - "@docusaurus/preset-classic": "2.4.3", + "@docusaurus/core": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/preset-classic": "3.4.0", + "@docusaurus/types": "3.4.0", "husky": "^8.0.2", "prettier": "2.8.0", "pretty-quick": "^3.1.3" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" } }, "node_modules/@algolia/autocomplete-core": { @@ -91,82 +93,82 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", - "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", + "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0" + "@algolia/cache-common": "4.24.0" } }, "node_modules/@algolia/cache-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", - "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", + "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", "dev": true }, "node_modules/@algolia/cache-in-memory": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", - "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", + "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0" + "@algolia/cache-common": "4.24.0" } }, "node_modules/@algolia/client-account": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", - "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", + "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-analytics": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", - "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", + "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", - "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-personalization": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", - "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", + "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-search": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", - "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/events": { @@ -176,53 +178,72 @@ "dev": true }, "node_modules/@algolia/logger-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", - "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", + "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", "dev": true }, "node_modules/@algolia/logger-console": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", - "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", + "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", "dev": true, "dependencies": { - "@algolia/logger-common": "4.20.0" + "@algolia/logger-common": "4.24.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", + "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", - "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0" + "@algolia/requester-common": "4.24.0" } }, "node_modules/@algolia/requester-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", - "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", + "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", "dev": true }, "node_modules/@algolia/requester-node-http": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", - "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0" + "@algolia/requester-common": "4.24.0" } }, "node_modules/@algolia/transporter": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", - "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", + "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/requester-common": "4.20.0" + "@algolia/cache-common": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/requester-common": "4.24.0" } }, "node_modules/@ampproject/remapping": { @@ -238,15 +259,13 @@ } }, "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-10.1.0.tgz", - "integrity": "sha512-3e+viyMuXdrcK8v5pvP+SDoAQ77FH6OyRmuK48SZKmdHJRFm87RsSs8qm6kP39a/pOPURByJw+OXzQIqcfmKtA==", + "version": "11.6.4", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.6.4.tgz", + "integrity": "sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==", "dependencies": { "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.11", - "@types/lodash.clonedeep": "^4.5.7", - "js-yaml": "^4.1.0", - "lodash.clonedeep": "^4.5.0" + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" }, "engines": { "node": ">= 16" @@ -587,9 +606,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "engines": { "node": ">=6.9.0" } @@ -842,20 +861,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -1678,11 +1683,11 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", - "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz", + "integrity": "sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2203,20 +2208,20 @@ } }, "node_modules/@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", "dev": true }, "node_modules/@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "dev": true, "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", + "@docsearch/css": "3.6.0", "algoliasearch": "^4.19.1" }, "peerDependencies": { @@ -2241,950 +2246,664 @@ } }, "node_modules/@docusaurus/core": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.3.tgz", - "integrity": "sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz", + "integrity": "sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w==", "dependencies": { - "@babel/core": "^7.18.6", - "@babel/generator": "^7.18.7", + "@babel/core": "^7.23.3", + "@babel/generator": "^7.23.3", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.18.6", - "@babel/preset-env": "^7.18.6", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@babel/runtime": "^7.18.6", - "@babel/runtime-corejs3": "^7.18.6", - "@babel/traverse": "^7.18.8", - "@docusaurus/cssnano-preset": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "@slorber/static-site-generator-webpack-plugin": "^4.0.7", - "@svgr/webpack": "^6.2.1", - "autoprefixer": "^10.4.7", - "babel-loader": "^8.2.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@babel/runtime-corejs3": "^7.22.6", + "@babel/traverse": "^7.22.8", + "@docusaurus/cssnano-preset": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "autoprefixer": "^10.4.14", + "babel-loader": "^9.1.3", "babel-plugin-dynamic-import-node": "^2.3.3", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", - "clean-css": "^5.3.0", - "cli-table3": "^0.6.2", + "clean-css": "^5.3.2", + "cli-table3": "^0.6.3", "combine-promises": "^1.1.0", "commander": "^5.1.0", "copy-webpack-plugin": "^11.0.0", - "core-js": "^3.23.3", - "css-loader": "^6.7.1", - "css-minimizer-webpack-plugin": "^4.0.0", - "cssnano": "^5.1.12", + "core-js": "^3.31.1", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", "del": "^6.1.1", - "detect-port": "^1.3.0", + "detect-port": "^1.5.1", "escape-html": "^1.0.3", - "eta": "^2.0.0", + "eta": "^2.2.0", + "eval": "^0.1.8", "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "html-minifier-terser": "^6.1.0", - "html-tags": "^3.2.0", - "html-webpack-plugin": "^5.5.0", - "import-fresh": "^3.3.0", + "fs-extra": "^11.1.1", + "html-minifier-terser": "^7.2.0", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.5.3", "leven": "^3.1.0", "lodash": "^4.17.21", - "mini-css-extract-plugin": "^2.6.1", - "postcss": "^8.4.14", - "postcss-loader": "^7.0.0", + "mini-css-extract-plugin": "^2.7.6", + "p-map": "^4.0.0", + "postcss": "^8.4.26", + "postcss-loader": "^7.3.3", "prompts": "^2.4.2", "react-dev-utils": "^12.0.1", "react-helmet-async": "^1.3.0", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", - "react-router": "^5.3.3", + "react-router": "^5.3.4", "react-router-config": "^5.1.1", - "react-router-dom": "^5.3.3", + "react-router-dom": "^5.3.4", "rtl-detect": "^1.0.4", - "semver": "^7.3.7", - "serve-handler": "^6.1.3", + "semver": "^7.5.4", + "serve-handler": "^6.1.5", "shelljs": "^0.8.5", - "terser-webpack-plugin": "^5.3.3", - "tslib": "^2.4.0", - "update-notifier": "^5.1.0", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", "url-loader": "^4.1.1", - "wait-on": "^6.0.1", - "webpack": "^5.73.0", - "webpack-bundle-analyzer": "^4.5.0", - "webpack-dev-server": "^4.9.3", - "webpack-merge": "^5.8.0", + "webpack": "^5.88.1", + "webpack-bundle-analyzer": "^4.9.0", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0", "webpackbar": "^5.0.2" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@docusaurus/core/node_modules/@docusaurus/mdx-loader": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", - "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", + "node_modules/@docusaurus/core/node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "dependencies": { - "@babel/parser": "^7.18.8", - "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.2.0", - "stringify-object": "^3.3.0", - "tslib": "^2.4.0", - "unified": "^9.2.2", - "unist-util-visit": "^2.0.3", - "url-loader": "^4.1.1", - "webpack": "^5.73.0" + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=16.14" + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/@docusaurus/core/node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@docusaurus/core/node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "dependencies": { + "@types/react": "*" }, "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" + "react": "*" } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz", - "integrity": "sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz", + "integrity": "sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ==", "dependencies": { - "cssnano-preset-advanced": "^5.3.8", - "postcss": "^8.4.14", - "postcss-sort-media-queries": "^4.2.1", - "tslib": "^2.4.0" + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.4.38", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" } }, "node_modules/@docusaurus/logger": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.3.tgz", - "integrity": "sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.4.0.tgz", + "integrity": "sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q==", "dependencies": { "chalk": "^4.1.2", - "tslib": "^2.4.0" + "tslib": "^2.6.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz", + "integrity": "sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw==", + "dependencies": { + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^1.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/mdx-loader/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@docusaurus/mdx-loader/node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz", - "integrity": "sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz", + "integrity": "sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw==", "dependencies": { - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/types": "2.4.3", + "@docusaurus/types": "3.4.0", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", "react-helmet-async": "*", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { "react": "*", "react-dom": "*" } }, - "node_modules/@docusaurus/module-type-aliases/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", + "node_modules/@docusaurus/module-type-aliases/node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-client-redirects": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.4.3.tgz", - "integrity": "sha512-iCwc/zH8X6eNtLYdyUJFY6+GbsbRgMgvAC/TmSmCYTmwnoN5Y1Bc5OwUkdtoch0XKizotJMRAmGIAhP8sAetdQ==", - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "eta": "^2.0.0", - "fs-extra": "^10.1.0", - "lodash": "^4.17.21", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-content-docs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz", - "integrity": "sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==", - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/module-type-aliases": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "@types/react-router-config": "^5.0.6", - "combine-promises": "^1.1.0", - "fs-extra": "^10.1.0", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21", - "tslib": "^2.4.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/mdx-loader": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", - "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", - "dependencies": { - "@babel/parser": "^7.18.8", - "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.2.0", - "stringify-object": "^3.3.0", - "tslib": "^2.4.0", - "unified": "^9.2.2", - "unist-util-visit": "^2.0.3", - "url-loader": "^4.1.1", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz", - "integrity": "sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==", - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/plugin-google-tag-manager/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz", - "integrity": "sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/plugin-content-blog": "2.4.3", - "@docusaurus/plugin-content-docs": "2.4.3", - "@docusaurus/plugin-content-pages": "2.4.3", - "@docusaurus/plugin-debug": "2.4.3", - "@docusaurus/plugin-google-analytics": "2.4.3", - "@docusaurus/plugin-google-gtag": "2.4.3", - "@docusaurus/plugin-google-tag-manager": "2.4.3", - "@docusaurus/plugin-sitemap": "2.4.3", - "@docusaurus/theme-classic": "2.4.3", - "@docusaurus/theme-common": "2.4.3", - "@docusaurus/theme-search-algolia": "2.4.3", - "@docusaurus/types": "2.4.3" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-content-blog": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz", - "integrity": "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "cheerio": "^1.0.0-rc.12", - "feed": "^4.2.2", - "fs-extra": "^10.1.0", - "lodash": "^4.17.21", - "reading-time": "^1.5.0", - "tslib": "^2.4.0", - "unist-util-visit": "^2.0.3", - "utility-types": "^3.10.0", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/mdx-loader": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", - "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.18.8", - "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.2.0", - "stringify-object": "^3.3.0", - "tslib": "^2.4.0", - "unified": "^9.2.2", - "unist-util-visit": "^2.0.3", - "url-loader": "^4.1.1", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-content-pages": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz", - "integrity": "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "fs-extra": "^10.1.0", - "tslib": "^2.4.0", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/mdx-loader": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", - "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.18.8", - "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.2.0", - "stringify-object": "^3.3.0", - "tslib": "^2.4.0", - "unified": "^9.2.2", - "unist-util-visit": "^2.0.3", - "url-loader": "^4.1.1", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-debug": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz", - "integrity": "sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "fs-extra": "^10.1.0", - "react-json-view": "^1.21.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-debug/node_modules/react-json-view": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", - "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", - "dev": true, - "dependencies": { - "flux": "^4.0.1", - "react-base16-styling": "^0.6.0", - "react-lifecycles-compat": "^3.0.4", - "react-textarea-autosize": "^8.3.2" - }, - "peerDependencies": { - "react": "^17.0.0 || ^16.3.0 || ^15.5.4", - "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-debug/node_modules/react-json-view/node_modules/flux": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", - "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", - "dev": true, - "dependencies": { - "fbemitter": "^3.0.0", - "fbjs": "^3.0.1" - }, - "peerDependencies": { - "react": "^15.0.2 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-google-analytics": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz", - "integrity": "sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-google-gtag": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz", - "integrity": "sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-sitemap": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz", - "integrity": "sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "fs-extra": "^10.1.0", - "sitemap": "^7.1.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/theme-classic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz", - "integrity": "sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==", - "dev": true, - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/module-type-aliases": "2.4.3", - "@docusaurus/plugin-content-blog": "2.4.3", - "@docusaurus/plugin-content-docs": "2.4.3", - "@docusaurus/plugin-content-pages": "2.4.3", - "@docusaurus/theme-common": "2.4.3", - "@docusaurus/theme-translations": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "@mdx-js/react": "^1.6.22", - "clsx": "^1.2.1", - "copy-text-to-clipboard": "^3.0.1", - "infima": "0.2.0-alpha.43", - "lodash": "^4.17.21", - "nprogress": "^0.2.0", - "postcss": "^8.4.14", - "prism-react-renderer": "^1.3.5", - "prismjs": "^1.28.0", - "react-router-dom": "^5.3.3", - "rtlcss": "^3.5.0", - "tslib": "^2.4.0", - "utility-types": "^3.10.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/mdx-loader": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", - "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.18.8", - "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.2.0", - "stringify-object": "^3.3.0", - "tslib": "^2.4.0", - "unified": "^9.2.2", - "unist-util-visit": "^2.0.3", - "url-loader": "^4.1.1", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/theme-search-algolia": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz", - "integrity": "sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==", - "dev": true, - "dependencies": { - "@docsearch/react": "^3.1.1", - "@docusaurus/core": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/plugin-content-docs": "2.4.3", - "@docusaurus/theme-common": "2.4.3", - "@docusaurus/theme-translations": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "algoliasearch": "^4.13.1", - "algoliasearch-helper": "^3.10.0", - "clsx": "^1.2.1", - "eta": "^2.0.0", - "fs-extra": "^10.1.0", - "lodash": "^4.17.21", - "tslib": "^2.4.0", - "utility-types": "^3.10.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", - "dev": true, - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/react-loadable": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "dependencies": { - "@types/react": "*", - "prop-types": "^15.6.2" + "@types/react": "*" }, "peerDependencies": { "react": "*" } }, - "node_modules/@docusaurus/theme-common": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.3.tgz", - "integrity": "sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==", + "node_modules/@docusaurus/plugin-client-redirects": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.4.0.tgz", + "integrity": "sha512-Pr8kyh/+OsmYCvdZhc60jy/FnrY6flD2TEAhl4rJxeVFxnvvRgEhoaIVX8q9MuJmaQoh6frPk94pjs7/6YgBDQ==", "dependencies": { - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/module-type-aliases": "2.4.3", - "@docusaurus/plugin-content-blog": "2.4.3", - "@docusaurus/plugin-content-docs": "2.4.3", - "@docusaurus/plugin-content-pages": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router-config": "*", - "clsx": "^1.2.1", - "parse-numeric-range": "^1.3.0", - "prism-react-renderer": "^1.3.5", - "tslib": "^2.4.0", - "use-sync-external-store": "^1.2.0", + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz", + "integrity": "sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw==", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz", + "integrity": "sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg==", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz", + "integrity": "sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg==", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz", + "integrity": "sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg==", + "dev": true, + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^1.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz", + "integrity": "sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA==", + "dev": true, + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz", + "integrity": "sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA==", + "dev": true, + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@types/gtag.js": "^0.0.12", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz", + "integrity": "sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ==", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz", + "integrity": "sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q==", + "dev": true, + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz", + "integrity": "sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg==", + "dev": true, + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/plugin-content-blog": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/plugin-content-pages": "3.4.0", + "@docusaurus/plugin-debug": "3.4.0", + "@docusaurus/plugin-google-analytics": "3.4.0", + "@docusaurus/plugin-google-gtag": "3.4.0", + "@docusaurus/plugin-google-tag-manager": "3.4.0", + "@docusaurus/plugin-sitemap": "3.4.0", + "@docusaurus/theme-classic": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/theme-search-algolia": "3.4.0", + "@docusaurus/types": "3.4.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz", + "integrity": "sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q==", + "dev": true, + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/plugin-content-blog": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/plugin-content-pages": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/theme-translations": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "copy-text-to-clipboard": "^3.2.0", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.26", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@docusaurus/theme-common/node_modules/@docusaurus/mdx-loader": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", - "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", - "dependencies": { - "@babel/parser": "^7.18.8", - "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.2.0", - "stringify-object": "^3.3.0", - "tslib": "^2.4.0", - "unified": "^9.2.2", - "unist-util-visit": "^2.0.3", - "url-loader": "^4.1.1", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/theme-common/node_modules/@docusaurus/plugin-content-blog": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz", - "integrity": "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==", - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/logger": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-common": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "cheerio": "^1.0.0-rc.12", - "feed": "^4.2.2", - "fs-extra": "^10.1.0", - "lodash": "^4.17.21", - "reading-time": "^1.5.0", - "tslib": "^2.4.0", - "unist-util-visit": "^2.0.3", - "utility-types": "^3.10.0", - "webpack": "^5.73.0" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/theme-common/node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", + "node_modules/@docusaurus/theme-common": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz", + "integrity": "sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA==", "dependencies": { + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/plugin-content-blog": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/plugin-content-pages": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", "@types/history": "^4.7.11", "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/theme-common/node_modules/@docusaurus/plugin-content-pages": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz", - "integrity": "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==", - "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/mdx-loader": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "fs-extra": "^10.1.0", - "tslib": "^2.4.0", - "webpack": "^5.73.0" + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" - } - }, - "node_modules/@docusaurus/theme-common/node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" - }, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-mermaid": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-2.4.3.tgz", - "integrity": "sha512-S1tZ3xpowtFiTrpTKmvVbRHUYGOlEG5CnPzWlO4huJT1sAwLR+pD6f9DYUlPv2+9NezF3EfUrUyW9xLH0UP58w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.4.0.tgz", + "integrity": "sha512-3w5QW0HEZ2O6x2w6lU3ZvOe1gNXP2HIoKDMJBil1VmLBc9PmpAG17VmfhI/p3L2etNmOiVs5GgniUqvn8AFEGQ==", "dependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/module-type-aliases": "2.4.3", - "@docusaurus/theme-common": "2.4.3", - "@docusaurus/types": "2.4.3", - "@docusaurus/utils-validation": "2.4.3", - "@mdx-js/react": "^1.6.22", - "mermaid": "^9.2.2", - "tslib": "^2.4.0" + "@docusaurus/core": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "mermaid": "^10.4.0", + "tslib": "^2.6.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@docusaurus/theme-mermaid/node_modules/@docusaurus/types": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", - "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz", + "integrity": "sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q==", + "dev": true, "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.6.0", - "react-helmet-async": "^1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.73.0", - "webpack-merge": "^5.8.0" + "@docsearch/react": "^3.5.2", + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/theme-translations": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "algoliasearch": "^4.18.0", + "algoliasearch-helper": "^3.13.3", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "react": "^16.8.4 || ^17.0.0", - "react-dom": "^16.8.4 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-translations": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz", - "integrity": "sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz", + "integrity": "sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg==", "dev": true, "dependencies": { - "fs-extra": "^10.1.0", - "tslib": "^2.4.0" + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/utils": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.3.tgz", - "integrity": "sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz", + "integrity": "sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g==", "dependencies": { - "@docusaurus/logger": "2.4.3", - "@svgr/webpack": "^6.2.1", + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@svgr/webpack": "^8.1.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", - "fs-extra": "^10.1.0", - "github-slugger": "^1.4.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", "globby": "^11.1.0", "gray-matter": "^4.0.3", + "jiti": "^1.20.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", + "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", "shelljs": "^0.8.5", - "tslib": "^2.4.0", + "tslib": "^2.6.0", "url-loader": "^4.1.1", - "webpack": "^5.73.0" + "utility-types": "^3.10.0", + "webpack": "^5.88.1" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "peerDependencies": { "@docusaurus/types": "*" @@ -3196,14 +2915,14 @@ } }, "node_modules/@docusaurus/utils-common": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.3.tgz", - "integrity": "sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz", + "integrity": "sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ==", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.6.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "peerDependencies": { "@docusaurus/types": "*" @@ -3215,18 +2934,21 @@ } }, "node_modules/@docusaurus/utils-validation": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz", - "integrity": "sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz", + "integrity": "sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g==", "dependencies": { - "@docusaurus/logger": "2.4.3", - "@docusaurus/utils": "2.4.3", - "joi": "^17.6.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", "js-yaml": "^4.1.0", - "tslib": "^2.4.0" + "lodash": "^4.17.21", + "tslib": "^2.6.0" }, "engines": { - "node": ">=16.14" + "node": ">=18.0" } }, "node_modules/@esbuild/android-arm": { @@ -3564,6 +3286,11 @@ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==" }, + "node_modules/@faker-js/faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==" + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz", @@ -3619,6 +3346,14 @@ "react": ">=16.3" } }, + "node_modules/@gracefullight/docusaurus-plugin-microsoft-clarity": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gracefullight/docusaurus-plugin-microsoft-clarity/-/docusaurus-plugin-microsoft-clarity-1.0.0.tgz", + "integrity": "sha512-tOFMgF8GdWL4VgdkuPiT/mDYbi4GgtOpq4hVWCg4O3XfSUd7TNGSrzNXnLiOzcO64gQSrBMpB3aQwIpi4gshdw==", + "dependencies": { + "@docusaurus/utils-validation": "^3" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -3732,141 +3467,93 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "node_modules/@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", + "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", "dependencies": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/mdx/node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "node_modules/@mdx-js/mdx/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" + "@types/unist": "*" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@mdx-js/mdx/node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@mdx-js/mdx/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/@mdx-js/mdx/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@mdx-js/mdx/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "url": "https://opencollective.com/unified" } }, "node_modules/@mdx-js/mdx/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mdx-js/mdx/node_modules/unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node": ">= 8" } }, "node_modules/@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", + "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "dependencies": { + "@types/mdx": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - } - }, - "node_modules/@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/react": ">=16", + "react": ">=16" } }, "node_modules/@nodelib/fs.scandir": { @@ -3901,125 +3588,43 @@ "node": ">= 8" } }, - "node_modules/@paloaltonetworks/openapi-to-postmanv2": { - "version": "3.1.0-hotfix.1", - "resolved": "https://registry.npmjs.org/@paloaltonetworks/openapi-to-postmanv2/-/openapi-to-postmanv2-3.1.0-hotfix.1.tgz", - "integrity": "sha512-0bdaPCEyQbnUo4xpOu7EzxXXkDx4BAXqc8QSbVBlzlVB5KoTLJiKKB4c3fa4BXbK+3u/OqfLbeNCebc2EC8ngA==", + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dependencies": { - "@paloaltonetworks/postman-collection": "^4.1.0", - "ajv": "8.1.0", - "ajv-formats": "2.1.1", - "async": "3.2.1", - "commander": "2.20.3", - "js-yaml": "3.14.1", - "json-schema-merge-allof": "0.8.1", - "lodash": "4.17.21", - "oas-resolver-browser": "2.5.2", - "path-browserify": "1.0.1", - "yaml": "1.10.2" - }, - "bin": { - "openapi2postmanv2": "bin/openapi2postmanv2.js" + "graceful-fs": "4.2.10" }, "engines": { - "node": ">=8" + "node": ">=12.22.0" } }, - "node_modules/@paloaltonetworks/openapi-to-postmanv2/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/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "node_modules/@paloaltonetworks/openapi-to-postmanv2/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/@paloaltonetworks/openapi-to-postmanv2/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@paloaltonetworks/postman-code-generators": { - "version": "1.1.15-patch.2", - "resolved": "https://registry.npmjs.org/@paloaltonetworks/postman-code-generators/-/postman-code-generators-1.1.15-patch.2.tgz", - "integrity": "sha512-tRnAKtV4M8wLxcVnAx6ZCjCqbrR1xiqJNQkf1A71K8UxEP3N/+EspT82N5c0555w02oYFk21ViHuzuhm4gaGLw==", - "hasInstallScript": true, - "dependencies": { - "@paloaltonetworks/postman-collection": "^4.1.0", - "async": "^3.2.4", - "path": "^0.12.7", - "shelljs": "^0.8.5" + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/@paloaltonetworks/postman-code-generators/node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "node_modules/@paloaltonetworks/postman-collection": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@paloaltonetworks/postman-collection/-/postman-collection-4.1.1.tgz", - "integrity": "sha512-9JHHkkD8Xb4rvdKob7TDPRfqfmdG3KU0aO5gJyyjvMFbOVysam5I0d8/9HPOuJXWkUHGo3Sn+ov2Fcm2bnJ52Q==", - "dependencies": { - "file-type": "3.9.0", - "http-reasons": "0.1.0", - "iconv-lite": "0.6.3", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mime-format": "2.0.1", - "mime-types": "2.1.34", - "postman-url-encoder": "3.0.5", - "semver": "7.3.5", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@paloaltonetworks/postman-collection/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/@paloaltonetworks/postman-collection/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@paloaltonetworks/postman-collection/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/@polka/url": { "version": "1.0.0-next.23", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", @@ -4040,14 +3645,20 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@redocly/config": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.6.2.tgz", + "integrity": "sha512-c3K5u64eMnr2ootPcpEI0ioIRLE8QP8ptvLxG9MwAmb2sU8HMRfVwXDU3AZiMVY2w4Ts0mDc+Xv4HTIk8DRqFw==" + }, "node_modules/@redocly/openapi-core": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.4.1.tgz", - "integrity": "sha512-oAhnG8MKocM9LuP++NGFxdniNKWSLA7hzHPQoOK92LIP/DdvXx8pEeZ68UTNxIXhKonoUcO6s86I3L0zj143zg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.17.0.tgz", + "integrity": "sha512-XoNIuksnOGAzAcfpyJkHrMxwurXaQfglnovNE7/pTx4OEjik3OT91+tKAyRCkklVCdMtAA3YokGMZzdhjViUWA==", "dependencies": { "@redocly/ajv": "^8.11.0", - "@types/node": "^14.11.8", + "@redocly/config": "^0.6.0", "colorette": "^1.2.0", + "https-proxy-agent": "^7.0.4", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", "lodash.isequal": "^4.5.0", @@ -4108,32 +3719,32 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "engines": { - "node": ">=6" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@slorber/static-site-generator-webpack-plugin": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", - "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", "dependencies": { - "eval": "^0.1.8", - "p-map": "^4.0.0", - "webpack-sources": "^3.2.2" - }, - "engines": { - "node": ">=14" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", - "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4174,11 +3785,11 @@ } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", - "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4189,11 +3800,11 @@ } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", - "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4204,11 +3815,11 @@ } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", - "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4219,11 +3830,11 @@ } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", - "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4234,9 +3845,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", - "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", "engines": { "node": ">=12" }, @@ -4249,21 +3860,21 @@ } }, "node_modules/@svgr/babel-preset": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", - "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", - "@svgr/babel-plugin-remove-jsx-attribute": "*", - "@svgr/babel-plugin-remove-jsx-empty-expression": "*", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", - "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4274,18 +3885,18 @@ } }, "node_modules/@svgr/core": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", - "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4293,15 +3904,15 @@ } }, "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", - "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", "dependencies": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.21.3", "entities": "^4.4.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4309,37 +3920,37 @@ } }, "node_modules/@svgr/plugin-jsx": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", - "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/hast-util-to-babel-ast": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@svgr/core": "^6.0.0" + "@svgr/core": "*" } }, "node_modules/@svgr/plugin-svgo": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", - "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", "dependencies": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.8.0" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4350,21 +3961,21 @@ } }, "node_modules/@svgr/webpack": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", - "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/preset-env": "^7.19.4", + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@svgr/core": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "@svgr/plugin-svgo": "^6.5.1" + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -4372,14 +3983,14 @@ } }, "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=14.16" } }, "node_modules/@trysound/sax": { @@ -4413,6 +4024,14 @@ "react": ">=16.8.0" } }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -4447,6 +4066,24 @@ "@types/node": "*" } }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -4478,6 +4115,14 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -4500,6 +4145,12 @@ "@types/send": "*" } }, + "node_modules/@types/gtag.js": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "dev": true + }, "node_modules/@types/hast": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", @@ -4527,6 +4178,11 @@ "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", @@ -4566,19 +4222,6 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, - "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" - }, - "node_modules/@types/lodash.clonedeep": { - "version": "4.5.9", - "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz", - "integrity": "sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==", - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/mdast": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", @@ -4587,6 +4230,11 @@ "@types/unist": "^2" } }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -4604,9 +4252,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "node_modules/@types/node-forge": { "version": "1.3.10", @@ -4621,11 +4269,6 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, - "node_modules/@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, "node_modules/@types/prismjs": { "version": "1.26.3", "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", @@ -4776,6 +4419,11 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -4959,6 +4607,14 @@ "acorn": "^8" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/acorn-walk": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", @@ -4975,6 +4631,17 @@ "node": ">= 10.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -4988,9 +4655,9 @@ } }, "node_modules/ajv": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.1.0.tgz", - "integrity": "sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -5002,6 +4669,19 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -5018,32 +4698,44 @@ } } }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, "node_modules/algoliasearch": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", - "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", + "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", "dev": true, "dependencies": { - "@algolia/cache-browser-local-storage": "4.20.0", - "@algolia/cache-common": "4.20.0", - "@algolia/cache-in-memory": "4.20.0", - "@algolia/client-account": "4.20.0", - "@algolia/client-analytics": "4.20.0", - "@algolia/client-common": "4.20.0", - "@algolia/client-personalization": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/logger-console": "4.20.0", - "@algolia/requester-browser-xhr": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/requester-node-http": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-account": "4.24.0", + "@algolia/client-analytics": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-personalization": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/recommend": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.15.0.tgz", - "integrity": "sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==", + "version": "3.22.2", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.2.tgz", + "integrity": "sha512-3YQ6eo7uYOCHeQ2ZpD+OoT3aJJwMNKEnwtu8WMzm81XmBOSCwRjQditH9CeSOQ38qhHkuGw23pbq+kULkIJLcw==", "dev": true, "dependencies": { "@algolia/events": "^4.0.1" @@ -5170,12 +4862,6 @@ "node": ">=8" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -5204,10 +4890,18 @@ "util": "^0.12.5" } }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/async": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", - "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/at-least-node": { "version": "1.0.0", @@ -5218,9 +4912,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "funding": [ { "type": "opencollective", @@ -5236,9 +4930,9 @@ } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -5264,53 +4958,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "dependencies": { - "follow-redirects": "^1.14.7" - } - }, "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 8.9" + "node": ">= 14.15.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", - "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", - "dependencies": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@babel/core": "^7.11.6" - } - }, - "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -5319,23 +4982,6 @@ "object.assign": "^4.1.0" } }, - "node_modules/babel-plugin-extract-import-names": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", - "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", - "dependencies": { - "@babel/helper-plugin-utils": "7.10.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", @@ -5381,9 +5027,9 @@ } }, "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5394,12 +5040,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base16": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", - "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==", - "dev": true - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5446,12 +5086,12 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "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.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -5459,7 +5099,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -5560,11 +5200,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -5659,9 +5299,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "funding": [ { "type": "opencollective", @@ -5677,10 +5317,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -5735,37 +5375,51 @@ "node": ">= 0.8" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "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" - }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "engines": { - "node": ">=8" + "node": ">=14.16" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/call-bind": { @@ -5814,14 +5468,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -5834,9 +5480,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", + "version": "1.0.30001639", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz", + "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==", "funding": [ { "type": "opencollective", @@ -5852,15 +5498,6 @@ } ] }, - "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5876,28 +5513,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "engines": { + "node": ">=10" } }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6196,13 +5823,16 @@ } }, "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/cliui/node_modules/emoji-regex": { @@ -6224,16 +5854,19 @@ } }, "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/clone-deep": { @@ -6260,29 +5893,18 @@ "node": ">=0.10.0" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } }, "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6323,9 +5945,9 @@ } }, "node_modules/comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6339,10 +5961,10 @@ "node": ">= 6" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, "node_modules/compressible": { "version": "2.0.18", @@ -6416,20 +6038,31 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "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" + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" } }, "node_modules/connect-history-api-fallback": { @@ -6477,9 +6110,9 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -6523,32 +6156,6 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/copy-webpack-plugin/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -6578,24 +6185,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/copy-webpack-plugin/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -6644,19 +6233,37 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "layout-base": "^1.0.0" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/create-ecdh": { @@ -6698,15 +6305,6 @@ "sha.js": "^2.4.8" } }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -6747,19 +6345,36 @@ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dependencies": { + "type-fest": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", "engines": { - "node": "^10 || ^12 || >=14" + "node": "^14 || ^16 || >=18" }, "peerDependencies": { "postcss": "^8.0.9" @@ -6791,16 +6406,16 @@ } }, "node_modules/css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dependencies": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "engines": { "node": ">= 14.15.0" @@ -6833,50 +6448,6 @@ } } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -6893,15 +6464,15 @@ } }, "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/css-what": { @@ -6927,113 +6498,176 @@ } }, "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/cssnano" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-advanced": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", - "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", "dependencies": { - "autoprefixer": "^10.4.12", - "cssnano-preset-default": "^5.2.14", - "postcss-discard-unused": "^5.1.0", - "postcss-merge-idents": "^5.1.1", - "postcss-reduce-idents": "^5.2.0", - "postcss-zindex": "^5.1.0" + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dependencies": { - "css-tree": "^1.1.2" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/cytoscape": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.0.tgz", + "integrity": "sha512-l590mjTHT6/Cbxp13dGPC2Y7VXdgc+rUeF8AnF/JPzhjNevbDJfObnJgaSjlldOgBQZbue+X6IUZ7r5GAgvauQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + }, "node_modules/d3": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", @@ -7119,11 +6753,6 @@ "node": ">=12" } }, - "node_modules/d3-collection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" - }, "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", @@ -7308,6 +6937,41 @@ "node": ">=12" } }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -7402,11 +7066,6 @@ "d3-selection": "2 - 3" } }, - "node_modules/d3-voronoi": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", - "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" - }, "node_modules/d3-zoom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", @@ -7422,306 +7081,19 @@ "node": ">=12" } }, - "node_modules/dagre": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", - "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", "dependencies": { - "graphlib": "^2.1.8", - "lodash": "^4.17.15" + "d3": "^7.8.2", + "lodash-es": "^4.17.21" } }, - "node_modules/dagre-d3": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", - "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", - "dependencies": { - "d3": "^5.14", - "dagre": "^0.8.5", - "graphlib": "^2.1.8", - "lodash": "^4.17.15" - } - }, - "node_modules/dagre-d3/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/dagre-d3/node_modules/d3": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", - "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", - "dependencies": { - "d3-array": "1", - "d3-axis": "1", - "d3-brush": "1", - "d3-chord": "1", - "d3-collection": "1", - "d3-color": "1", - "d3-contour": "1", - "d3-dispatch": "1", - "d3-drag": "1", - "d3-dsv": "1", - "d3-ease": "1", - "d3-fetch": "1", - "d3-force": "1", - "d3-format": "1", - "d3-geo": "1", - "d3-hierarchy": "1", - "d3-interpolate": "1", - "d3-path": "1", - "d3-polygon": "1", - "d3-quadtree": "1", - "d3-random": "1", - "d3-scale": "2", - "d3-scale-chromatic": "1", - "d3-selection": "1", - "d3-shape": "1", - "d3-time": "1", - "d3-time-format": "2", - "d3-timer": "1", - "d3-transition": "1", - "d3-voronoi": "1", - "d3-zoom": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-array": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" - }, - "node_modules/dagre-d3/node_modules/d3-axis": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", - "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" - }, - "node_modules/dagre-d3/node_modules/d3-brush": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", - "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", - "dependencies": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-chord": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", - "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", - "dependencies": { - "d3-array": "1", - "d3-path": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, - "node_modules/dagre-d3/node_modules/d3-contour": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", - "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", - "dependencies": { - "d3-array": "^1.1.1" - } - }, - "node_modules/dagre-d3/node_modules/d3-dispatch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" - }, - "node_modules/dagre-d3/node_modules/d3-drag": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", - "dependencies": { - "d3-dispatch": "1", - "d3-selection": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-dsv": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", - "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", - "dependencies": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" - } - }, - "node_modules/dagre-d3/node_modules/d3-ease": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" - }, - "node_modules/dagre-d3/node_modules/d3-fetch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", - "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", - "dependencies": { - "d3-dsv": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-force": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", - "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", - "dependencies": { - "d3-collection": "1", - "d3-dispatch": "1", - "d3-quadtree": "1", - "d3-timer": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" - }, - "node_modules/dagre-d3/node_modules/d3-geo": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", - "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", - "dependencies": { - "d3-array": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" - }, - "node_modules/dagre-d3/node_modules/d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", - "dependencies": { - "d3-color": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "node_modules/dagre-d3/node_modules/d3-polygon": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", - "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" - }, - "node_modules/dagre-d3/node_modules/d3-quadtree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", - "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" - }, - "node_modules/dagre-d3/node_modules/d3-random": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", - "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" - }, - "node_modules/dagre-d3/node_modules/d3-scale": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", - "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", - "dependencies": { - "d3-array": "^1.2.0", - "d3-collection": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" - } - }, - "node_modules/dagre-d3/node_modules/d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", - "dependencies": { - "d3-color": "1", - "d3-interpolate": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-selection": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" - }, - "node_modules/dagre-d3/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "dependencies": { - "d3-path": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" - }, - "node_modules/dagre-d3/node_modules/d3-time-format": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", - "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", - "dependencies": { - "d3-time": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-timer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" - }, - "node_modules/dagre-d3/node_modules/d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", - "dependencies": { - "d3-color": "1", - "d3-dispatch": "1", - "d3-ease": "1", - "d3-interpolate": "1", - "d3-selection": "^1.1.0", - "d3-timer": "1" - } - }, - "node_modules/dagre-d3/node_modules/d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", - "dependencies": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "node_modules/dagre-d3/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/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debounce": { "version": "1.2.1", @@ -7744,14 +7116,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -7774,14 +7138,28 @@ } }, "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dependencies": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/deep-extend": { @@ -7853,9 +7231,12 @@ } }, "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } }, "node_modules/define-data-property": { "version": "1.1.1", @@ -7957,23 +7338,63 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/detab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", - "dependencies": { - "repeat-string": "^1.5.4" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, + "node_modules/detect-package-manager": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-3.0.2.tgz", + "integrity": "sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==", + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/detect-package-manager/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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/detect-package-manager/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detect-package-manager/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/detect-port": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", @@ -8016,6 +7437,18 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -8067,24 +7500,25 @@ } }, "node_modules/docusaurus-plugin-openapi-docs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-2.0.2.tgz", - "integrity": "sha512-gxxZd3LFhFDqlX78HqvA/suvpdbK3MDUFXolYeDnxpAXvTQrhtgEyv6ubiIqddLyGGfneMRVmGkhsKmtgMZzRg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-3.0.1.tgz", + "integrity": "sha512-6SRqwey/TXMNu2G02mbWgxrifhpjGOjDr30N+58AR0Ytgc+HXMqlPAUIvTe+e7sOBfAtBbiNlmOWv5KSYIjf3w==", "dependencies": { - "@apidevtools/json-schema-ref-parser": "^10.1.0", - "@docusaurus/plugin-content-docs": ">=2.4.1 <=2.4.3", - "@docusaurus/utils": ">=2.4.1 <=2.4.3", - "@docusaurus/utils-validation": ">=2.4.1 <=2.4.3", - "@paloaltonetworks/openapi-to-postmanv2": "3.1.0-hotfix.1", - "@paloaltonetworks/postman-collection": "^4.1.0", - "@redocly/openapi-core": "^1.0.0-beta.125", + "@apidevtools/json-schema-ref-parser": "^11.5.4", + "@docusaurus/plugin-content-docs": "^3.0.1", + "@docusaurus/utils": "^3.0.1", + "@docusaurus/utils-validation": "^3.0.1", + "@redocly/openapi-core": "^1.10.5", "chalk": "^4.1.2", "clsx": "^1.1.1", "fs-extra": "^9.0.1", "json-pointer": "^0.6.2", "json-schema-merge-allof": "^0.8.1", + "json5": "^2.2.3", "lodash": "^4.17.20", "mustache": "^4.2.0", + "openapi-to-postmanv2": "^4.21.0", + "postman-collection": "^4.4.0", "slugify": "^1.6.5", "swagger2openapi": "^7.0.8", "xml-formatter": "^2.6.1" @@ -8096,6 +7530,14 @@ "react": "^16.8.4 || ^17.0.0 || ^18.0.0" } }, + "node_modules/docusaurus-plugin-openapi-docs/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/docusaurus-plugin-openapi-docs/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -8204,24 +7646,24 @@ } }, "node_modules/docusaurus-theme-openapi-docs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-2.0.2.tgz", - "integrity": "sha512-6EUUjKeLrt1XpeCrdw1RmGlWG5zZYeT29zLlL7tJhsvUeefDtCKpenixkTzlFaPs9raCDjWiq44m8AAiGM7PSg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-3.0.1.tgz", + "integrity": "sha512-tqypV91tC3wuWj9O+4n0M/e5AgHOeMT2nvPj1tjlPkC7/dLinZvpwQStT4YDUPYSoHRseqxd7lhivFQHcmlryg==", "dependencies": { - "@docusaurus/theme-common": ">=2.4.1 <=2.4.3", + "@docusaurus/theme-common": "^3.0.1", "@hookform/error-message": "^2.0.1", - "@paloaltonetworks/postman-code-generators": "1.1.15-patch.2", - "@paloaltonetworks/postman-collection": "^4.1.0", "@reduxjs/toolkit": "^1.7.1", "clsx": "^1.1.1", "copy-text-to-clipboard": "^3.1.0", - "crypto-js": "^4.2.0", - "docusaurus-plugin-openapi-docs": "^2.0.2", + "crypto-js": "^4.1.1", + "docusaurus-plugin-openapi-docs": "^3.0.1", "docusaurus-plugin-sass": "^0.2.3", "file-saver": "^2.0.5", "lodash": "^4.17.20", "node-polyfill-webpack-plugin": "^2.0.1", - "prism-react-renderer": "^1.3.5", + "postman-code-generators": "^1.10.1", + "postman-collection": "^4.4.0", + "prism-react-renderer": "^2.3.0", "react-hook-form": "^7.43.8", "react-live": "^4.0.0", "react-magic-dropzone": "^1.0.1", @@ -8242,44 +7684,14 @@ "react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0" } }, - "node_modules/docusaurus-theme-openapi-docs/node_modules/react-live": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.5.tgz", - "integrity": "sha512-ul3Zwvqvh6KTg8j7xGCT26+c8J9vQ+LFUrZCbrrrzEExuVB/39s1GKG3NsywnL+aGAjpfnUTaVCe7KlKIvVPiw==", - "dependencies": { - "prism-react-renderer": "^2.0.6", - "sucrase": "^3.31.0", - "use-editable": "^2.3.3" - }, - "engines": { - "node": ">= 0.12.0", - "npm": ">= 2.0.0" - }, - "peerDependencies": { - "react": ">=18.0.0", - "react-dom": ">=18.0.0" - } - }, - "node_modules/docusaurus-theme-openapi-docs/node_modules/react-live/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "node_modules/docusaurus-theme-openapi-docs/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "engines": { "node": ">=6" } }, - "node_modules/docusaurus-theme-openapi-docs/node_modules/react-live/node_modules/prism-react-renderer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.0.tgz", - "integrity": "sha512-UYRg2TkVIaI6tRVHC5OJ4/BxqPUxJkJvq/odLT/ykpt1zGYXooNperUxQcCvi87LyRnR4nCh81ceOA+e7nrydg==", - "dependencies": { - "@types/prismjs": "^1.26.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.0.0" - } - }, "node_modules/docusaurus2-dotenv": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/docusaurus2-dotenv/-/docusaurus2-dotenv-1.4.0.tgz", @@ -8354,9 +7766,9 @@ } }, "node_modules/dompurify": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz", - "integrity": "sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==" + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz", + "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==" }, "node_modules/domutils": { "version": "2.8.0", @@ -8381,14 +7793,17 @@ } }, "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dependencies": { "is-obj": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dotenv": { @@ -8423,11 +7838,6 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -8439,9 +7849,14 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.595", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.595.tgz", - "integrity": "sha512-+ozvXuamBhDOKvMNUQvecxfbyICmIAwS4GpLmR0bsiSBlGnLaOcs2Cj7J8XSbW+YEaN3Xl3ffgpm+srTUWFwFQ==" + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==" + }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -8467,6 +7882,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -8476,9 +7896,9 @@ } }, "node_modules/emoticon": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", - "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", + "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -8496,6 +7916,7 @@ "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==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -8606,19 +8027,22 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } }, "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escape-html": { @@ -8688,6 +8112,101 @@ "node": ">=4.0" } }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.2.tgz", + "integrity": "sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -8786,16 +8305,16 @@ "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -8949,6 +8468,18 @@ "reusify": "^1.0.4" } }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", @@ -8960,36 +8491,6 @@ "node": ">=0.8.0" } }, - "node_modules/fbemitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", - "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", - "dev": true, - "dependencies": { - "fbjs": "^3.0.0" - } - }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", - "dev": true, - "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" - } - }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "dev": true - }, "node_modules/feed": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", @@ -9087,9 +8588,9 @@ } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9136,25 +8637,25 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -9172,9 +8673,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -9343,6 +8844,22 @@ "node": ">=6" } }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9372,16 +8889,16 @@ } }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/fs-monkey": { @@ -9454,6 +8971,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -9620,35 +9138,38 @@ } }, "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "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" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { @@ -9773,11 +9294,14 @@ } }, "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/hash-base": { @@ -9826,87 +9350,256 @@ "node": ">= 0.4" } }, - "node_modules/hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", "dependencies": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "node_modules/hast-util-from-parse5/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, + "node_modules/hast-util-from-parse5/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-parse-selector/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hast-util-raw": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", - "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "node_modules/hast-util-raw/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "@types/unist": "*" + } + }, + "node_modules/hast-util-raw/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-estree/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-estree/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-to-estree/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree/node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "dependencies": { + "inline-style-parser": "0.2.3" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hast-util-whitespace": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", @@ -9917,21 +9610,29 @@ } }, "node_modules/hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/hastscript/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -10074,9 +9775,9 @@ } }, "node_modules/html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10206,11 +9907,35 @@ "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==" }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -10328,11 +10053,11 @@ } }, "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/imurmurhash": { @@ -10416,28 +10141,6 @@ "node": ">= 10" } }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -10503,21 +10206,16 @@ } }, "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dependencies": { - "ci-info": "^2.0.0" + "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" } }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -10529,15 +10227,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -10601,15 +10290,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -10641,11 +10321,11 @@ } }, "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10702,6 +10382,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -10748,24 +10436,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -10778,9 +10448,12 @@ } }, "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "engines": { + "node": ">=12" + } }, "node_modules/isarray": { "version": "0.0.1", @@ -10908,9 +10581,9 @@ } }, "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -10974,11 +10647,11 @@ } }, "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "node_modules/khroma": { @@ -11011,14 +10684,17 @@ } }, "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dependencies": { - "package-json": "^6.3.0" + "package-json": "^8.1.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/launch-editor": { @@ -11030,6 +10706,11 @@ "shell-quote": "^1.8.1" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, "node_modules/ldrs": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ldrs/-/ldrs-1.0.1.tgz", @@ -11044,11 +10725,14 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { @@ -11089,6 +10773,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -11101,28 +10786,16 @@ "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.curry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", - "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", - "dev": true + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "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.flow": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", - "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==", - "dev": true - }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -11138,6 +10811,15 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -11158,11 +10840,14 @@ } }, "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lru-cache": { @@ -11173,32 +10858,21 @@ "yallist": "^3.0.2" } }, - "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" - }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", "engines": { - "node": ">=8" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11214,30 +10888,612 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/mdast-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "node_modules/mdast-util-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", + "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", "dependencies": { - "unist-util-remove": "^2.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "node_modules/mdast-util-directive/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "dependencies": { - "unist-util-visit": "^2.0.0" + "@types/unist": "*" + } + }, + "node_modules/mdast-util-directive/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-directive/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-directive/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-directive/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-directive/node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive/node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mdast-util-from-markdown": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", @@ -11285,43 +11541,5266 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-hast": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", - "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "node_modules/mdast-util-frontmatter/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "node_modules/mdast-util-frontmatter/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + "node_modules/mdast-util-frontmatter/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-frontmatter/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-gfm-table/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-table/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-gfm/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-gfm/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-mdx-jsx/node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-mdx/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdx/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-phrasing/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-to-markdown/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-markdown/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, "node_modules/media-typer": { "version": "0.3.0", @@ -11361,19 +16840,42 @@ } }, "node_modules/mermaid": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.1.7.tgz", - "integrity": "sha512-MRVHXy5FLjnUQUG7YS3UN9jEN6FXCJbFCXVGJQjVIbiR6Vhw0j/6pLIjqsiah9xoHmQU6DEaKOvB3S1g/1nBPA==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.4.0.tgz", + "integrity": "sha512-4QCQLp79lvz7UZxow5HUX7uWTPJOaQBVExduo91tliXC7v78i6kssZOPHxLL+Xs30KU72cpPn3g3imw/xm/gaw==", "dependencies": { - "@braintree/sanitize-url": "^6.0.0", - "d3": "^7.0.0", - "dagre": "^0.8.5", - "dagre-d3": "^0.6.4", - "dompurify": "2.4.0", - "graphlib": "^2.1.8", + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.8.2", "khroma": "^2.0.0", - "moment-mini": "2.24.0", - "stylis": "^4.0.10" + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/methods": { @@ -11451,6 +16953,1722 @@ "uvu": "^0.5.0" } }, + "node_modules/micromark-extension-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz", + "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-directive/node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-gfm/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdxjs/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdxjs/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromark-factory-destination": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", @@ -11492,6 +18710,80 @@ "uvu": "^0.5.0" } }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromark-factory-space": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", @@ -11683,6 +18975,66 @@ } ] }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromark-util-html-tag-name": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", @@ -11846,9 +19198,9 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "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" } @@ -11862,11 +19214,11 @@ } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "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.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -11881,11 +19233,14 @@ } }, "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mini-css-extract-plugin": { @@ -11906,50 +19261,6 @@ "webpack": "^5.0.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -11979,11 +19290,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/moment-mini": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", - "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" - }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -12113,11 +19419,28 @@ } }, "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dependencies": { - "lodash": "^4.17.21" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-emoji/node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "node_modules/node-fetch": { @@ -12205,9 +19528,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -12225,17 +19553,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -12304,16 +19621,16 @@ } }, "node_modules/oas-resolver-browser": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/oas-resolver-browser/-/oas-resolver-browser-2.5.2.tgz", - "integrity": "sha512-L3ugWyBHOpKLT+lb+pFXCOpk3byh6usis5T9u9mfu92jH5bR6YK8MA2bebUTIjY7I4415PzDeZcmcc+i7X05MA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/oas-resolver-browser/-/oas-resolver-browser-2.5.6.tgz", + "integrity": "sha512-Jw5elT/kwUJrnGaVuRWe1D7hmnYWB8rfDDjBnpQ+RYY/dzAewGXeTexXzt4fGEo6PUE4eqKqPWF79MZxxvMppA==", "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", "path-browserify": "^1.0.1", - "reftools": "^1.1.6", + "reftools": "^1.1.9", "yaml": "^1.10.0", - "yargs": "^15.3.1" + "yargs": "^17.0.1" }, "bin": { "resolve": "resolve.js" @@ -12322,86 +19639,6 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/oas-resolver/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "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/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/oas-resolver/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/oas-resolver/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/oas-resolver/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "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-resolver/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, "node_modules/oas-schema-walker": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", @@ -12436,6 +19673,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -12546,6 +19791,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/openapi-to-postmanv2": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/openapi-to-postmanv2/-/openapi-to-postmanv2-4.22.0.tgz", + "integrity": "sha512-FY1wFN45RillTtb/3v4d0T7zhiPe8W+MvAE3/pJKMc7G6GoO936XWd5UZhzabS1+2Ovotz8PxFs8Lj65BuMUAw==", + "dependencies": { + "ajv": "8.11.0", + "ajv-draft-04": "1.0.0", + "ajv-formats": "2.1.1", + "async": "3.2.4", + "commander": "2.20.3", + "graphlib": "2.1.8", + "js-yaml": "4.1.0", + "json-schema-merge-allof": "0.8.1", + "lodash": "4.17.21", + "oas-resolver-browser": "2.5.6", + "object-hash": "3.0.0", + "path-browserify": "1.0.1", + "postman-collection": "^4.4.0", + "swagger2openapi": "7.0.8", + "traverse": "0.6.6", + "yaml": "1.10.2" + }, + "bin": { + "openapi2postmanv2": "bin/openapi2postmanv2.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/openapi-to-postmanv2/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/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", @@ -12560,11 +19839,11 @@ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" }, "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">=6" + "node": ">=12.20" } }, "node_modules/p-limit": { @@ -12585,6 +19864,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -12627,25 +19907,20 @@ } }, "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pako": { @@ -12685,23 +19960,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -12875,10 +20133,20 @@ "node": ">=0.12" } }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -12900,14 +20168,93 @@ } }, "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dependencies": { - "find-up": "^4.0.0" + "find-up": "^6.3.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-up": { @@ -12972,9 +20319,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "funding": [ { "type": "opencollective", @@ -12990,114 +20337,117 @@ } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "dependencies": { - "postcss-selector-parser": "^6.0.9", + "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, "peerDependencies": { "postcss": "^8.2.2" } }, "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "colord": "^2.9.1", + "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-unused": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", - "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-loader": { @@ -13121,136 +20471,111 @@ "webpack": "^5.0.0" } }, - "node_modules/postcss-loader/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/postcss-merge-idents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", - "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", "dependencies": { - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "stylehacks": "^6.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-modules-extract-imports": { @@ -13309,192 +20634,191 @@ } }, "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "dependencies": { - "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "dependencies": { - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-idents": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", - "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -13504,46 +20828,46 @@ } }, "node_modules/postcss-sort-media-queries": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", - "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", "dependencies": { - "sort-css-media-queries": "2.1.0" + "sort-css-media-queries": "2.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "postcss": "^8.4.16" + "postcss": "^8.4.23" } }, "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", "dependencies": { "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "svgo": "^3.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >= 18" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-value-parser": { @@ -13552,14 +20876,57 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/postcss-zindex": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", - "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" + } + }, + "node_modules/postman-code-generators": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/postman-code-generators/-/postman-code-generators-1.11.0.tgz", + "integrity": "sha512-A2pZ4J5ZyRvQYxSbLt+GVjo6dKawGiEJdvwePDbA6iC6RhmXIWfFAJXe1ImDFoTGohK5quJhMkFkoz+ks9VO+Q==", + "hasInstallScript": true, + "dependencies": { + "async": "3.2.2", + "detect-package-manager": "3.0.2", + "lodash": "4.17.21", + "path": "0.12.7", + "postman-collection": "^4.4.0", + "shelljs": "0.8.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/postman-code-generators/node_modules/async": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", + "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" + }, + "node_modules/postman-collection": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.4.0.tgz", + "integrity": "sha512-2BGDFcUwlK08CqZFUlIC8kwRJueVzPjZnnokWPtJCd9f2J06HBQpGL7t2P1Ud1NEsK9NHq9wdipUhWLOPj5s/Q==", + "dependencies": { + "@faker-js/faker": "5.5.3", + "file-type": "3.9.0", + "http-reasons": "0.1.0", + "iconv-lite": "0.6.3", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mime-format": "2.0.1", + "mime-types": "2.1.35", + "postman-url-encoder": "3.0.5", + "semver": "7.5.4", + "uuid": "8.3.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/postman-url-encoder": { @@ -13573,14 +20940,6 @@ "node": ">=10" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", @@ -13650,11 +21009,15 @@ } }, "node_modules/prism-react-renderer": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", - "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", + "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, "peerDependencies": { - "react": ">=0.14.9" + "react": ">=16.0.0" } }, "node_modules/prismjs": { @@ -13679,15 +21042,6 @@ "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": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "dependencies": { - "asap": "~2.0.3" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -13711,17 +21065,19 @@ } }, "node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dependencies": { - "xtend": "^4.0.0" - }, + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -13764,6 +21120,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -13778,22 +21135,19 @@ } }, "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dependencies": { - "escape-goat": "^2.0.0" + "escape-goat": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pure-color": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", - "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==", - "dev": true - }, "node_modules/qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", @@ -13843,6 +21197,17 @@ } ] }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -13869,9 +21234,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "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", @@ -13915,6 +21280,14 @@ "rc": "cli.js" } }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -13926,18 +21299,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-base16-styling": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", - "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", - "dev": true, - "dependencies": { - "base16": "^1.0.0", - "lodash.curry": "^4.0.1", - "lodash.flow": "^3.3.0", - "pure-color": "^1.2.0" - } - }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -14095,22 +21456,39 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-json-view-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz", + "integrity": "sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "node_modules/react-loadable": { - "name": "@docusaurus/react-loadable", - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "node_modules/react-live": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.7.tgz", + "integrity": "sha512-NTzl0POOAW3dkp7+QL30duOrIu2Vzf2LHdx4TaQ0BqOAtQcSTKEXujfm9jR2VoCHko0oi35PYp38yKQBXz4mrg==", "dependencies": { - "@types/react": "*", - "prop-types": "^15.6.2" + "prism-react-renderer": "^2.0.6", + "sucrase": "^3.31.0", + "use-editable": "^2.3.3" + }, + "engines": { + "node": ">= 0.12.0", + "npm": ">= 2.0.0" }, "peerDependencies": { - "react": "*" + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, "node_modules/react-loadable-ssr-addon-v5-slorber": { @@ -14163,24 +21541,6 @@ "react": ">=16" } }, - "node_modules/react-markdown/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/react-markdown/node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/react-markdown/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -14192,15 +21552,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-markdown/node_modules/property-information": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", - "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/react-markdown/node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -14220,15 +21571,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/react-markdown/node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/react-markdown/node_modules/style-to-object": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", @@ -14237,15 +21579,6 @@ "inline-style-parser": "0.1.1" } }, - "node_modules/react-markdown/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/react-markdown/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", @@ -14459,21 +21792,12 @@ "react": "^16.8.0 || ^17.0.0-0 || ^18.0.0" } }, - "node_modules/react-textarea-autosize": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", - "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.20.13", - "use-composed-ref": "^1.3.0", - "use-latest": "^1.2.1" - }, + "node_modules/react-tabs/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "node": ">=6" } }, "node_modules/readable-stream": { @@ -14619,25 +21943,28 @@ } }, "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dependencies": { "rc": "1.2.8" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dependencies": { - "rc": "^1.2.8" + "node": ">=12" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/regjsparser": { @@ -14678,24 +22005,6 @@ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" }, - "node_modules/rehype-raw/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/rehype-raw/node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/rehype-raw/node_modules/hast-util-from-parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", @@ -14801,33 +22110,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rehype-raw/node_modules/property-information": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", - "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/rehype-raw/node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/rehype-raw/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/rehype-raw/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", @@ -14950,24 +22232,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-raw/node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/rehype-raw/node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -14976,130 +22240,122 @@ "node": ">= 0.10" } }, - "node_modules/remark-emoji": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", - "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "node_modules/remark-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", + "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", "dependencies": { - "emoticon": "^3.2.0", - "node-emoji": "^1.10.0", - "unist-util-visit": "^2.0.3" - } - }, - "node_modules/remark-footnotes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", - "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/remark-directive/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-directive/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-emoji/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-frontmatter/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-gfm/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", "dependencies": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx/node_modules/@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/remark-mdx/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/remark-mdx/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/remark-mdx/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/remark-mdx/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remark-mdx/node_modules/unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, "funding": { "type": "opencollective", @@ -15107,32 +22363,477 @@ } }, "node_modules/remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/remark-parse/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-parse/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/remark-parse/node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-parse/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-parse/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-parse/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-parse/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/remark-rehype": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", @@ -15148,15 +22849,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-rehype/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -15201,15 +22893,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-rehype/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", @@ -15328,18 +23011,33 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", "dependencies": { - "mdast-squeeze-paragraphs": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/remark-stringify/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-stringify/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -15352,14 +23050,6 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15384,11 +23074,6 @@ "node": "*" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -15415,6 +23100,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -15429,11 +23119,17 @@ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dependencies": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { @@ -15487,91 +23183,21 @@ "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==" }, "node_modules/rtlcss": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", - "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz", + "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==", "dev": true, "dependencies": { - "find-up": "^5.0.0", + "escalade": "^3.1.1", "picocolors": "^1.0.0", - "postcss": "^8.3.11", + "postcss": "^8.4.21", "strip-json-comments": "^3.1.1" }, "bin": { "rtlcss": "bin/rtlcss.js" - } - }, - "node_modules/rtlcss/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/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==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12.0.0" } }, "node_modules/run-parallel": { @@ -15601,14 +23227,6 @@ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -15710,16 +23328,17 @@ } }, "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -15727,33 +23346,20 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "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" + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/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/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -15798,22 +23404,17 @@ } }, "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dependencies": { - "semver": "^6.3.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semver/node_modules/lru-cache": { @@ -16032,11 +23633,6 @@ "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/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", @@ -16217,9 +23813,9 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "node_modules/sitemap": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", - "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", + "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", "dev": true, "dependencies": { "@types/node": "^17.0.5", @@ -16235,11 +23831,16 @@ "npm": ">=5.6.0" } }, - "node_modules/sitemap/node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/slash": { "version": "3.0.0", @@ -16257,6 +23858,15 @@ "node": ">=8.0.0" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -16268,9 +23878,9 @@ } }, "node_modules/sort-css-media-queries": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", - "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", "engines": { "node": ">= 6.3.0" } @@ -16289,9 +23899,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -16306,9 +23916,9 @@ } }, "node_modules/space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -16360,19 +23970,15 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - }, - "node_modules/state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "engines": { + "node": ">=12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/statuses": { @@ -16483,6 +24089,28 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-entities/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -16532,34 +24160,30 @@ } }, "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dependencies": { - "inline-style-parser": "0.1.1" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/stylis": { @@ -16663,23 +24287,27 @@ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, "node_modules/svgo/node_modules/commander": { @@ -16690,6 +24318,61 @@ "node": ">= 10" } }, + "node_modules/svgo/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "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/svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "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/svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "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/swagger2openapi": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", @@ -16716,86 +24399,6 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/swagger2openapi/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/swagger2openapi/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/swagger2openapi/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/swagger2openapi/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/swagger2openapi/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "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/swagger2openapi/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -16989,14 +24592,6 @@ "node": ">=4" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -17029,11 +24624,10 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", - "deprecated": "Use String.prototype.trim() instead" + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" }, "node_modules/trim-lines": { "version": "3.0.1", @@ -17044,22 +24638,21 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "engines": { + "node": ">=6.10" } }, "node_modules/ts-interface-checker": { @@ -17108,42 +24701,6 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "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", @@ -17152,6 +24709,14 @@ "node": ">=4" } }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "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", @@ -17181,121 +24746,129 @@ } }, "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "dependencies": { - "bail": "^1.0.0", + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unified/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dependencies": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "node": ">=12" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", - "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dependencies": { - "unist-util-is": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", "dependencies": { - "unist-util-visit": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position-from-estree/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@types/unist": "^2.0.2" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-stringify-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", @@ -17303,18 +24876,28 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -17332,9 +24915,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "funding": [ { "type": "opencollective", @@ -17350,8 +24933,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -17361,118 +24944,73 @@ } }, "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "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", + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", "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" + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, "node_modules/update-notifier/node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", "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" + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/update-notifier/node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "engines": { - "node": ">=6" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/update-notifier/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/update-notifier/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" - }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/update-notifier/node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/uri-js": { @@ -17563,31 +25101,11 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, - "node_modules/use-composed-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", - "dev": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/use-editable": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/use-editable/-/use-editable-2.3.3.tgz", @@ -17596,45 +25114,6 @@ "react": ">= 16.8.0" } }, - "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", - "dev": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-latest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", - "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", - "dev": true, - "dependencies": { - "use-isomorphic-layout-effect": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -17752,14 +25231,13 @@ } }, "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", @@ -17767,50 +25245,51 @@ } }, "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/vfile-location/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/vfile/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, - "node_modules/wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", - "dependencies": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -17840,14 +25319,19 @@ } }, "node_modules/web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -17916,7 +25400,7 @@ "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", - "ws": "^7.3.1" + "ws": "^7.5.10" }, "bin": { "webpack-bundle-analyzer": "lib/bin/analyzer.js" @@ -17934,9 +25418,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -17955,32 +25439,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/webpack-dev-middleware/node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -17994,24 +25452,6 @@ "node": ">= 0.6" } }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server": { "version": "4.15.1", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", @@ -18046,7 +25486,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -18070,59 +25510,15 @@ } } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/webpack-dev-server/node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -18266,11 +25662,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - }, "node_modules/which-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", @@ -18377,9 +25768,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -18397,11 +25788,14 @@ } }, "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xml-formatter": { @@ -18443,9 +25837,12 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "3.1.1", @@ -18466,44 +25863,28 @@ "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" }, "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/yargs/node_modules/emoji-regex": { @@ -18536,9 +25917,9 @@ } }, "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" diff --git a/package.json b/package.json index 7893673af..5c52d9dfe 100644 --- a/package.json +++ b/package.json @@ -21,38 +21,40 @@ "rebuild-docs": "npm run clean-api-docs-all && npm run gen-api-docs-all" }, "dependencies": { - "@docusaurus/plugin-client-redirects": "2.4.3", - "@docusaurus/plugin-content-docs": "^2.4.3", - "@docusaurus/plugin-google-tag-manager": "^2.4.3", - "@docusaurus/theme-mermaid": "2.4.3", + "@docusaurus/plugin-client-redirects": "3.4.0", + "@docusaurus/plugin-google-tag-manager": "3.4.0", + "@docusaurus/theme-mermaid": "3.4.0", "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/pro-duotone-svg-icons": "^6.5.1", "@fortawesome/pro-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@mdx-js/react": "^1.6.22", + "@gracefullight/docusaurus-plugin-microsoft-clarity": "^1.0.0", + "@mdx-js/react": "^3.0.0", "@typeform/embed-react": "^1.21.0", "autoprefixer": "^10.4.13", "classnames": "^2.3.2", - "clsx": "^1.1.1", - "docusaurus-plugin-openapi-docs": "^2.0.2", - "docusaurus-theme-openapi-docs": "^2.0.2", + "clsx": "^2.0.0", + "docusaurus-plugin-openapi-docs": "^3.0.1", + "docusaurus-theme-openapi-docs": "^3.0.1", "docusaurus2-dotenv": "^1.4.0", + "esbuild-loader": "^2.20.0", "ldrs": "^1.0.1", - "prism-react-renderer": "^1.3.1", + "prism-react-renderer": "^2.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-live": "^4.0.0", "react-markdown": "^8.0.7", "react-spinners": "^0.13.8", - "react-tabs": "^4.3.0", - "esbuild-loader": "^2.20.0" + "react-tabs": "^4.3.0" }, "overrides": { - "mermaid": "9.1.7" + "mermaid": "10.4.0" }, "devDependencies": { - "@docusaurus/core": "2.4.3", - "@docusaurus/module-type-aliases": "2.4.3", - "@docusaurus/preset-classic": "2.4.3", + "@docusaurus/core": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/preset-classic": "3.4.0", + "@docusaurus/types": "3.4.0", "husky": "^8.0.2", "prettier": "2.8.0", "pretty-quick": "^3.1.3" @@ -70,7 +72,7 @@ ] }, "engines": { - "node": ">=16.14" + "node": ">=18.0" }, "husky": { "hooks": { diff --git a/plugins.js b/plugins.js index cf12bf064..88d1f4709 100644 --- a/plugins.js +++ b/plugins.js @@ -1659,4 +1659,8 @@ module.exports = [ }, }, ], + [ + "@gracefullight/docusaurus-plugin-microsoft-clarity", + { projectId: "naher5vlxx" }, + ], ]; diff --git a/sidebars.js b/sidebars.js index 1d97501de..e54bad64c 100644 --- a/sidebars.js +++ b/sidebars.js @@ -69,7 +69,7 @@ const sidebars = { slug: '/api/v3', }, // @ts-ignore - items: require('./docs/api/v3/sidebar.js'), + items: require('./docs/api/v3/sidebar.ts'), }, { type: 'category', @@ -82,7 +82,7 @@ const sidebars = { slug: '/api/beta', }, // @ts-ignore - items: require('./docs/api/beta/sidebar.js'), + items: require('./docs/api/beta/sidebar.ts'), }, ], }, @@ -121,7 +121,7 @@ const sidebars = { slug: '/api/nerm/v1', }, // @ts-ignore - items: require('./docs/api/nerm/v1/sidebar.js'), + items: require('./docs/api/nerm/v1/sidebar.ts'), }, ], }, @@ -227,7 +227,7 @@ const sidebars = { slug: '/api/iiq', }, // @ts-ignore - items: require('./docs/api/iiq/sidebar.js'), + items: require('./docs/api/iiq/sidebar.ts'), }, { type: 'category', diff --git a/src/css/custom.css b/src/css/custom.css index fca6c3f14..85d5baf9a 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -547,3 +547,7 @@ div[id^='discourse-comments'] { display: flex; padding-bottom: 2%; } + +.openapi-security__summary-container { + background: var(--ifm-pre-background); +} \ No newline at end of file diff --git a/src/theme/ApiExplorer/Accept/index.tsx b/src/theme/ApiExplorer/Accept/index.tsx new file mode 100644 index 000000000..a8b06236b --- /dev/null +++ b/src/theme/ApiExplorer/Accept/index.tsx @@ -0,0 +1,29 @@ +import React from "react"; + +import FormItem from "@theme/ApiExplorer/FormItem"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; + +import { setAccept } from "./slice"; + +function Accept() { + const value = useTypedSelector((state: any) => state.accept.value); + const options = useTypedSelector((state: any) => state.accept.options); + const dispatch = useTypedDispatch(); + + if (options.length <= 1) { + return null; + } + + return ( + + dispatch(setAccept(e.target.value))} + /> + + ); +} + +export default Accept; diff --git a/src/theme/ApiExplorer/Accept/slice.ts b/src/theme/ApiExplorer/Accept/slice.ts new file mode 100644 index 000000000..e60923922 --- /dev/null +++ b/src/theme/ApiExplorer/Accept/slice.ts @@ -0,0 +1,22 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; + +export interface State { + value: string; + options: string[]; +} + +const initialState: State = {} as any; + +export const slice = createSlice({ + name: "accept", + initialState, + reducers: { + setAccept: (state, action: PayloadAction) => { + state.value = action.payload; + }, + }, +}); + +export const { setAccept } = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Container/_Container.scss b/src/theme/ApiExplorer/ApiCodeBlock/Container/_Container.scss new file mode 100644 index 000000000..8e17c2565 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/Container/_Container.scss @@ -0,0 +1,7 @@ +.openapi-explorer__code-block-container { + height: 100%; + background: var(--prism-background-color); + color: var(--prism-color); + margin-bottom: unset; + box-shadow: var(--ifm-global-shadow-lw); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx new file mode 100644 index 000000000..006dfcc50 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx @@ -0,0 +1,25 @@ +import React, { ComponentProps } from "react"; + +import { ThemeClassNames, usePrismTheme } from "@docusaurus/theme-common"; +import { getPrismCssVariables } from "@docusaurus/theme-common/internal"; +import clsx from "clsx"; + +export default function CodeBlockContainer({ + as: As, + ...props +}: { as: T } & ComponentProps): React.JSX.Element { + const prismTheme = usePrismTheme(); + const prismCssVariables = getPrismCssVariables(prismTheme); + return ( + + ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx b/src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx new file mode 100644 index 000000000..54b58f532 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx @@ -0,0 +1,27 @@ +import React from "react"; + +import Container from "@theme/ApiExplorer/ApiCodeBlock/Container"; +import type { Props } from "@theme/CodeBlock/Content/Element"; +import clsx from "clsx"; + +//
 tags in markdown map to CodeBlocks. They may contain JSX children. When
+// the children is not a simple string, we just return a styled block without
+// actually highlighting.
+export default function CodeBlockJSX({
+  children,
+  className,
+}: Props): React.JSX.Element {
+  return (
+    
+      {children}
+    
+  );
+}
diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx b/src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx
new file mode 100644
index 000000000..8c2becbb0
--- /dev/null
+++ b/src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx
@@ -0,0 +1,127 @@
+import React from "react";
+
+import { useThemeConfig, usePrismTheme } from "@docusaurus/theme-common";
+import {
+  parseCodeBlockTitle,
+  parseLanguage,
+  parseLines,
+  containsLineNumbers,
+  useCodeWordWrap,
+} from "@docusaurus/theme-common/internal";
+import Container from "@theme/ApiExplorer/ApiCodeBlock/Container";
+import CopyButton from "@theme/ApiExplorer/ApiCodeBlock/CopyButton";
+import ExpandButton from "@theme/ApiExplorer/ApiCodeBlock/ExpandButton";
+import Line from "@theme/ApiExplorer/ApiCodeBlock/Line";
+import WordWrapButton from "@theme/ApiExplorer/ApiCodeBlock/WordWrapButton";
+import type { Props } from "@theme/CodeBlock/Content/String";
+import clsx from "clsx";
+import { Highlight, Language } from "prism-react-renderer";
+
+export default function CodeBlockString({
+  children,
+  className: blockClassName = "",
+  metastring,
+  title: titleProp,
+  showLineNumbers: showLineNumbersProp,
+  language: languageProp,
+}: Props): React.JSX.Element {
+  const {
+    prism: { defaultLanguage, magicComments },
+  } = useThemeConfig();
+  const language =
+    languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage;
+  const prismTheme = usePrismTheme();
+  const wordWrap = useCodeWordWrap();
+  // We still parse the metastring in case we want to support more syntax in the
+  // future. Note that MDX doesn't strip quotes when parsing metastring:
+  // "title=\"xyz\"" => title: "\"xyz\""
+  const title = parseCodeBlockTitle(metastring) || titleProp;
+  const { lineClassNames, code } = parseLines(children, {
+    metastring,
+    language,
+    magicComments,
+  });
+  const showLineNumbers =
+    showLineNumbersProp ?? containsLineNumbers(metastring);
+
+  return (
+    
+      {title && (
+        
{title}
+ )} +
+ + {({ className, tokens, getLineProps, getTokenProps }) => ( +
+              
+                {tokens.map((line, i) => (
+                  
+                ))}
+              
+            
+ )} +
+
+ {(wordWrap.isEnabled || wordWrap.isCodeScrollable) && ( + wordWrap.toggle()} + isEnabled={wordWrap.isEnabled} + /> + )} + + +
+
+
+ ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Content/_Content.scss b/src/theme/ApiExplorer/ApiCodeBlock/Content/_Content.scss new file mode 100644 index 000000000..acc774e11 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/Content/_Content.scss @@ -0,0 +1,91 @@ +.openapi-explorer__code-block-content { + height: 100%; + position: relative; + /* rtl:ignore */ + direction: ltr; + border-radius: inherit; +} + +.openapi-explorer__code-block-title { + border-bottom: 1px solid var(--ifm-color-emphasis-300); + font-size: var(--ifm-code-font-size); + font-weight: 500; + padding: 0.75rem var(--ifm-pre-padding); + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.openapi-explorer__code-block { + height: 100%; + border-radius: var(--ifm-global-radius); + --ifm-pre-background: var(--prism-background-color); + margin: 0; + padding: 0; +} + +.openapi-explorer__code-block-title + + .openapi-explorer__code-block-content + .openapi-explorer__code-block { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.openapi-explorer__code-block-standalone { + padding: 0; +} + +.openapi-explorer__code-block-lines { + font: inherit; + /* rtl:ignore */ + float: left; + min-width: 100%; + padding: var(--ifm-pre-padding); +} + +.openapi-explorer__code-block-lines-numbering { + // This causes max-height to unset + // display: table; + padding: var(--ifm-pre-padding) 0; +} + +@media print { + .openapi-explorer__code-block-lines { + white-space: pre-wrap; + } +} + +.openapi-explorer__code-block-btn-group { + display: flex; + column-gap: 0.2rem; + position: absolute; + right: calc(var(--ifm-pre-padding) / 2); + top: calc(var(--ifm-pre-padding) / 2); +} + +.openapi-explorer__code-block-btn-group button { + display: flex; + align-items: center; + background: var(--prism-background-color); + color: var(--prism-color); + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-global-radius); + padding: 0.4rem; + line-height: 0; + transition: opacity 200ms ease-in-out; + opacity: 0; +} + +.openapi-explorer__code-block-btn-group button:focus-visible, +.openapi-explorer__code-block-btn-group button:hover { + opacity: 1 !important; +} + +.theme-code-block:hover .openapi-explorer__code-block-btn-group button { + opacity: 0.4; +} + +@media screen and (max-width: 996px) { + .openapi-explorer__expand-btn { + display: none !important; + } +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/CopyButton/_CopyButton.scss b/src/theme/ApiExplorer/ApiCodeBlock/CopyButton/_CopyButton.scss new file mode 100644 index 000000000..e245fe1b1 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/CopyButton/_CopyButton.scss @@ -0,0 +1,44 @@ +.theme-code-block:hover { + .openapi-explorer__code-block-copy-btn--copied { + opacity: 1 !important; + } +} + +.openapi-explorer__code-block-copy-btn-icons { + position: relative; + width: 1.125rem; + height: 1.125rem; +} + +.openapi-explorer__code-block-copy-btn-icon, +.openapi-explorer__code-block-copy-btn-icon--success { + position: absolute; + top: 0; + left: 0; + fill: currentColor; + opacity: inherit; + width: inherit; + height: inherit; + transition: all 0.15s ease; +} + +.openapi-explorer__code-block-copy-btn-icon--success { + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0.33); + opacity: 0; + color: #00d600; +} + +.openapi-explorer__code-block-copy-btn--copied { + .openapi-explorer__code-block-copy-btn-icon { + transform: scale(0.33); + opacity: 0; + } + + .openapi-explorer__code-block-copy-btn-icon--success { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + transition-delay: 0.075s; + } +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx new file mode 100644 index 000000000..34bd37b13 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx @@ -0,0 +1,72 @@ +import React, { useCallback, useState, useRef, useEffect } from "react"; + +import { CopyButtonProps } from "@docusaurus/theme-common/internal"; +import { translate } from "@docusaurus/Translate"; +import clsx from "clsx"; +import copy from "copy-text-to-clipboard"; + +export default function CopyButton({ + code, + className, +}: CopyButtonProps): React.JSX.Element { + const [isCopied, setIsCopied] = useState(false); + const copyTimeout = useRef(undefined); + const handleCopyCode = useCallback(() => { + copy(code); + setIsCopied(true); + copyTimeout.current = window.setTimeout(() => { + setIsCopied(false); + }, 1000); + }, [code]); + + useEffect(() => () => window.clearTimeout(copyTimeout.current), []); + + return ( + + ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/ExitButton/_ExitButton.scss b/src/theme/ApiExplorer/ApiCodeBlock/ExitButton/_ExitButton.scss new file mode 100644 index 000000000..4aaf9602f --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/ExitButton/_ExitButton.scss @@ -0,0 +1,16 @@ +.openapi-explorer__code-block-exit-btn-icons { + position: relative; + width: 1.125rem; + height: 1.125rem; +} + +.openapi-explorer__code-block-exit-btn-icon { + position: absolute; + top: 0; + left: 0; + fill: currentColor; + opacity: inherit; + width: inherit; + height: inherit; + transition: all 0.15s ease; +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx new file mode 100644 index 000000000..fd175506d --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx @@ -0,0 +1,48 @@ +import React from "react"; + +import { translate } from "@docusaurus/Translate"; +import clsx from "clsx"; + +export interface Props { + readonly className: string; + readonly handler: () => void; +} + +export default function ExitButton({ + className, + handler, +}: Props): React.JSX.Element { + return ( + + ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/_ExpandButton.scss b/src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/_ExpandButton.scss new file mode 100644 index 000000000..dcf382795 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/_ExpandButton.scss @@ -0,0 +1,62 @@ +.openapi-explorer__expand-modal-content { + padding: none; + border: thin solid var(--ifm-toc-border-color); + border-radius: var(--ifm-global-radius); + max-width: 95%; + width: 65vw; + height: 65vh; + overflow: auto; +} + +.openapi-explorer__expand-modal-overlay { + display: flex; + align-items: center; + justify-content: center; + position: fixed; + inset: 0px; + background-color: rgba(0, 0, 0, 0.9); + z-index: 201; +} + +.theme-code-block:hover .openapi-explorer__code-block-expand-btn--copied { + opacity: 1 !important; +} + +.openapi-explorer__code-block-expand-btn-icons { + position: relative; + width: 1.125rem; + height: 1.125rem; +} + +.openapi-explorer__code-block-expand-btn-icon, +.openapi-explorer__code-block-expand-btn-icon--success { + position: absolute; + top: 0; + left: 0; + fill: currentColor; + opacity: inherit; + width: inherit; + height: inherit; + transition: all 0.15s ease; +} + +.openapi-explorer__code-block-expand-btn-icon--success { + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0.33); + opacity: 0; + color: #00d600; +} + +.openapi-explorer__code-block-expand-btn--copied + .openapi-explorer__code-block-expand-btn-icon { + transform: scale(0.33); + opacity: 0; +} + +.openapi-explorer__code-block-expand-btn--copied + .openapi-explorer__code-block-expand-btn-icon--success { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + transition-delay: 0.075s; +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx new file mode 100644 index 000000000..79bb81c48 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx @@ -0,0 +1,159 @@ +import React, { useEffect, useState } from "react"; + +import { usePrismTheme } from "@docusaurus/theme-common"; +import { translate } from "@docusaurus/Translate"; +import Container from "@theme/ApiExplorer/ApiCodeBlock/Container"; +import CopyButton from "@theme/ApiExplorer/ApiCodeBlock/CopyButton"; +import ExitButton from "@theme/ApiExplorer/ApiCodeBlock/ExitButton"; +import Line from "@theme/ApiExplorer/ApiCodeBlock/Line"; +import clsx from "clsx"; +import { Highlight, Language } from "prism-react-renderer"; +import Modal from "react-modal"; + +export interface Props { + readonly code: string; + readonly className: string; + readonly language: Language; + readonly showLineNumbers: boolean; + readonly blockClassName: string; + readonly title: string | undefined; + readonly lineClassNames: { [lineIndex: number]: string[] }; +} + +export default function ExpandButton({ + code, + className, + language, + showLineNumbers, + blockClassName, + title, + lineClassNames, +}: Props): React.JSX.Element { + const [isModalOpen, setIsModalOpen] = useState(false); + const prismTheme = usePrismTheme(); + + useEffect(() => { + Modal.setAppElement("body"); + }, []); + + return ( + <> + + setIsModalOpen(false)} + contentLabel="Code Snippet" + > + + {title && ( +
{title}
+ )} +
+ + {({ className, tokens, getLineProps, getTokenProps }) => ( +
+                  
+                    {tokens.map((line, i) => (
+                      
+                    ))}
+                  
+                
+ )} +
+
+ + setIsModalOpen(false)} + /> +
+
+
+
+ + ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Line/_Line.scss b/src/theme/ApiExplorer/ApiCodeBlock/Line/_Line.scss new file mode 100644 index 000000000..10d54df9a --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/Line/_Line.scss @@ -0,0 +1,44 @@ +:where(:root) { + --docusaurus-highlighted-code-line-bg: rgb(72 77 91); +} + +:where([data-theme="dark"]) { + --docusaurus-highlighted-code-line-bg: rgb(100 100 100); +} + +.theme-code-block-highlighted-line { + background-color: var(--docusaurus-highlighted-code-line-bg); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); +} + +.openapi-explorer__code-block-code-line { + display: table-row; + counter-increment: line-count; +} + +.openapi-explorer__code-block-code-line-number { + display: table-cell; + text-align: right; + width: 1%; + position: sticky; + left: 0; + padding: 0 var(--ifm-pre-padding); + background: var(--ifm-pre-background); + overflow-wrap: normal; +} + +.openapi-explorer__code-block-code-line-number::before { + content: counter(line-count); + opacity: 0.4; +} + +:global(.theme-code-block-highlighted-line) + .openapi-explorer__code-block-code-line-number::before { + opacity: 0.8; +} + +.openapi-explorer__code-block-code-line-number { + padding-right: var(--ifm-pre-padding); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx new file mode 100644 index 000000000..73b37725b --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx @@ -0,0 +1,41 @@ +import React from "react"; + +import { LineProps } from "@docusaurus/theme-common/internal"; +import clsx from "clsx"; + +export default function CodeBlockLine({ + line, + classNames, + showLineNumbers, + getLineProps, + getTokenProps, +}: LineProps): React.JSX.Element { + if (line.length === 1 && line[0].content === "\n") { + line[0].content = ""; + } + const lineProps = getLineProps({ + line, + className: clsx( + classNames, + showLineNumbers && "openapi-explorer__code-block-code-line" + ), + }); + const lineTokens = line.map((token, key) => ( + + )); + return ( + + {showLineNumbers ? ( + <> + + + {lineTokens} + + + ) : ( + lineTokens + )} +
+
+ ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/_WordWrapButton.scss b/src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/_WordWrapButton.scss new file mode 100644 index 000000000..cf2c8aa9a --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/_WordWrapButton.scss @@ -0,0 +1,10 @@ +.openapi-explorer__code-block-word-wrap-btn-icon { + width: 1.2rem; + height: 1.2rem; +} + +.openapi-explorer__code-block-word-wrap-btn--enabled { + .openapi-explorer__code-block-word-wrap-btn-icon { + color: var(--ifm-color-primary); + } +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx new file mode 100644 index 000000000..c0090b36f --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx @@ -0,0 +1,47 @@ +import React from "react"; + +import { translate } from "@docusaurus/Translate"; +import clsx from "clsx"; + +export interface Props { + readonly className?: string; + readonly onClick: React.MouseEventHandler; + readonly isEnabled: boolean; +} + +export default function WordWrapButton({ + className, + onClick, + isEnabled, +}: Props): React.JSX.Element | null { + const title = translate({ + id: "theme.CodeBlock.wordWrapToggle", + message: "Toggle word wrap", + description: + "The title attribute for toggle word wrapping button of code block lines", + }); + return ( + + ); +} diff --git a/src/theme/ApiExplorer/ApiCodeBlock/index.tsx b/src/theme/ApiExplorer/ApiCodeBlock/index.tsx new file mode 100644 index 000000000..3a1a29328 --- /dev/null +++ b/src/theme/ApiExplorer/ApiCodeBlock/index.tsx @@ -0,0 +1,38 @@ +import React, { isValidElement, ReactNode } from "react"; + +import { CodeBlockProps } from "@docusaurus/theme-common/internal"; +import useIsBrowser from "@docusaurus/useIsBrowser"; +import ElementContent from "@theme/ApiExplorer/ApiCodeBlock/Content/Element"; +import StringContent from "@theme/ApiExplorer/ApiCodeBlock/Content/String"; + +/** + * Best attempt to make the children a plain string so it is copyable. If there + * are react elements, we will not be able to copy the content, and it will + * return `children` as-is; otherwise, it concatenates the string children + * together. + */ +function maybeStringifyChildren(children: ReactNode): ReactNode { + if (React.Children.toArray(children).some((el) => isValidElement(el))) { + return children; + } + // The children is now guaranteed to be one/more plain strings + return Array.isArray(children) ? children.join("") : (children as string); +} +export default function ApiCodeBlock({ + children: rawChildren, + ...props +}: CodeBlockProps) { + // The Prism theme on SSR is always the default theme but the site theme can + // be in a different mode. React hydration doesn't update DOM styles that come + // from SSR. Hence force a re-render after mounting to apply the current + // relevant styles. + const isBrowser = useIsBrowser(); + const children = maybeStringifyChildren(rawChildren); + const CodeBlockComp = + typeof children === "string" ? StringContent : ElementContent; + return ( + + {children as string} + + ); +} diff --git a/src/theme/ApiExplorer/Authorization/auth-types.ts b/src/theme/ApiExplorer/Authorization/auth-types.ts new file mode 100644 index 000000000..125d18c9e --- /dev/null +++ b/src/theme/ApiExplorer/Authorization/auth-types.ts @@ -0,0 +1,23 @@ +export function getAuthDataKeys(security: { [key: string]: any }) { + // Bearer Auth + if (security.type === "http" && security.scheme === "bearer") { + return ["token"]; + } + + if (security.type === "oauth2") { + return ["token"]; + } + + // Basic Auth + if (security.type === "http" && security.scheme === "basic") { + return ["username", "password"]; + } + + // API Auth + if (security.type === "apiKey") { + return ["apiKey"]; + } + + // none + return []; +} diff --git a/src/theme/ApiExplorer/Authorization/index.tsx b/src/theme/ApiExplorer/Authorization/index.tsx new file mode 100644 index 000000000..4bd9e9911 --- /dev/null +++ b/src/theme/ApiExplorer/Authorization/index.tsx @@ -0,0 +1,148 @@ +import React from "react"; + +import FormItem from "@theme/ApiExplorer/FormItem"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import FormTextInput from "@theme/ApiExplorer/FormTextInput"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; + +import { setAuthData, setSelectedAuth } from "./slice"; + +function Authorization() { + const data = useTypedSelector((state: any) => state.auth.data); + const options = useTypedSelector((state: any) => state.auth.options); + const selected = useTypedSelector((state: any) => state.auth.selected); + + const dispatch = useTypedDispatch(); + + if (selected === undefined) { + return null; + } + + const selectedAuth = options[selected]; + + const optionKeys = Object.keys(options); + + return ( +
+ {optionKeys.length > 1 && ( + + ) => { + dispatch(setSelectedAuth(e.target.value)); + }} + /> + + )} + {selectedAuth.map((a: any) => { + if (a.type === "http" && a.scheme === "bearer") { + return ( + + ) => { + const value = e.target.value; + dispatch( + setAuthData({ + scheme: a.key, + key: "token", + value: value ? value : undefined, + }) + ); + }} + /> + + ); + } + + if (a.type === "oauth2") { + return ( + + ) => { + const value = e.target.value; + dispatch( + setAuthData({ + scheme: a.key, + key: "token", + value: value ? value : undefined, + }) + ); + }} + /> + + ); + } + + if (a.type === "http" && a.scheme === "basic") { + return ( + + + ) => { + const value = e.target.value; + dispatch( + setAuthData({ + scheme: a.key, + key: "username", + value: value ? value : undefined, + }) + ); + }} + /> + + + ) => { + const value = e.target.value; + dispatch( + setAuthData({ + scheme: a.key, + key: "password", + value: value ? value : undefined, + }) + ); + }} + /> + + + ); + } + + if (a.type === "apiKey") { + return ( + + ) => { + const value = e.target.value; + dispatch( + setAuthData({ + scheme: a.key, + key: "apiKey", + value: value ? value : undefined, + }) + ); + }} + /> + + ); + } + + return null; + })} +
+ ); +} + +export default Authorization; diff --git a/src/theme/ApiExplorer/Authorization/slice.ts b/src/theme/ApiExplorer/Authorization/slice.ts new file mode 100644 index 000000000..b071700d5 --- /dev/null +++ b/src/theme/ApiExplorer/Authorization/slice.ts @@ -0,0 +1,139 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { createStorage, hashArray } from "@theme/ApiExplorer/storage-utils"; +import { + SecurityRequirementObject, + SecuritySchemeObject, +} from "docusaurus-plugin-openapi-docs/src/openapi/types"; +/* eslint-disable import/no-extraneous-dependencies*/ +import { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; + +import { getAuthDataKeys } from "./auth-types"; + +// The global definitions +// "securitySchemes": { +// "BearerAuth": { "type": "http", "scheme": "BeAreR" }, +// "BasicAuth": { "type": "http", "scheme": "basic" } +// }, + +// The operation level requirements +// "security": [ +// { "BearerAuth": [] }, +// { "BearerAuth": [], "BasicAuth": [] } +// ], + +// SLICE_STATE +// data: +// BearerAuth: +// token=xxx +// BasicAuth: +// username=xxx +// password=xxx +// +// options: +// "BearerAuth": [{ key: "BearerAuth", scopes: [], ...rest }] +// "BearerAuth and BasicAuth": [{ key: "BearerAuth", scopes: [], ...rest }, { key: "BasicAuth", scopes: [], ...rest }] +// +// selected: "BearerAuth and BasicAuth" + +// LOCAL_STORAGE +// hash(SLICE_STATE.options) -> "BearerAuth and BasicAuth" +// BearerAuth -> { token: xxx } +// BasicAuth -> { username: xxx, password: xxx } + +export function createAuth({ + security, + securitySchemes, + options: opts, +}: { + security?: SecurityRequirementObject[]; + securitySchemes?: { + [key: string]: SecuritySchemeObject; + }; + options?: ThemeConfig["api"]; +}): AuthState { + const storage = createStorage("sessionStorage"); + + let data: AuthState["data"] = {}; + let options: AuthState["options"] = {}; + + for (const option of security ?? []) { + const id = Object.keys(option).join(" and "); + for (const [schemeID, scopes] of Object.entries(option)) { + const scheme = securitySchemes?.[schemeID]; + if (scheme) { + if (options[id] === undefined) { + options[id] = []; + } + const dataKeys = getAuthDataKeys(scheme); + for (const key of dataKeys) { + if (data[schemeID] === undefined) { + data[schemeID] = {}; + } + + let persisted = undefined; + try { + persisted = JSON.parse(storage.getItem(schemeID) ?? "")[key]; + } catch {} + + data[schemeID][key] = persisted; + } + options[id].push({ + ...scheme, + key: schemeID, + scopes, + }); + } + } + } + + let persisted = undefined; + try { + persisted = storage.getItem(hashArray(Object.keys(options))) ?? undefined; + } catch {} + + return { + data, + options, + selected: persisted ?? Object.keys(options)[0], + }; +} + +export type Scheme = { + key: string; + scopes: string[]; +} & SecuritySchemeObject; + +export interface AuthState { + data: { + [scheme: string]: { + [key: string]: string | undefined; + }; + }; + options: { + [key: string]: Scheme[]; + }; + selected?: string; +} + +const initialState: AuthState = {} as any; + +export const slice = createSlice({ + name: "auth", + initialState, + reducers: { + setAuthData: ( + state, + action: PayloadAction<{ scheme: string; key: string; value?: string }> + ) => { + const { scheme, key, value } = action.payload; + state.data[scheme][key] = value; + }, + setSelectedAuth: (state, action: PayloadAction) => { + state.selected = action.payload; + }, + }, +}); + +export const { setAuthData, setSelectedAuth } = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/Body/index.tsx b/src/theme/ApiExplorer/Body/index.tsx new file mode 100644 index 000000000..98341e9b3 --- /dev/null +++ b/src/theme/ApiExplorer/Body/index.tsx @@ -0,0 +1,361 @@ +import React from "react"; + +import json2xml from "@theme/ApiExplorer/Body/json2xml"; +import FormFileUpload from "@theme/ApiExplorer/FormFileUpload"; +import FormItem from "@theme/ApiExplorer/FormItem"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import FormTextInput from "@theme/ApiExplorer/FormTextInput"; +import LiveApp from "@theme/ApiExplorer/LiveEditor"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; +import Markdown from "@theme/Markdown"; +import SchemaTabs from "@theme/SchemaTabs"; +import TabItem from "@theme/TabItem"; +import { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import format from "xml-formatter"; + +import { + clearFormBodyKey, + clearRawBody, + setFileFormBody, + setFileRawBody, + setStringFormBody, +} from "./slice"; + +export interface Props { + jsonRequestBodyExample: string; + requestBodyMetadata?: RequestBodyObject; + methods?: any; + required?: boolean; +} + +function BodyWrap({ + requestBodyMetadata, + jsonRequestBodyExample, + methods, + required, +}: Props) { + const contentType = useTypedSelector((state: any) => state.contentType.value); + + // NOTE: We used to check if body was required, but opted to always show the request body + // to reduce confusion, see: https://github.com/cloud-annotations/docusaurus-openapi/issues/145 + + // No body + if (contentType === undefined) { + return null; + } + + return ( + + ); +} + +function Body({ + requestBodyMetadata, + jsonRequestBodyExample, + methods, + required, +}: Props) { + const contentType = useTypedSelector((state: any) => state.contentType.value); + const dispatch = useTypedDispatch(); + + // Lot's of possible content-types: + // - application/json + // - application/xml + // - text/plain + // - text/css + // - text/html + // - text/javascript + // - application/javascript + // - multipart/form-data + // - application/x-www-form-urlencoded + // - image/svg+xml;charset=US-ASCII + + // Show editor: + // - application/json + // - application/xml + // - */* + + // Show form: + // - multipart/form-data + // - application/x-www-form-urlencoded + + const schema = requestBodyMetadata?.content?.[contentType]?.schema; + const example = requestBodyMetadata?.content?.[contentType]?.example; + const examples = requestBodyMetadata?.content?.[contentType]?.examples; + + if (schema?.format === "binary") { + return ( + + { + if (file === undefined) { + dispatch(clearRawBody()); + return; + } + dispatch( + setFileRawBody({ + src: `/path/to/${file.name}`, + content: file, + }) + ); + }} + /> + + ); + } + if ( + (contentType === "multipart/form-data" || + contentType === "application/x-www-form-urlencoded") && + schema?.type === "object" + ) { + return ( + +
+ {Object.entries(schema.properties ?? {}).map(([key, val]: any) => { + if (val.format === "binary") { + return ( + + { + if (file === undefined) { + dispatch(clearFormBodyKey(key)); + return; + } + dispatch( + setFileFormBody({ + key: key, + value: { + src: `/path/to/${file.name}`, + content: file, + }, + }) + ); + }} + /> + + ); + } + + if (val.enum) { + return ( + + ) => { + const val = e.target.value; + if (val === "---") { + dispatch(clearFormBodyKey(key)); + } else { + dispatch( + setStringFormBody({ + key: key, + value: val, + }) + ); + } + }} + /> + + ); + } + // TODO: support all the other types. + return ( + + ) => { + dispatch( + setStringFormBody({ key: key, value: e.target.value }) + ); + }} + /> + + ); + })} +
+
+ ); + } + + let language = "plaintext"; + let defaultBody = ""; //"body content"; + let exampleBody; + let examplesBodies = [] as any; + + if ( + contentType.includes("application/json") || + contentType.endsWith("+json") + ) { + if (jsonRequestBodyExample) { + defaultBody = JSON.stringify(jsonRequestBodyExample, null, 2); + } + if (example) { + exampleBody = JSON.stringify(example, null, 2); + } + if (examples) { + for (const [key, example] of Object.entries(examples)) { + examplesBodies.push({ + label: key, + body: JSON.stringify(example.value, null, 2), + summary: example.summary, + }); + } + } + language = "json"; + } + + if (contentType === "application/xml" || contentType.endsWith("+xml")) { + if (jsonRequestBodyExample) { + try { + defaultBody = format(json2xml(jsonRequestBodyExample, ""), { + indentation: " ", + lineSeparator: "\n", + collapseContent: true, + }); + } catch { + defaultBody = json2xml(jsonRequestBodyExample); + } + } + if (example) { + try { + exampleBody = format(json2xml(example, ""), { + indentation: " ", + lineSeparator: "\n", + collapseContent: true, + }); + } catch { + exampleBody = json2xml(example); + } + } + if (examples) { + for (const [key, example] of Object.entries(examples)) { + let formattedXmlBody; + try { + formattedXmlBody = format(example.value, { + indentation: " ", + lineSeparator: "\n", + collapseContent: true, + }); + } catch { + formattedXmlBody = example.value; + } + examplesBodies.push({ + label: key, + body: formattedXmlBody, + summary: example.summary, + }); + } + } + language = "xml"; + } + + if (exampleBody) { + return ( + + + {/* @ts-ignore */} + + + {defaultBody} + + + {/* @ts-ignore */} + + {example.summary && } + {exampleBody && ( + + {exampleBody} + + )} + + + + ); + } + + if (examplesBodies && examplesBodies.length > 0) { + return ( + + + {/* @ts-ignore */} + + + {defaultBody} + + + {examplesBodies.map((example: any) => { + return ( + // @ts-ignore + + {example.summary && } + {example.body && ( + + {example.body} + + )} + + ); + })} + + + ); + } + + return ( + + + {defaultBody} + + + ); +} + +export default BodyWrap; diff --git a/src/theme/ApiExplorer/Body/json2xml.js b/src/theme/ApiExplorer/Body/json2xml.js new file mode 100644 index 000000000..6092291b0 --- /dev/null +++ b/src/theme/ApiExplorer/Body/json2xml.js @@ -0,0 +1,36 @@ +export default function json2xml(o, tab) { + var toXml = function (v, name, ind) { + var xml = ""; + if (v instanceof Array) { + for (var i = 0, n = v.length; i < n; i++) + xml += ind + toXml(v[i], name, ind + "\t") + "\n"; + } else if (typeof v == "object") { + var hasChild = false; + xml += ind + "<" + name; + for (var m in v) { + if (m.charAt(0) === "@") + xml += " " + m.substr(1) + '="' + v[m].toString() + '"'; + else hasChild = true; + } + xml += hasChild ? ">" : "/>"; + if (hasChild) { + for (var m2 in v) { + if (m2 === "#text") xml += v[m2]; + else if (m2 === "#cdata") xml += ""; + else if (m2.charAt(0) !== "@") xml += toXml(v[m2], m2, ind + "\t"); + } + xml += + (xml.charAt(xml.length - 1) === "\n" ? ind : "") + + ""; + } + } else { + xml += ind + "<" + name + ">" + v.toString() + ""; + } + return xml; + }, + xml = ""; + for (var m3 in o) xml += toXml(o[m3], m3, ""); + return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, ""); +} diff --git a/src/theme/ApiExplorer/Body/slice.ts b/src/theme/ApiExplorer/Body/slice.ts new file mode 100644 index 000000000..f8b3102db --- /dev/null +++ b/src/theme/ApiExplorer/Body/slice.ts @@ -0,0 +1,126 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; + +export interface FileContent { + type: "file"; + value: { + src: string; + content: Blob; + }; +} + +export interface StringContent { + type: "string"; + value?: string; +} + +export type Content = FileContent | StringContent | undefined; + +export interface FormBody { + type: "form"; + content: { + [key: string]: Content; + }; +} + +export interface RawBody { + type: "raw"; + content: Content; +} + +export interface EmptyBody { + type: "empty"; +} + +export type Body = EmptyBody | FormBody | RawBody; + +export type State = Body; + +const initialState: State = {} as any; + +export const slice = createSlice({ + name: "body", + initialState, + reducers: { + clearRawBody: (_state) => { + return { + type: "empty", + }; + }, + setStringRawBody: (_state, action: PayloadAction) => { + return { + type: "raw", + content: { + type: "string", + value: action.payload, + }, + }; + }, + setFileRawBody: (_state, action: PayloadAction) => { + return { + type: "raw", + content: { + type: "file", + value: action.payload, + }, + }; + }, + clearFormBodyKey: (state, action: PayloadAction) => { + if (state?.type === "form") { + delete state.content[action.payload]; + } + }, + setStringFormBody: ( + state, + action: PayloadAction<{ key: string; value: string }> + ) => { + if (state?.type !== "form") { + return { + type: "form", + content: { + [action.payload.key]: { + type: "string", + value: action.payload.value, + }, + }, + }; + } + state.content[action.payload.key] = { + type: "string", + value: action.payload.value, + }; + return state; + }, + setFileFormBody: ( + state, + action: PayloadAction<{ key: string; value: FileContent["value"] }> + ) => { + if (state?.type !== "form") { + return { + type: "form", + content: { + [action.payload.key]: { + type: "file", + value: action.payload.value, + }, + }, + }; + } + state.content[action.payload.key] = { + type: "file", + value: action.payload.value, + }; + return state; + }, + }, +}); + +export const { + clearRawBody, + setStringRawBody, + setFileRawBody, + clearFormBodyKey, + setStringFormBody, + setFileFormBody, +} = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts b/src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts new file mode 100644 index 000000000..01f614217 --- /dev/null +++ b/src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts @@ -0,0 +1,48 @@ +// https://github.com/github-linguist/linguist/blob/master/lib/linguist/popular.yml +export type CodeSampleLanguage = + | "C" + | "C#" + | "C++" + | "CoffeeScript" + | "CSS" + | "Dart" + | "DM" + | "Elixir" + | "Go" + | "Groovy" + | "HTML" + | "Java" + | "JavaScript" + | "Kotlin" + | "Objective-C" + | "Perl" + | "PHP" + | "PowerShell" + | "Python" + | "Ruby" + | "Rust" + | "Scala" + | "Shell" + | "Swift" + | "TypeScript"; + +export interface Language { + highlight: string; + language: string; + codeSampleLanguage: CodeSampleLanguage; + logoClass: string; + variant: string; + variants: string[]; + options?: { [key: string]: boolean }; + sample?: string; + samples?: string[]; + samplesSources?: string[]; + samplesLabels?: string[]; +} + +// https://redocly.com/docs/api-reference-docs/specification-extensions/x-code-samples +export interface CodeSample { + source: string; + lang: CodeSampleLanguage; + label?: string; +} diff --git a/src/theme/ApiExplorer/CodeSnippets/index.tsx b/src/theme/ApiExplorer/CodeSnippets/index.tsx new file mode 100644 index 000000000..dd317163b --- /dev/null +++ b/src/theme/ApiExplorer/CodeSnippets/index.tsx @@ -0,0 +1,438 @@ +/* ============================================================================ + * Copyright (c) Palo Alto Networks + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * ========================================================================== */ + +import React, { useState, useEffect } from "react"; + +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import ApiCodeBlock from "@theme/ApiExplorer/ApiCodeBlock"; +import buildPostmanRequest from "@theme/ApiExplorer/buildPostmanRequest"; +import CodeTabs from "@theme/ApiExplorer/CodeTabs"; +import { useTypedSelector } from "@theme/ApiItem/hooks"; +import codegen from "postman-code-generators"; +import sdk from "postman-collection"; + +import { CodeSample, Language } from "./code-snippets-types"; +import { + getCodeSampleSourceFromLanguage, + mergeArraysbyLanguage, + mergeCodeSampleLanguage, +} from "./languages"; + +export const languageSet: Language[] = [ + { + highlight: "bash", + language: "curl", + codeSampleLanguage: "Shell", + logoClass: "bash", + options: { + longFormat: false, + followRedirect: true, + trimRequestBody: true, + }, + variant: "cURL", + variants: ["curl"], + }, + { + highlight: "python", + language: "python", + codeSampleLanguage: "Python", + logoClass: "python", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "requests", + variants: ["requests", "http.client"], + }, + { + highlight: "go", + language: "go", + codeSampleLanguage: "Go", + logoClass: "go", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "native", + variants: ["native"], + }, + { + highlight: "javascript", + language: "nodejs", + codeSampleLanguage: "JavaScript", + logoClass: "nodejs", + options: { + ES6_enabled: true, + followRedirect: true, + trimRequestBody: true, + }, + variant: "axios", + variants: ["axios", "native"], + }, + { + highlight: "ruby", + language: "ruby", + codeSampleLanguage: "Ruby", + logoClass: "ruby", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "Net::HTTP", + variants: ["net::http"], + }, + { + highlight: "csharp", + language: "csharp", + codeSampleLanguage: "C#", + logoClass: "csharp", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "RestSharp", + variants: ["restsharp", "httpclient"], + }, + { + highlight: "php", + language: "php", + codeSampleLanguage: "PHP", + logoClass: "php", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "cURL", + variants: ["curl", "guzzle", "pecl_http", "http_request2"], + }, + { + highlight: "java", + language: "java", + codeSampleLanguage: "Java", + logoClass: "java", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "OkHttp", + variants: ["okhttp", "unirest"], + }, + { + highlight: "powershell", + language: "powershell", + codeSampleLanguage: "PowerShell", + logoClass: "powershell", + options: { + followRedirect: true, + trimRequestBody: true, + }, + variant: "RestMethod", + variants: ["restmethod"], + }, +]; + +export interface Props { + postman: sdk.Request; + codeSamples: CodeSample[]; +} + +function CodeTab({ children, hidden, className }: any): JSX.Element { + return ( + + ); +} + +function CodeSnippets({ postman, codeSamples }: Props) { + const { siteConfig } = useDocusaurusContext(); + + const contentType = useTypedSelector((state: any) => state.contentType.value); + const accept = useTypedSelector((state: any) => state.accept.value); + const server = useTypedSelector((state: any) => state.server.value); + const body = useTypedSelector((state: any) => state.body); + + const pathParams = useTypedSelector((state: any) => state.params.path); + const queryParams = useTypedSelector((state: any) => state.params.query); + const cookieParams = useTypedSelector((state: any) => state.params.cookie); + const headerParams = useTypedSelector((state: any) => state.params.header); + + const auth = useTypedSelector((state: any) => state.auth); + + // User-defined languages array + // Can override languageSet, change order of langs, override options and variants + const userDefinedLanguageSet = + (siteConfig?.themeConfig?.languageTabs as Language[] | undefined) ?? + languageSet; + + // Filter languageSet by user-defined langs + const filteredLanguageSet = languageSet.filter((ls) => { + return userDefinedLanguageSet?.some((lang) => { + return lang.language === ls.language; + }); + }); + + // Merge user-defined langs into languageSet + const mergedLangs = mergeCodeSampleLanguage( + mergeArraysbyLanguage(userDefinedLanguageSet, filteredLanguageSet), + codeSamples + ); + + // Read defaultLang from localStorage + const defaultLang: Language[] = mergedLangs.filter( + (lang) => + lang.language === localStorage.getItem("docusaurus.tab.code-samples") + ); + const [selectedVariant, setSelectedVariant] = useState(); + const [selectedSample, setSelectedSample] = useState(); + const [language, setLanguage] = useState(() => { + // Return first index if only 1 user-defined language exists + if (mergedLangs.length === 1) { + return mergedLangs[0]; + } + // Fall back to language in localStorage or first user-defined language + return defaultLang[0] ?? mergedLangs[0]; + }); + const [codeText, setCodeText] = useState(""); + const [codeSampleCodeText, setCodeSampleCodeText] = useState< + string | (() => string) + >(() => getCodeSampleSourceFromLanguage(language)); + + useEffect(() => { + if (language && !!language.sample) { + setCodeSampleCodeText(getCodeSampleSourceFromLanguage(language)); + } + + if (language && !!language.options) { + const postmanRequest = buildPostmanRequest(postman, { + queryParams, + pathParams, + cookieParams, + contentType, + accept, + headerParams, + body, + server, + auth, + }); + codegen.convert( + language.language, + language.variant, + postmanRequest, + language.options, + (error: any, snippet: string) => { + if (error) { + return; + } + setCodeText(snippet); + } + ); + } else if (language && !language.options) { + const langSource = mergedLangs.filter( + (lang) => lang.language === language.language + ); + + // Merges user-defined language with default languageSet + // This allows users to define only the minimal properties necessary in languageTabs + // User-defined properties should override languageSet properties + const mergedLanguage = { ...langSource[0], ...language }; + const postmanRequest = buildPostmanRequest(postman, { + queryParams, + pathParams, + cookieParams, + contentType, + accept, + headerParams, + body, + server, + auth, + }); + + codegen.convert( + mergedLanguage.language, + mergedLanguage.variant, + postmanRequest, + mergedLanguage.options, + (error: any, snippet: string) => { + if (error) { + return; + } + setCodeText(snippet); + } + ); + } else { + setCodeText(""); + } + }, [ + accept, + body, + contentType, + cookieParams, + headerParams, + language, + pathParams, + postman, + queryParams, + server, + auth, + mergedLangs, + ]); + // no dependencies was intentionlly set for this particular hook. it's safe as long as if conditions are set + useEffect(function onSelectedVariantUpdate() { + if (selectedVariant && selectedVariant !== language.variant) { + const postmanRequest = buildPostmanRequest(postman, { + queryParams, + pathParams, + cookieParams, + contentType, + accept, + headerParams, + body, + server, + auth, + }); + codegen.convert( + language.language, + selectedVariant, + postmanRequest, + language.options, + (error: any, snippet: string) => { + if (error) { + return; + } + setCodeText(snippet); + } + ); + } + }); + + // no dependencies was intentionlly set for this particular hook. it's safe as long as if conditions are set + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(function onSelectedSampleUpdate() { + if ( + language.samples && + language.samplesSources && + selectedSample && + selectedSample !== language.sample + ) { + const sampleIndex = language.samples.findIndex( + (smp) => smp === selectedSample + ); + setCodeSampleCodeText(language.samplesSources[sampleIndex]); + } + }); + + if (language === undefined) { + return null; + } + + return ( + <> + + {mergedLangs.map((lang) => { + return ( + + {lang.samples && ( + + {lang.samples.map((sample, index) => { + return ( + + {/* @ts-ignore */} + + {codeSampleCodeText} + + + ); + })} + + )} + + + {lang.variants.map((variant, index) => { + return ( + + {/* @ts-ignore */} + + {codeText} + + + ); + })} + + + ); + })} + + + ); +} + +export default CodeSnippets; diff --git a/src/theme/ApiExplorer/CodeSnippets/languages.json b/src/theme/ApiExplorer/CodeSnippets/languages.json new file mode 100644 index 000000000..36c345a3b --- /dev/null +++ b/src/theme/ApiExplorer/CodeSnippets/languages.json @@ -0,0 +1,1290 @@ +[ + { + "key": "csharp", + "label": "C#", + "syntax_mode": "csharp", + "variants": [ + { + "key": "RestSharp", + "options": [ + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + }, + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "curl", + "label": "cURL", + "syntax_mode": "powershell", + "variants": [ + { + "key": "cURL", + "options": [ + { + "name": "Generate multiline snippet", + "id": "multiLine", + "type": "boolean", + "default": true, + "description": "Split cURL command across multiple lines" + }, + { + "name": "Use long form options", + "id": "longFormat", + "type": "boolean", + "default": true, + "description": "Use the long form for cURL options (--header instead of -H)" + }, + { + "name": "Line continuation character", + "id": "lineContinuationCharacter", + "availableOptions": ["\\", "^", "`"], + "type": "enum", + "default": "\\", + "description": "Set a character used to mark the continuation of a statement on the next line (generally, \\ for OSX/Linux, ^ for Windows cmd and ` for Powershell)" + }, + { + "name": "Quote Type", + "id": "quoteType", + "availableOptions": ["single", "double"], + "type": "enum", + "default": "single", + "description": "String denoting the quote type to use (single or double) for URL (Use double quotes when running curl in cmd.exe and single quotes for the rest)" + }, + { + "name": "Set request timeout (in seconds)", + "id": "requestTimeoutInSeconds", + "type": "positiveInteger", + "default": 0, + "description": "Set number of seconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Use Silent Mode", + "id": "silent", + "type": "boolean", + "default": false, + "description": "Display the requested data without showing the cURL progress meter or error messages" + } + ] + } + ] + }, + { + "key": "dart", + "label": "Dart", + "syntax_mode": "dart", + "variants": [ + { + "key": "http", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + } + ] + } + ] + }, + { + "key": "go", + "label": "Go", + "syntax_mode": "golang", + "variants": [ + { + "key": "Native", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "http", + "label": "HTTP", + "syntax_mode": "text", + "variants": [ + { + "key": "HTTP", + "options": [ + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "java", + "label": "Java", + "syntax_mode": "java", + "variants": [ + { + "key": "OkHttp", + "options": [ + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + }, + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + }, + { + "key": "Unirest", + "options": [ + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + }, + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "javascript", + "label": "JavaScript", + "syntax_mode": "javascript", + "variants": [ + { + "key": "Fetch", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + }, + { + "key": "jQuery", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + }, + { + "key": "XHR", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "c", + "label": "C", + "syntax_mode": "c_cpp", + "variants": [ + { + "key": "libcurl", + "options": [ + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + }, + { + "name": "Protocol", + "id": "protocol", + "type": "enum", + "availableOptions": ["http", "https"], + "default": "https", + "description": "The protocol to be used to make the request" + }, + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Use curl_mime", + "id": "useMimeType", + "type": "boolean", + "default": true, + "description": "Use curl_mime to send multipart/form-data requests" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + } + ] + } + ] + }, + { + "key": "nodejs", + "label": "NodeJs", + "syntax_mode": "javascript", + "variants": [ + { + "key": "Axios", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Enable ES6 features", + "id": "ES6_enabled", + "type": "boolean", + "default": false, + "description": "Modifies code snippet to incorporate ES6 (EcmaScript) features" + } + ] + }, + { + "key": "Native", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Enable ES6 features", + "id": "ES6_enabled", + "type": "boolean", + "default": false, + "description": "Modifies code snippet to incorporate ES6 (EcmaScript) features" + } + ] + } + ] + }, + { + "key": "objective-c", + "label": "Objective-C", + "syntax_mode": "objectivec", + "variants": [ + { + "key": "NSURLSession", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 10000, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + } + ] + } + ] + }, + { + "key": "ocaml", + "label": "OCaml", + "syntax_mode": "ocaml", + "variants": [ + { + "key": "Cohttp", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + } + ] + } + ] + }, + { + "key": "php", + "label": "PHP", + "syntax_mode": "php", + "variants": [ + { + "key": "cURL", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + }, + { + "key": "Guzzle", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Set communication type", + "id": "asyncType", + "type": "enum", + "availableOptions": ["async", "sync"], + "default": "async", + "description": "Set if the requests will be asynchronous or synchronous" + }, + { + "name": "Include boilerplate", + "id": "includeBoilerplate", + "type": "boolean", + "default": false, + "description": "Include class definition and import statements in snippet" + } + ] + }, + { + "key": "HTTP_Request2", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "default": "Space", + "availableOptions": ["Tab", "Space"], + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + } + ] + }, + { + "key": "pecl_http", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "default": "Space", + "availableOptions": ["Tab", "Space"], + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + } + ] + } + ] + }, + { + "key": "powershell", + "label": "PowerShell", + "syntax_mode": "powershell", + "variants": [ + { + "key": "RestMethod", + "options": [ + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "python", + "label": "Python", + "syntax_mode": "python", + "variants": [ + { + "key": "http.client", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "default": "Space", + "availableOptions": ["Tab", "Space"], + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + }, + { + "key": "Requests", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "r", + "label": "R", + "syntax_mode": "r", + "variants": [ + { + "key": "httr", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + } + ] + }, + { + "key": "RCurl", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Ignore warnings", + "id": "ignoreWarnings", + "type": "boolean", + "default": false, + "description": "Ignore warnings from R" + } + ] + } + ] + }, + { + "key": "ruby", + "label": "Ruby", + "syntax_mode": "ruby", + "variants": [ + { + "key": "Net::HTTP", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "shell", + "label": "Shell", + "syntax_mode": "powershell", + "variants": [ + { + "key": "Httpie", + "options": [ + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + } + ] + }, + { + "key": "wget", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + } + ] + } + ] + }, + { + "key": "swift", + "label": "Swift", + "syntax_mode": "swift", + "variants": [ + { + "key": "URLSession", + "options": [ + { + "name": "Set indentation count", + "id": "indentCount", + "type": "positiveInteger", + "default": 2, + "description": "Set the number of indentation characters to add per code level" + }, + { + "name": "Set indentation type", + "id": "indentType", + "type": "enum", + "availableOptions": ["Tab", "Space"], + "default": "Space", + "description": "Select the character used to indent lines of code" + }, + { + "name": "Set request timeout", + "id": "requestTimeout", + "type": "positiveInteger", + "default": 0, + "description": "Set number of milliseconds the request should wait for a response before timing out (use 0 for infinity)" + }, + { + "name": "Trim request body fields", + "id": "trimRequestBody", + "type": "boolean", + "default": false, + "description": "Remove white space and additional lines that may affect the server's response" + }, + { + "name": "Follow redirects", + "id": "followRedirect", + "type": "boolean", + "default": true, + "description": "Automatically follow HTTP redirects" + } + ] + } + ] + } +] diff --git a/src/theme/ApiExplorer/CodeSnippets/languages.ts b/src/theme/ApiExplorer/CodeSnippets/languages.ts new file mode 100644 index 000000000..916fa2f04 --- /dev/null +++ b/src/theme/ApiExplorer/CodeSnippets/languages.ts @@ -0,0 +1,68 @@ +import find from "lodash/find"; +import isArray from "lodash/isArray"; +import mergeWith from "lodash/mergeWith"; +import unionBy from "lodash/unionBy"; + +import { CodeSample, Language } from "./code-snippets-types"; + +export function mergeCodeSampleLanguage( + languages: Language[], + codeSamples: CodeSample[] +): Language[] { + return languages.map((language) => { + const languageCodeSamples = codeSamples.filter( + ({ lang }) => lang === language.codeSampleLanguage + ); + + if (languageCodeSamples.length) { + const samples = languageCodeSamples.map(({ lang }) => lang); + const samplesLabels = languageCodeSamples.map( + ({ label, lang }) => label || lang + ); + const samplesSources = languageCodeSamples.map(({ source }) => source); + + return { + ...language, + sample: samples[0], + samples, + samplesSources, + samplesLabels, + }; + } + + return language; + }); +} + +export const mergeArraysbyLanguage = (arr1: any, arr2: any) => { + const mergedArray = unionBy(arr1, arr2, "language"); + + return mergedArray.map((item: any) => { + const matchingItems = [ + find(arr1, ["language", item["language"]]), + find(arr2, ["language", item["language"]]), + ]; + return mergeWith({}, ...matchingItems, (objValue: any) => { + if (isArray(objValue)) { + return objValue; + } + return undefined; + }); + }); +}; + +export function getCodeSampleSourceFromLanguage(language: Language) { + if ( + language && + language.sample && + language.samples && + language.samplesSources + ) { + const sampleIndex = language.samples.findIndex( + (smp) => smp === language.sample + ); + return language.samplesSources[sampleIndex]; + } + + return ""; +} diff --git a/src/theme/ApiExplorer/CodeTabs/_CodeTabs.scss b/src/theme/ApiExplorer/CodeTabs/_CodeTabs.scss new file mode 100644 index 000000000..a734be72e --- /dev/null +++ b/src/theme/ApiExplorer/CodeTabs/_CodeTabs.scss @@ -0,0 +1,307 @@ +:root { + --bash-background-color: transparent; + --bash-border-radius: none; + --code-tab-logo-width: 24px; + --code-tab-logo-height: 24px; +} + +[data-theme="dark"] { + --bash-background-color: lightgrey; + --bash-border-radius: 20px; +} + +.openapi-tabs__code-container { + margin-bottom: 1rem; + + &:not(.openapi-tabs__code-container-inner) { + padding: 1rem; + background-color: var(--ifm-pre-background); + border-radius: var(--ifm-global-radius); + border: 1px solid var(--openapi-explorer-border-color); + box-shadow: + 0 2px 3px hsla(222, 8%, 43%, 0.1), + 0 8px 16px -10px hsla(222, 8%, 43%, 0.2); + transition: 300ms; + + &:hover { + box-shadow: + 0 0 0 2px rgba(38, 53, 61, 0.15), + 0 2px 3px hsla(222, 8%, 43%, 0.15), + 0 16px 16px -10px hsla(222, 8%, 43%, 0.2); + } + } + + .openapi-tabs__code-item { + display: flex; + flex-direction: column-reverse; + flex: 0 0 80px; + align-items: center; + padding: 0.5rem 0 !important; + margin-top: 0 !important; + margin-right: 0.5rem; + border: 1px solid transparent; + transition: 300ms; + + &:not(.active):hover { + border: 1px solid var(--openapi-code-tab-border-color); + } + + &:hover { + background-color: transparent; + } + + span { + padding-top: 0.5rem; + color: var(--ifm-font-color-secondary); + font-size: 10px; + text-transform: uppercase; + } + } +} + +.openapi-tabs__code-list-container { + display: flex; + justify-content: flex-start; + padding: 0.25rem; + padding-bottom: 0.6rem; +} + +.openapi-tabs__code-content { + margin-top: unset !important; +} + +.openapi-explorer__code-block code { + max-height: 200px; + font-size: var(--openapi-explorer-font-size-code); + padding-top: var(--ifm-pre-padding); +} + +body[class="ReactModal__Body--open"] { + .openapi-explorer__code-block code { + max-height: 600px; + } +} + +.openapi-tabs__code-item--variant { + color: var(--ifm-color-secondary); + + &.active { + border-color: var(--ifm-toc-border-color); + } +} + +.openapi-tabs__code-item--variant > span { + padding-top: unset !important; + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.openapi-tabs__code-item--sample { + color: var(--ifm-color-secondary); + + &.active { + border-color: var(--ifm-toc-border-color); + } +} + +.openapi-tabs__code-item--sample > span { + padding-top: unset !important; + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.openapi-tabs__code-item--python { + color: var(--ifm-color-success); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-python); + border-color: var(--openapi-code-tab-border-color-python); + } +} + +.openapi-tabs__code-item--go { + color: var(--ifm-color-info); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-go); + border-color: var(--openapi-code-tab-border-color-go); + } +} + +.openapi-tabs__code-item--javascript { + color: var(--ifm-color-warning); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-js); + border-color: var(--openapi-code-tab-border-color-js); + } +} + +.openapi-tabs__code-item--bash { + color: var(--ifm-color-danger); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg") + no-repeat; + margin-block: auto; + background-color: var(--bash-background-color); + border-radius: var(--bash-border-radius); + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-bash); + border-color: var(--ifm-color-danger); + } +} + +.openapi-tabs__code-item--ruby { + color: var(--ifm-color-danger); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-ruby); + border-color: var(--openapi-code-tab-border-color-ruby); + } +} + +.openapi-tabs__code-item--csharp { + color: var(--ifm-color-gray-500); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-csharp); + border-color: var(--openapi-code-tab-border-color-csharp); + } +} + +.openapi-tabs__code-item--nodejs { + color: var(--ifm-color-success); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-nodejs); + border-color: var(--openapi-code-tab-border-color-nodejs); + } +} + +.openapi-tabs__code-item--php { + color: var(--ifm-color-gray-500); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-php); + border-color: var(--openapi-code-tab-border-color-php); + } +} + +.openapi-tabs__code-item--java { + color: var(--ifm-color-warning); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-java); + border-color: var(--openapi-code-tab-border-color-java); + } +} + +.openapi-tabs__code-item--powershell { + color: var(--ifm-color-info); + + &::after { + content: ""; + width: var(--code-tab-logo-width); + height: var(--code-tab-logo-height); + background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg") + no-repeat; + margin-block: auto; + } + + &.active { + box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-powershell); + border-color: var(--openapi-code-tab-border-color-powershell); + } +} + +@media only screen and (min-width: 768px) and (max-width: 996px) { + .openapi-tabs__code-list { + justify-content: space-around; + } +} + +.ReactModal__Body--open { + overflow: hidden !important; +} + +.openapi-modal--open { + background-color: rgba(0, 0, 0, 0.7) !important; +} diff --git a/src/theme/ApiExplorer/CodeTabs/index.tsx b/src/theme/ApiExplorer/CodeTabs/index.tsx new file mode 100644 index 000000000..8454b4b85 --- /dev/null +++ b/src/theme/ApiExplorer/CodeTabs/index.tsx @@ -0,0 +1,206 @@ +import React, { cloneElement, ReactElement } from "react"; + +import { + sanitizeTabsChildren, + type TabProps, + useScrollPositionBlocker, + useTabs, +} from "@docusaurus/theme-common/internal"; +import { TabItemProps } from "@docusaurus/theme-common/lib/utils/tabsUtils"; +import useIsBrowser from "@docusaurus/useIsBrowser"; +import { Language } from "@theme/ApiExplorer/CodeSnippets"; +import clsx from "clsx"; + +export interface Props { + action: { + [key: string]: React.Dispatch; + }; + currentLanguage: Language; + languageSet: Language[]; + includeVariant: boolean; +} + +export interface CodeTabsProps extends Props, TabProps { + includeSample?: boolean; +} + +function TabList({ + action, + currentLanguage, + languageSet, + includeVariant, + includeSample, + className, + block, + selectedValue, + selectValue, + tabValues, +}: CodeTabsProps & ReturnType) { + const tabRefs: (HTMLLIElement | null)[] = []; + const { blockElementScrollPositionUntilNextRender } = + useScrollPositionBlocker(); + + const handleTabChange = ( + event: + | React.FocusEvent + | React.MouseEvent + | React.KeyboardEvent + ) => { + const newTab = event.currentTarget; + const newTabIndex = tabRefs.indexOf(newTab); + const newTabValue = tabValues[newTabIndex]!.value; + + if (newTabValue !== selectedValue) { + blockElementScrollPositionUntilNextRender(newTab); + selectValue(newTabValue); + } + + if (action) { + let newLanguage: Language; + if (currentLanguage && includeVariant) { + newLanguage = languageSet.filter( + (lang: Language) => lang.language === currentLanguage + )[0]; + newLanguage.variant = newTabValue; + action.setSelectedVariant(newTabValue.toLowerCase()); + } else if (currentLanguage && includeSample) { + newLanguage = languageSet.filter( + (lang: Language) => lang.language === currentLanguage + )[0]; + newLanguage.sample = newTabValue; + action.setSelectedSample(newTabValue); + } else { + newLanguage = languageSet.filter( + (lang: Language) => lang.language === newTabValue + )[0]; + action.setSelectedVariant(newLanguage.variant.toLowerCase()); + action.setSelectedSample(newLanguage.sample); + } + action.setLanguage(newLanguage); + } + }; + + const handleKeydown = (event: React.KeyboardEvent) => { + let focusElement: HTMLLIElement | null = null; + + switch (event.key) { + case "Enter": { + handleTabChange(event); + break; + } + case "ArrowRight": { + const nextTab = tabRefs.indexOf(event.currentTarget) + 1; + focusElement = tabRefs[nextTab] ?? tabRefs[0]!; + break; + } + case "ArrowLeft": { + const prevTab = tabRefs.indexOf(event.currentTarget) - 1; + focusElement = tabRefs[prevTab] ?? tabRefs[tabRefs.length - 1]!; + break; + } + default: + break; + } + + focusElement?.focus(); + }; + + return ( +
    + {tabValues.map(({ value, label, attributes }) => ( +
  • tabRefs.push(tabControl)} + onKeyDown={handleKeydown} + onClick={handleTabChange} + {...attributes} + className={clsx( + "tabs__item", + "openapi-tabs__code-item", + attributes?.className as string, + { + active: selectedValue === value, + } + )} + > + {label ?? value} +
  • + ))} +
+ ); +} + +function TabContent({ + lazy, + children, + selectedValue, +}: CodeTabsProps & ReturnType): React.JSX.Element | null { + const childTabs = (Array.isArray(children) ? children : [children]).filter( + Boolean + ) as ReactElement[]; + if (lazy) { + const selectedTabItem = childTabs.find( + (tabItem) => tabItem.props.value === selectedValue + ); + if (!selectedTabItem) { + // fail-safe or fail-fast? not sure what's best here + return null; + } + return cloneElement(selectedTabItem, { className: "margin-top--md" }); + } + return ( +
+ {childTabs.map((tabItem, i) => + cloneElement(tabItem, { + key: i, + hidden: tabItem.props.value !== selectedValue, + }) + )} +
+ ); +} + +function TabsComponent(props: CodeTabsProps & Props): React.JSX.Element { + const tabs = useTabs(props); + const { className } = props; + + return ( +
+ + +
+ ); +} + +export default function CodeTabs( + props: CodeTabsProps & Props +): React.JSX.Element { + const isBrowser = useIsBrowser(); + return ( + + {sanitizeTabsChildren(props.children)} + + ); +} diff --git a/src/theme/ApiExplorer/ContentType/index.tsx b/src/theme/ApiExplorer/ContentType/index.tsx new file mode 100644 index 000000000..ecc95b22a --- /dev/null +++ b/src/theme/ApiExplorer/ContentType/index.tsx @@ -0,0 +1,31 @@ +import React from "react"; + +import FormItem from "@theme/ApiExplorer/FormItem"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; + +import { setContentType } from "./slice"; + +function ContentType() { + const value = useTypedSelector((state: any) => state.contentType.value); + const options = useTypedSelector((state: any) => state.contentType.options); + const dispatch = useTypedDispatch(); + + if (options.length <= 1) { + return null; + } + + return ( + + ) => + dispatch(setContentType(e.target.value)) + } + /> + + ); +} + +export default ContentType; diff --git a/src/theme/ApiExplorer/ContentType/slice.ts b/src/theme/ApiExplorer/ContentType/slice.ts new file mode 100644 index 000000000..b0c3221a0 --- /dev/null +++ b/src/theme/ApiExplorer/ContentType/slice.ts @@ -0,0 +1,22 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; + +export interface State { + value: string; + options: string[]; +} + +const initialState: State = {} as any; + +export const slice = createSlice({ + name: "contentType", + initialState, + reducers: { + setContentType: (state, action: PayloadAction) => { + state.value = action.payload; + }, + }, +}); + +export const { setContentType } = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/Export/index.tsx b/src/theme/ApiExplorer/Export/index.tsx new file mode 100644 index 000000000..c8a201028 --- /dev/null +++ b/src/theme/ApiExplorer/Export/index.tsx @@ -0,0 +1,40 @@ +import React from "react"; + +import fileSaver from "file-saver"; + +const saveFile = (url: string) => { + let fileName; + if (url.endsWith("json") || url.endsWith("yaml") || url.endsWith("yml")) { + fileName = url.substring(url.lastIndexOf("/") + 1); + } + fileSaver.saveAs(url, fileName ? fileName : "openapi.txt"); +}; + +function Export({ url, proxy }: any) { + return ( + + ); +} + +export default Export; diff --git a/src/theme/ApiExplorer/FloatingButton/_FloatingButton.scss b/src/theme/ApiExplorer/FloatingButton/_FloatingButton.scss new file mode 100644 index 000000000..73c9627ce --- /dev/null +++ b/src/theme/ApiExplorer/FloatingButton/_FloatingButton.scss @@ -0,0 +1,27 @@ +.openapi-explorer__floating-btn { + position: relative; + + button { + position: relative; + background: var(--ifm-color-emphasis-900); + border: none; + border-radius: var(--ifm-global-radius); + color: var(--ifm-color-emphasis-100); + cursor: pointer; + padding: 0.4rem 0.5rem; + opacity: 0; + visibility: hidden; + transition: + opacity 0.2s ease-in-out, + visibility 0.2s ease-in-out, + bottom 0.2s ease-in-out; + position: absolute; + right: calc(var(--ifm-pre-padding) / 2); + } +} +.openapi-explorer__floating-btn:hover button, +.openapi-explorer__floating-btn:focus-visible button, +.openapi-explorer__floating-btn button:focus-visible { + visibility: visible; + opacity: 1; +} diff --git a/src/theme/ApiExplorer/FloatingButton/index.tsx b/src/theme/ApiExplorer/FloatingButton/index.tsx new file mode 100644 index 000000000..c1bef2ea5 --- /dev/null +++ b/src/theme/ApiExplorer/FloatingButton/index.tsx @@ -0,0 +1,22 @@ +import React from "react"; + +export interface Props { + label?: string; + onClick?: React.MouseEventHandler; + children?: React.ReactNode; +} + +function FloatingButton({ label, onClick, children }: Props) { + return ( +
+ {label && ( + + )} + {children} +
+ ); +} + +export default FloatingButton; diff --git a/src/theme/ApiExplorer/FormFileUpload/_FormFileUpload.scss b/src/theme/ApiExplorer/FormFileUpload/_FormFileUpload.scss new file mode 100644 index 000000000..0b0033c3b --- /dev/null +++ b/src/theme/ApiExplorer/FormFileUpload/_FormFileUpload.scss @@ -0,0 +1,72 @@ +.openapi-explorer__dropzone { + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + border: 2px dashed var(--openapi-monaco-border-color); + background-color: var(--openapi-input-background); + + width: 100%; + border-radius: 4px; + padding: var(--ifm-pre-padding); + font-size: var(--ifm-code-font-size); + + &:hover { + border: 2px dashed var(--ifm-color-primary); + background: linear-gradient( + var(--openapi-dropzone-hover-shim), + var(--openapi-dropzone-hover-shim) + ), + linear-gradient(var(--ifm-color-primary), var(--ifm-color-primary)); + + .openapi-explorer__dropzone-content { + color: var(--ifm-pre-color); + } + } +} + +.openapi-explorer__dropzone-hover { + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + border: 2px dashed var(--openapi-monaco-border-color); + background-color: var(--openapi-input-background); + width: 100%; + border-radius: 4px; + padding: var(--ifm-pre-padding); + font-size: var(--ifm-code-font-size); + border: 2px dashed var(--ifm-color-primary); + + background: linear-gradient( + var(--openapi-dropzone-hover-shim), + var(--openapi-dropzone-hover-shim) + ), + linear-gradient(var(--ifm-color-primary), var(--ifm-color-primary)); + + .openapi-explorer__dropzone-content { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + margin: var(--ifm-pre-padding) 0; + color: var(--ifm-pre-color); + } + + .openapi-explorer__file-name { + margin: 0 calc(var(--ifm-pre-padding) * 1.5); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + flex: 1; + } +} + +.openapi-explorer__dropzone-content { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + margin: var(--ifm-pre-padding) 0; + color: var(--openapi-dropzone-color); +} diff --git a/src/theme/ApiExplorer/FormFileUpload/index.tsx b/src/theme/ApiExplorer/FormFileUpload/index.tsx new file mode 100644 index 000000000..5d5831c44 --- /dev/null +++ b/src/theme/ApiExplorer/FormFileUpload/index.tsx @@ -0,0 +1,112 @@ +import React, { useState } from "react"; + +import FloatingButton from "@theme/ApiExplorer/FloatingButton"; +import MagicDropzone from "react-magic-dropzone"; + +type PreviewFile = { preview: string } & File; + +interface RenderPreviewProps { + file: PreviewFile; +} + +function RenderPreview({ file }: RenderPreviewProps) { + switch (file.type) { + case "image/png": + case "image/jpeg": + case "image/jpg": + case "image/svg+xml": + return ( + + ); + default: + return ( +
+ + + + +
{file.name}
+
+ ); + } +} + +export interface Props { + placeholder: string; + onChange?(file?: File): any; +} + +function FormFileUpload({ placeholder, onChange }: Props) { + const [hover, setHover] = useState(false); + const [file, setFile] = useState(); + + function setAndNotifyFile(file?: PreviewFile) { + setFile(file); + onChange?.(file); + } + + function handleDrop(accepted: PreviewFile[]) { + const [file] = accepted; + setAndNotifyFile(file); + setHover(false); + } + + return ( + + setHover(true)} + onDragLeave={() => setHover(false)} + multiple={false} + style={{ marginTop: "calc(var(--ifm-pre-padding) / 2)" }} + > + {file ? ( + <> + + + + ) : ( +
+ {placeholder} +
+ )} +
+
+ ); +} + +export default FormFileUpload; diff --git a/src/theme/ApiExplorer/FormItem/_FormItem.scss b/src/theme/ApiExplorer/FormItem/_FormItem.scss new file mode 100644 index 000000000..25b59053b --- /dev/null +++ b/src/theme/ApiExplorer/FormItem/_FormItem.scss @@ -0,0 +1,21 @@ +.openapi-explorer__form-item { + padding: var(--openapi-explorer-padding-input); + font-size: var(--openapi-explorer-font-size-input); + + &:first-child { + margin-top: 0; + } + + .required { + color: var(--openapi-required); + } +} + +.openapi-explorer__form-item-body-container { + padding: 0; +} + +.openapi-explorer__form-item-label { + font-family: var(--ifm-font-family-monospace); + font-weight: bold; +} diff --git a/src/theme/ApiExplorer/FormItem/index.tsx b/src/theme/ApiExplorer/FormItem/index.tsx new file mode 100644 index 000000000..992f6c605 --- /dev/null +++ b/src/theme/ApiExplorer/FormItem/index.tsx @@ -0,0 +1,26 @@ +import React from "react"; + +import clsx from "clsx"; + +export interface Props { + label?: string; + type?: string; + required?: boolean | undefined; + children?: React.ReactNode; + className?: string; +} + +function FormItem({ label, type, required, children, className }: Props) { + return ( +
+ {label && ( + + )} + {type && — {type}} + {required && required} +
{children}
+
+ ); +} + +export default FormItem; diff --git a/src/theme/ApiExplorer/FormMultiSelect/_FormMultiSelect.scss b/src/theme/ApiExplorer/FormMultiSelect/_FormMultiSelect.scss new file mode 100644 index 000000000..da855e0e9 --- /dev/null +++ b/src/theme/ApiExplorer/FormMultiSelect/_FormMultiSelect.scss @@ -0,0 +1,30 @@ +.openapi-explorer__multi-select-input { + width: 100%; + margin-top: calc(var(--ifm-pre-padding) / 2); + padding: 1rem; + border-radius: 4px; + border: 1px solid transparent; + background-color: var(--openapi-input-background); + outline: none; + font-size: var(--openapi-explorer-font-size-input); + color: var(--ifm-pre-color); + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + + &:focus { + border: 1px solid var(--openapi-input-border); + } + + &.error { + border: 1px solid var(--ifm-color-danger); + } + + option { + border-radius: 0.25rem; + color: var(--ifm-menu-color); + margin: 0.25rem 0; + padding: var(--ifm-menu-link-padding-vertical) + var(--ifm-menu-link-padding-horizontal); + } +} diff --git a/src/theme/ApiExplorer/FormMultiSelect/index.tsx b/src/theme/ApiExplorer/FormMultiSelect/index.tsx new file mode 100644 index 000000000..7678ab797 --- /dev/null +++ b/src/theme/ApiExplorer/FormMultiSelect/index.tsx @@ -0,0 +1,50 @@ +import React from "react"; + +import clsx from "clsx"; + +export interface Props { + value?: string; + options: string[]; + onChange?: React.ChangeEventHandler; + showErrors?: boolean; +} + +function FormMultiSelect({ value, options, onChange, showErrors }: Props) { + if (options.length === 0) { + return null; + } + + let height; + if (options.length < 6) { + const selectPadding = 12 * 2; + const rawHeight = options.length * 29; + const innerMargins = 4 * options.length - 1; + const outerMargins = 4 * 2; + const mysteryScroll = 1; + height = + rawHeight + innerMargins + outerMargins + selectPadding + mysteryScroll; + } + + return ( + + ); +} + +export default FormMultiSelect; diff --git a/src/theme/ApiExplorer/FormSelect/_FormSelect.scss b/src/theme/ApiExplorer/FormSelect/_FormSelect.scss new file mode 100644 index 000000000..86872613d --- /dev/null +++ b/src/theme/ApiExplorer/FormSelect/_FormSelect.scss @@ -0,0 +1,43 @@ +html[data-theme="dark"] .openapi-explorer__select-input { + margin-top: calc(var(--ifm-pre-padding) / 2); + background-color: var(--openapi-input-background); + border: none; + outline: none; + width: 100%; + color: var(--ifm-pre-color); + + border-radius: 4px; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + + background-image: url('data:image/svg+xml;charset=US-ASCII,'); + background-repeat: no-repeat; + background-position: right var(--ifm-pre-padding) top 50%; + background-size: auto auto; +} + +.openapi-explorer__select-input { + width: 100%; + margin-top: calc(var(--ifm-pre-padding) / 2); + padding: var(--openapi-explorer-padding-input); + border: none; + outline: none; + border-radius: 4px; + background-color: var(--openapi-input-background); + font-size: var(--openapi-explorer-font-size-input); + font-family: var(--ifm-font-family-monospace); + color: var(--ifm-pre-color); + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + + background-image: url('data:image/svg+xml;charset=US-ASCII,'); + background-repeat: no-repeat; + background-position: right var(--ifm-pre-padding) top 50%; + background-size: auto auto; + + &:focus { + box-shadow: inset 0px 0px 0px 2px var(--openapi-input-border); + } +} diff --git a/src/theme/ApiExplorer/FormSelect/index.tsx b/src/theme/ApiExplorer/FormSelect/index.tsx new file mode 100644 index 000000000..f1933674a --- /dev/null +++ b/src/theme/ApiExplorer/FormSelect/index.tsx @@ -0,0 +1,31 @@ +import React from "react"; + +export interface Props { + value?: string; + options?: string[]; + onChange?: React.ChangeEventHandler; +} + +function FormSelect({ value, options, onChange }: Props) { + if (!Array.isArray(options) || options.length === 0) { + return null; + } + + return ( + + ); +} + +export default FormSelect; diff --git a/src/theme/ApiExplorer/FormTextInput/_FormTextInput.scss b/src/theme/ApiExplorer/FormTextInput/_FormTextInput.scss new file mode 100644 index 000000000..8c02e92a9 --- /dev/null +++ b/src/theme/ApiExplorer/FormTextInput/_FormTextInput.scss @@ -0,0 +1,34 @@ +.openapi-explorer__form-item-input { + margin-top: calc(var(--ifm-pre-padding) / 2); + background-color: var(--openapi-input-background); + border: 1px solid transparent; + outline: none; + width: 100%; + color: var(--ifm-pre-color); + padding: var(--openapi-explorer-padding-input); + border-radius: 4px; + + &:hover { + border: 1px solid var(--ifm-toc-border-color); + } + + &:focus { + border: 1px solid var(--ifm-color-primary); + box-shadow: none; + } + + &.error { + border: 1px solid var(--openapi-required); + } +} + +.openapi-explorer__input-error { + font-size: var(--openapi-explorer-font-size-input); + color: var(--openapi-required); + padding-top: var(--openapi-explorer-padding-input); + + &::before { + display: inline; + content: "⚠ "; + } +} diff --git a/src/theme/ApiExplorer/FormTextInput/index.tsx b/src/theme/ApiExplorer/FormTextInput/index.tsx new file mode 100644 index 000000000..e70736e06 --- /dev/null +++ b/src/theme/ApiExplorer/FormTextInput/index.tsx @@ -0,0 +1,73 @@ +// @ts-nocheck +import React from "react"; + +import { ErrorMessage } from "@hookform/error-message"; +import clsx from "clsx"; +import { useFormContext } from "react-hook-form"; + +export interface Props { + value?: string; + placeholder?: string; + password?: boolean; + onChange?: React.ChangeEventHandler; +} + +function FormTextInput({ + isRequired, + value, + placeholder, + password, + onChange, + paramName, +}: Props) { + placeholder = placeholder?.split("\n")[0]; + + const { + register, + formState: { errors }, + } = useFormContext(); + + const showErrorMessage = errors?.[paramName]?.message; + + return ( + <> + {paramName ? ( + + ) : ( + + )} + {showErrorMessage && ( + ( +
{message}
+ )} + /> + )} + + ); +} + +export default FormTextInput; diff --git a/src/theme/ApiExplorer/LiveEditor/_LiveEditor.scss b/src/theme/ApiExplorer/LiveEditor/_LiveEditor.scss new file mode 100644 index 000000000..9dd7393c0 --- /dev/null +++ b/src/theme/ApiExplorer/LiveEditor/_LiveEditor.scss @@ -0,0 +1,15 @@ +.openapi-explorer__playground-container { + margin-top: 1rem; + margin-bottom: var(--ifm-leading); + border-radius: var(--ifm-global-radius); + box-shadow: var(--ifm-global-shadow-lw); + overflow: auto; + max-height: 500px; +} + +.openapi-explorer__playground-editor { + font: var(--ifm-code-font-size) / var(--ifm-pre-line-height) + var(--ifm-font-family-monospace) !important; + /* rtl:ignore */ + direction: ltr; +} diff --git a/src/theme/ApiExplorer/LiveEditor/index.tsx b/src/theme/ApiExplorer/LiveEditor/index.tsx new file mode 100644 index 000000000..deab9e833 --- /dev/null +++ b/src/theme/ApiExplorer/LiveEditor/index.tsx @@ -0,0 +1,105 @@ +import React, { useEffect, useState } from "react"; + +import { usePrismTheme } from "@docusaurus/theme-common"; +import useIsBrowser from "@docusaurus/useIsBrowser"; +import { ErrorMessage } from "@hookform/error-message"; +import { setStringRawBody } from "@theme/ApiExplorer/Body/slice"; +import clsx from "clsx"; +import { Controller, useFormContext } from "react-hook-form"; +import { LiveProvider, LiveEditor, withLive } from "react-live"; + +function Live({ onEdit, showErrors }: any) { + const isBrowser = useIsBrowser(); + const [editorDisabled, setEditorDisabled] = useState(false); + + return ( +
setEditorDisabled(false)} + onBlur={() => setEditorDisabled(true)} + > + +
+ ); +} + +const LiveComponent = withLive(Live); + +function App({ + children, + transformCode, + value, + language, + action, + required: isRequired, + ...props +}: any): JSX.Element { + const prismTheme = usePrismTheme(); + const [code, setCode] = React.useState(children); + + useEffect(() => { + action(setStringRawBody(code)); + }, [action, code]); + + const { + control, + formState: { errors }, + } = useFormContext(); + + const showErrorMessage = errors?.requestBody; + + const handleChange = (snippet: string, onChange: any) => { + setCode(snippet); + onChange(snippet); + }; + + return ( +
+ `${code};`)} + theme={prismTheme} + language={language} + {...props} + > + ( + handleChange(e, onChange)} + name={name} + showErrors={showErrorMessage} + /> + )} + /> + {showErrorMessage && ( + ( +
{message}
+ )} + /> + )} +
+
+ ); +} + +const LiveApp = withLive(App); +export default LiveApp; diff --git a/src/theme/ApiExplorer/MethodEndpoint/_MethodEndpoint.scss b/src/theme/ApiExplorer/MethodEndpoint/_MethodEndpoint.scss new file mode 100644 index 000000000..9d22e85f0 --- /dev/null +++ b/src/theme/ApiExplorer/MethodEndpoint/_MethodEndpoint.scss @@ -0,0 +1,22 @@ +.openapi__method-endpoint { + display: flex; + align-items: center; + max-width: 100%; + width: fit-content; + padding: 0.65rem; + border: 1px solid var(--ifm-toc-border-color); +} + +.openapi__method-endpoint-path { + margin-bottom: 0; + margin-left: 0.5rem; + font-size: 12px; + font-weight: normal; + font-family: var(--ifm-font-family-monospace); +} + +.openapi__divider { + width: 100%; + margin: 1.5rem 0; + border-bottom: 1px solid var(--ifm-toc-border-color); +} diff --git a/src/theme/ApiExplorer/MethodEndpoint/index.tsx b/src/theme/ApiExplorer/MethodEndpoint/index.tsx new file mode 100644 index 000000000..b797f0641 --- /dev/null +++ b/src/theme/ApiExplorer/MethodEndpoint/index.tsx @@ -0,0 +1,80 @@ +import React from "react"; + +import BrowserOnly from "@docusaurus/BrowserOnly"; + +import { useTypedSelector } from "@theme/ApiItem/hooks"; + +function colorForMethod(method: string) { + switch (method.toLowerCase()) { + case "get": + return "primary"; + case "post": + return "success"; + case "delete": + return "danger"; + case "put": + return "info"; + case "patch": + return "warning"; + case "head": + return "secondary"; + case "event": + return "secondary"; + default: + return undefined; + } +} + +export interface Props { + method: string; + path: string; +} + +function MethodEndpoint({ method, path }: Props) { + let serverValue = useTypedSelector((state: any) => state.server.value); + let serverUrlWithVariables = ""; + + const renderServerUrl = () => { + if (serverValue && serverValue.variables) { + serverUrlWithVariables = serverValue.url.replace(/\/$/, ""); + + Object.keys(serverValue.variables).forEach((variable) => { + serverUrlWithVariables = serverUrlWithVariables.replace( + `{${variable}}`, + serverValue.variables?.[variable].default ?? "" + ); + }); + } + + return ( + + {() => { + if (serverUrlWithVariables.length) { + return serverUrlWithVariables; + } else if (serverValue && serverValue.url) { + return serverValue.url; + } + }} + + ); + }; + + return ( + <> +
+        
+          {method === "event" ? "Webhook" : method.toUpperCase()}
+        {" "}
+        {method !== "event" && (
+          

+ {renderServerUrl()} + {`${path.replace(/{([a-z0-9-_]+)}/gi, ":$1")}`} +

+ )} +
+
+ + ); +} + +export default MethodEndpoint; diff --git a/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx new file mode 100644 index 000000000..c3197dfc3 --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx @@ -0,0 +1,149 @@ +import React, { useEffect, useState } from "react"; + +import { ErrorMessage } from "@hookform/error-message"; +import { nanoid } from "@reduxjs/toolkit"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import FormTextInput from "@theme/ApiExplorer/FormTextInput"; +import { Param, setParam } from "@theme/ApiExplorer/ParamOptions/slice"; +import { useTypedDispatch } from "@theme/ApiItem/hooks"; +import { Controller, useFormContext } from "react-hook-form"; + +export interface ParamProps { + param: Param; +} + +function ArrayItem({ + param, + onChange, +}: ParamProps & { onChange(value?: string): any }) { + if (param.schema?.items?.type === "boolean") { + return ( + ) => { + const val = e.target.value; + onChange(val === "---" ? undefined : val); + }} + /> + ); + } + + return ( + ) => { + onChange(e.target.value); + }} + /> + ); +} + +export default function ParamArrayFormItem({ param }: ParamProps) { + const [items, setItems] = useState<{ id: string; value?: string }[]>([]); + const dispatch = useTypedDispatch(); + + const { + control, + formState: { errors }, + } = useFormContext(); + + const showErrorMessage = errors?.paramArray?.message; + + function handleAddItem() { + setItems((i) => [ + ...i, + { + id: nanoid(), + }, + ]); + } + + useEffect(() => { + const values = items + .map((item) => item.value) + .filter((item): item is string => !!item); + + dispatch( + setParam({ + ...param, + value: values.length > 0 ? values : undefined, + }) + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [items]); + + function handleDeleteItem(itemToDelete: { id: string }) { + return () => { + const newItems = items.filter((i) => i.id !== itemToDelete.id); + setItems(newItems); + }; + } + + function handleChangeItem(itemToUpdate: { id: string }, onChange: any) { + return (value: string) => { + const newItems = items.map((i) => { + if (i.id === itemToUpdate.id) { + return { ...i, value: value }; + } + return i; + }); + setItems(newItems); + onChange(newItems); + }; + } + + return ( + <> + ( + <> + {items.map((item) => ( +
+ + +
+ ))} + + + )} + /> + {showErrorMessage && ( + ( +
{message}
+ )} + /> + )} + + ); +} diff --git a/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx new file mode 100644 index 000000000..df898a449 --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx @@ -0,0 +1,57 @@ +import React from "react"; + +import { ErrorMessage } from "@hookform/error-message"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import { Param, setParam } from "@theme/ApiExplorer/ParamOptions/slice"; +import { useTypedDispatch } from "@theme/ApiItem/hooks"; +import { Controller, useFormContext } from "react-hook-form"; + +export interface ParamProps { + param: Param; +} + +export default function ParamBooleanFormItem({ param }: ParamProps) { + const dispatch = useTypedDispatch(); + + const { + control, + formState: { errors }, + } = useFormContext(); + + const showErrorMessage = errors?.paramBoolean; + + return ( + <> + ( + ) => { + const val = e.target.value; + dispatch( + setParam({ + ...param, + value: val === "---" ? undefined : val, + }) + ); + onChange(val); + }} + /> + )} + /> + {showErrorMessage && ( + ( +
{message}
+ )} + /> + )} + + ); +} diff --git a/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx new file mode 100644 index 000000000..7a70f470d --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx @@ -0,0 +1,79 @@ +import React from "react"; + +import { ErrorMessage } from "@hookform/error-message"; +import FormMultiSelect from "@theme/ApiExplorer/FormMultiSelect"; +import { Param, setParam } from "@theme/ApiExplorer/ParamOptions/slice"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; +import { Controller, useFormContext } from "react-hook-form"; + +export interface ParamProps { + param: Param; +} + +export default function ParamMultiSelectFormItem({ param }: ParamProps) { + const { + control, + formState: { errors }, + } = useFormContext(); + + const showErrorMessage = errors?.paramMultiSelect; + + const dispatch = useTypedDispatch(); + + const options = param.schema?.items?.enum ?? []; + + const pathParams = useTypedSelector((state: any) => state.params.path); + const queryParams = useTypedSelector((state: any) => state.params.query); + const cookieParams = useTypedSelector((state: any) => state.params.cookie); + const headerParams = useTypedSelector((state: any) => state.params.header); + + const paramTypeToWatch = pathParams.length + ? pathParams + : queryParams.length + ? queryParams + : cookieParams.length + ? cookieParams + : headerParams; + + const handleChange = (e: any, onChange: any) => { + const values = Array.prototype.filter + .call(e.target.options, (o) => o.selected) + .map((o) => o.value); + + dispatch( + setParam({ + ...param, + value: values.length > 0 ? values : undefined, + }) + ); + + onChange(paramTypeToWatch); + }; + + return ( + <> + ( + handleChange(e, onChange)} + showErrors={showErrorMessage} + /> + )} + /> + {showErrorMessage && ( + ( +
{message}
+ )} + /> + )} + + ); +} diff --git a/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx new file mode 100644 index 000000000..ef07502ee --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx @@ -0,0 +1,58 @@ +import React from "react"; + +import { ErrorMessage } from "@hookform/error-message"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import { Param, setParam } from "@theme/ApiExplorer/ParamOptions/slice"; +import { useTypedDispatch } from "@theme/ApiItem/hooks"; +import { Controller, useFormContext } from "react-hook-form"; + +export interface ParamProps { + param: Param; +} + +export default function ParamSelectFormItem({ param }: ParamProps) { + const { + control, + formState: { errors }, + } = useFormContext(); + + const showErrorMessage = errors?.paramSelect; + + const dispatch = useTypedDispatch(); + + const options = param.schema?.enum ?? []; + + return ( + <> + ( + ) => { + const val = e.target.value; + dispatch( + setParam({ + ...param, + value: val === "---" ? undefined : val, + }) + ); + onChange(val); + }} + /> + )} + /> + {showErrorMessage && ( + ( +
{message}
+ )} + /> + )} + + ); +} diff --git a/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx new file mode 100644 index 000000000..bf4f35e72 --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx @@ -0,0 +1,31 @@ +import React from "react"; + +import FormTextInput from "@theme/ApiExplorer/FormTextInput"; +import { Param, setParam } from "@theme/ApiExplorer/ParamOptions/slice"; +import { useTypedDispatch } from "@theme/ApiItem/hooks"; + +export interface ParamProps { + param: Param; +} + +export default function ParamTextFormItem({ param }: ParamProps) { + const dispatch = useTypedDispatch(); + return ( + ) => + dispatch( + setParam({ + ...param, + value: + param.in === "path" || param.in === "query" + ? e.target.value.replace(/\s/g, "%20") + : e.target.value, + }) + ) + } + /> + ); +} diff --git a/src/theme/ApiExplorer/ParamOptions/_ParamOptions.scss b/src/theme/ApiExplorer/ParamOptions/_ParamOptions.scss new file mode 100644 index 000000000..e90d5af2a --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/_ParamOptions.scss @@ -0,0 +1,123 @@ +.openapi-explorer__plus-btn--expanded { + transition: transform 0.2s ease; + display: inline-block; + transform: rotate(0deg); + transform-origin: center; + margin-right: 6px; + transform: rotate(45deg); +} + +.openapi-explorer__show-more-btn { + width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin-left: 0.25rem; + margin-bottom: 0.5rem; + padding: 0; + cursor: pointer; + font-size: var(--openapi-explorer-font-size-input); + user-select: none; + white-space: nowrap; + border: 0px solid transparent; + display: block; + background-color: transparent; + color: var(--ifm-color-primary); + text-align: left; + + &:hover { + color: var(--ifm-color-primary-hover); + } + + &:first-child { + margin-top: 0; + } +} + +.openapi-explorer__delete-btn { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + + cursor: pointer; + font-size: calc(0.875rem * var(--ifm-button-size-multiplier)); + font-weight: normal; + line-height: 1.5; + + transition-property: color, background, border-color, box-shadow; + transition-duration: 100ms, 100ms, 100ms, + var(--ifm-button-transition-duration); + transition-timing-function: cubic-bezier(0.08, 0.52, 0.52, 1); + + -webkit-user-select: none; + user-select: none; + white-space: nowrap; + + display: flex; + + align-items: center; + justify-content: center; + + padding: 0 12px; + + margin-top: calc(var(--ifm-pre-padding) / 2); + background-color: var(--openapi-input-background); + border: none; + outline: none; + color: var(--ifm-pre-color); + border-radius: 4px; + margin-left: 4px; + + &:focus { + outline: 0; + } + + &:active { + box-shadow: inset 0px 0px 0px 2px var(--openapi-input-border); + } +} + +.openapi-explorer__thin-btn { + -webkit-appearance: none; + -moz-appearance: none; + cursor: pointer; + font-weight: bold; + padding: 0.5rem 1rem; + font-size: 12px; + transition-property: color, background, border-color, box-shadow; + transition-duration: 100ms, 100ms, 100ms, + var(--ifm-button-transition-duration); + transition-timing-function: cubic-bezier(0.08, 0.52, 0.52, 1); + user-select: none; + white-space: nowrap; + background-color: transparent; + color: var(--openapi-input-border); + border: 1px solid var(--openapi-input-border); + border-radius: var(--ifm-pre-border-radius); + margin-top: calc(var(--ifm-pre-padding) / 2); + text-transform: uppercase; + + &:hover { + color: var(--openapi-inverse-color); + background-color: var(--openapi-input-border); + } + + &:focus { + outline: 0; + } + + &:active { + box-shadow: + inset 0 0 0 1px var(--openapi-input-border), + inset 0 0 0 2px var(--openapi-inverse-color); + } +} + +.openapi-explorer__show-options { + visibility: visible; +} + +.openapi-explorer__hide-options { + display: none; + visibility: hidden; +} diff --git a/src/theme/ApiExplorer/ParamOptions/index.tsx b/src/theme/ApiExplorer/ParamOptions/index.tsx new file mode 100644 index 000000000..22eb65846 --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/index.tsx @@ -0,0 +1,138 @@ +import React, { useState } from "react"; + +import FormItem from "@theme/ApiExplorer/FormItem"; +import ParamArrayFormItem from "@theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem"; +import ParamBooleanFormItem from "@theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem"; +import ParamMultiSelectFormItem from "@theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem"; +import ParamSelectFormItem from "@theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem"; +import ParamTextFormItem from "@theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem"; +import { useTypedSelector } from "@theme/ApiItem/hooks"; + +import { Param } from "./slice"; + +export interface ParamProps { + param: Param; +} + +function ParamOption({ param }: ParamProps) { + if (param.schema?.type === "array" && param.schema.items?.enum) { + return ; + } + + if (param.schema?.type === "array") { + return ; + } + + if (param.schema?.enum) { + return ; + } + + if (param.schema?.type === "boolean") { + return ; + } + + // integer, number, string, int32, int64, float, double, object, byte, binary, + // date-time, date, password + return ; +} + +function ParamOptionWrapper({ param }: ParamProps) { + return ( + + + + ); +} + +function ParamOptions() { + const [showOptional, setShowOptional] = useState(false); + + const pathParams = useTypedSelector((state: any) => state.params.path); + const queryParams = useTypedSelector((state: any) => state.params.query); + const cookieParams = useTypedSelector((state: any) => state.params.cookie); + const headerParams = useTypedSelector((state: any) => state.params.header); + + const allParams = [ + ...pathParams, + ...queryParams, + ...cookieParams, + ...headerParams, + ]; + + const requiredParams = allParams.filter((p) => p.required); + const optionalParams = allParams.filter((p) => !p.required); + + return ( + <> + {/* Required Parameters */} + {requiredParams.map((param) => ( + + ))} + + {/* Optional Parameters */} + {optionalParams.length > 0 && ( + <> + + +
+ {optionalParams.map((param) => ( + + ))} +
+ + )} + + ); +} + +export default ParamOptions; diff --git a/src/theme/ApiExplorer/ParamOptions/slice.ts b/src/theme/ApiExplorer/ParamOptions/slice.ts new file mode 100644 index 000000000..52c8a72e5 --- /dev/null +++ b/src/theme/ApiExplorer/ParamOptions/slice.ts @@ -0,0 +1,30 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; + +export type Param = ParameterObject & { value?: string[] | string }; + +export interface State { + path: Param[]; + query: Param[]; + header: Param[]; + cookie: Param[]; +} + +const initialState: State = {} as any; + +export const slice = createSlice({ + name: "params", + initialState, + reducers: { + setParam: (state, action: PayloadAction) => { + const newParam = action.payload; + const paramGroup = state[action.payload.in]; + const index = paramGroup.findIndex((p) => p.name === newParam.name); + paramGroup[index] = newParam; + }, + }, +}); + +export const { setParam } = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/Request/_Request.scss b/src/theme/ApiExplorer/Request/_Request.scss new file mode 100644 index 000000000..80e9f0c42 --- /dev/null +++ b/src/theme/ApiExplorer/Request/_Request.scss @@ -0,0 +1,124 @@ +.openapi-explorer__request-form { + background-color: var(--ifm-pre-background); + border-radius: var(--openapi-card-border-radius); + border: 1px solid var(--openapi-explorer-border-color); + box-shadow: + 0 2px 3px hsla(222, 8%, 43%, 0.1), + 0 8px 16px -10px hsla(222, 8%, 43%, 0.2); + color: var(--ifm-pre-color); + line-height: var(--ifm-pre-line-height); + margin-bottom: var(--ifm-spacing-vertical); + margin-top: 0; + overflow: auto; + transition: 300ms; + + /* hack for view calculation when monaco is hidden */ + position: relative; + + &:empty { + display: none; + } + + &:hover { + box-shadow: + 0 0 0 2px rgba(38, 53, 61, 0.15), + 0 2px 3px hsla(222, 8%, 43%, 0.15), + 0 16px 16px -10px hsla(222, 8%, 43%, 0.2); + } + + .required { + font-size: var(--ifm-code-font-size); + color: var(--openapi-required); + + &.request-body { + padding-left: 0.25rem; + } + } +} + +.openapi-explorer__request-header-container { + display: flex; + justify-content: space-between; + border-bottom: 1px solid var(--openapi-explorer-border-color); + margin: 0; + padding: 0.75rem var(--ifm-pre-padding); + text-transform: uppercase; + font-size: 12px; + font-weight: bold; +} + +.openapi-explorer__expand-details-btn { + &:hover { + cursor: pointer; + } +} + +.openapi-explorer__details-outer-container { + padding: 1rem; +} + +.openapi-explorer__details-container[open] { + .openapi-explorer__details-summary::before { + transform: rotate(180deg); + margin-top: 0.25rem; + } +} + +.openapi-explorer__details-summary { + display: inline-flex; + align-items: center; + padding: 0.35rem 0; + font-size: 14px; + list-style: none; + + &:hover { + cursor: pointer; + } + + &::-webkit-details-marker { + display: none; + } + + &::before { + margin-right: 0.25rem; + margin-bottom: 0.25rem; + margin-top: 0.25rem; + background-image: var(--openapi-explorer-caret-bg); + border: none !important; + transform: rotate(90deg); + content: ""; + height: 1rem; + width: 1rem; + } +} + +.openapi-explorer__request-btn { + border: none; + border-radius: var(--ifm-global-radius); + padding: 0.5rem 1rem; + margin-top: 1rem; + background-color: var(--ifm-color-primary-light); + text-transform: uppercase; + font-weight: bold; + font-size: 12px; + color: white; + cursor: pointer; + transition: 300ms; + + &:hover { + background-color: var(--ifm-color-primary-lightest); + } + + &:active { + background-color: var(--ifm-color-primary-light); + } +} + +// Prevent auto zoom on mobile iOS devices when focusing on input elmenents +@media screen and (-webkit-min-device-pixel-ratio: 0) and (max-device-width: 1024px) { + .prism-code, + select, + input { + font-size: 1rem; + } +} diff --git a/src/theme/ApiExplorer/Request/index.tsx b/src/theme/ApiExplorer/Request/index.tsx new file mode 100644 index 000000000..847afdaf9 --- /dev/null +++ b/src/theme/ApiExplorer/Request/index.tsx @@ -0,0 +1,279 @@ +// @ts-nocheck +import React, { useState } from "react"; + +import { useDoc } from "@docusaurus/theme-common/internal"; +import Accept from "@theme/ApiExplorer/Accept"; +import Authorization from "@theme/ApiExplorer/Authorization"; +import Body from "@theme/ApiExplorer/Body"; +import buildPostmanRequest from "@theme/ApiExplorer/buildPostmanRequest"; +import ContentType from "@theme/ApiExplorer/ContentType"; +import ParamOptions from "@theme/ApiExplorer/ParamOptions"; +import { + setResponse, + setCode, + clearCode, + setHeaders, + clearHeaders, +} from "@theme/ApiExplorer/Response/slice"; +import Server from "@theme/ApiExplorer/Server"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; +import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import sdk from "postman-collection"; +import { FormProvider, useForm } from "react-hook-form"; + +import makeRequest from "./makeRequest"; + +function Request({ item }: { item: NonNullable }) { + const postman = new sdk.Request(item.postman); + const metadata = useDoc(); + const { proxy, hide_send_button: hideSendButton } = metadata.frontMatter; + + const pathParams = useTypedSelector((state: any) => state.params.path); + const queryParams = useTypedSelector((state: any) => state.params.query); + const cookieParams = useTypedSelector((state: any) => state.params.cookie); + const contentType = useTypedSelector((state: any) => state.contentType.value); + const headerParams = useTypedSelector((state: any) => state.params.header); + const body = useTypedSelector((state: any) => state.body); + const accept = useTypedSelector((state: any) => state.accept.value); + const acceptOptions = useTypedDispatch((state: any) => state.accept.options); + const authSelected = useTypedSelector((state: any) => state.auth.selected); + const server = useTypedSelector((state: any) => state.server.value); + const serverOptions = useTypedSelector((state: any) => state.server.options); + const auth = useTypedSelector((state: any) => state.auth); + const dispatch = useTypedDispatch(); + + const [expandAccept, setExpandAccept] = useState(true); + const [expandAuth, setExpandAuth] = useState(true); + const [expandBody, setExpandBody] = useState(true); + const [expandParams, setExpandParams] = useState(true); + const [expandServer, setExpandServer] = useState(true); + + const allParams = [ + ...pathParams, + ...queryParams, + ...cookieParams, + ...headerParams, + ]; + + const postmanRequest = buildPostmanRequest(postman, { + queryParams, + pathParams, + cookieParams, + contentType, + accept, + headerParams, + body, + server, + auth, + }); + + const delay = (ms: number) => + new Promise((resolve) => setTimeout(resolve, ms)); + + const paramsObject = { + path: [] as ParameterObject[], + query: [] as ParameterObject[], + header: [] as ParameterObject[], + cookie: [] as ParameterObject[], + }; + + item.parameters?.forEach( + (param: { in: "path" | "query" | "header" | "cookie" }) => { + const paramType = param.in; + const paramsArray: ParameterObject[] = paramsObject[paramType]; + paramsArray.push(param as ParameterObject); + } + ); + + const methods = useForm({ shouldFocusError: false }); + + const onSubmit = async (data) => { + dispatch(setResponse("Fetching...")); + try { + await delay(1200); + const res = await makeRequest(postmanRequest, proxy, body); + dispatch(setResponse(await res.text())); + dispatch(setCode(res.status)); + res.headers && dispatch(setHeaders(Object.fromEntries(res.headers))); + } catch (e: any) { + console.log(e); + dispatch(setResponse("Connection failed")); + dispatch(clearCode()); + dispatch(clearHeaders()); + } + }; + + const showServerOptions = serverOptions.length > 0; + const showAcceptOptions = acceptOptions.length > 1; + const showRequestBody = contentType !== undefined; + const showRequestButton = item.servers && !hideSendButton; + const showAuth = authSelected !== undefined; + const showParams = allParams.length > 0; + const requestBodyRequired = item.requestBody?.required; + + if ( + !showAcceptOptions && + !showAuth && + !showParams && + !showRequestBody && + !showServerOptions + ) { + return null; + } + + const expandAllDetails = () => { + setExpandAccept(true); + setExpandAuth(true); + setExpandBody(true); + setExpandParams(true); + setExpandServer(true); + }; + + const collapseAllDetails = () => { + setExpandAccept(false); + setExpandAuth(false); + setExpandBody(false); + setExpandParams(false); + setExpandServer(false); + }; + + const allDetailsExpanded = + expandParams && expandBody && expandServer && expandAuth && expandAccept; + + return ( + +
+
+ Request + {allDetailsExpanded ? ( + + Collapse all + + ) : ( + + Expand all + + )} +
+
+ {showServerOptions && item.method !== "event" && ( +
+ { + e.preventDefault(); + setExpandServer(!expandServer); + }} + > + Base URL + + +
+ )} + {showAuth && ( +
+ { + e.preventDefault(); + setExpandAuth(!expandAuth); + }} + > + Auth + + +
+ )} + {showParams && ( +
+ { + e.preventDefault(); + setExpandParams(!expandParams); + }} + > + Parameters + + +
+ )} + {showRequestBody && ( +
+ { + e.preventDefault(); + setExpandBody(!expandBody); + }} + > + Body + {requestBodyRequired && ( + +  required + + )} + + <> + + + +
+ )} + {showAcceptOptions && ( +
+ { + e.preventDefault(); + setExpandAccept(!expandAccept); + }} + > + Accept + + +
+ )} + {showRequestButton && item.method !== "event" && ( + + )} +
+
+
+ ); +} + +export default Request; diff --git a/src/theme/ApiExplorer/Request/makeRequest.ts b/src/theme/ApiExplorer/Request/makeRequest.ts new file mode 100644 index 000000000..d833daa0b --- /dev/null +++ b/src/theme/ApiExplorer/Request/makeRequest.ts @@ -0,0 +1,247 @@ +import { Body } from "@theme/ApiExplorer/Body/slice"; +import sdk from "postman-collection"; + +function fetchWithtimeout( + url: string, + options: RequestInit, + timeout = 5000 +): any { + return Promise.race([ + fetch(url, options), + new Promise((_, reject) => + setTimeout(() => reject(new Error("Request timed out")), timeout) + ), + ]); +} + +async function loadImage(content: Blob): Promise { + return new Promise((accept, reject) => { + const reader = new FileReader(); + + reader.onabort = () => { + console.log("file reading was aborted"); + reject(); + }; + + reader.onerror = () => { + console.log("file reading has failed"); + reject(); + }; + + reader.onload = () => { + // Do whatever you want with the file contents + const binaryStr = reader.result; + accept(binaryStr); + }; + reader.readAsArrayBuffer(content); + }); +} + +async function makeRequest( + request: sdk.Request, + proxy: string | undefined, + _body: Body +) { + const headers = request.toJSON().header; + + let myHeaders = new Headers(); + if (headers) { + headers.forEach((header: any) => { + if (header.key && header.value) { + myHeaders.append(header.key, header.value); + } + }); + } + + // The following code handles multiple files in the same formdata param. + // It removes the form data params where the src property is an array of filepath strings + // Splits that array into different form data params with src set as a single filepath string + // TODO: + // if (request.body && request.body.mode === 'formdata') { + // let formdata = request.body.formdata, + // formdataArray = []; + // formdata.members.forEach((param) => { + // let key = param.key, + // type = param.type, + // disabled = param.disabled, + // contentType = param.contentType; + // // check if type is file or text + // if (type === 'file') { + // // if src is not of type string we check for array(multiple files) + // if (typeof param.src !== 'string') { + // // if src is an array(not empty), iterate over it and add files as separate form fields + // if (Array.isArray(param.src) && param.src.length) { + // param.src.forEach((filePath) => { + // addFormParam( + // formdataArray, + // key, + // param.type, + // filePath, + // disabled, + // contentType + // ); + // }); + // } + // // if src is not an array or string, or is an empty array, add a placeholder for file path(no files case) + // else { + // addFormParam( + // formdataArray, + // key, + // param.type, + // '/path/to/file', + // disabled, + // contentType + // ); + // } + // } + // // if src is string, directly add the param with src as filepath + // else { + // addFormParam( + // formdataArray, + // key, + // param.type, + // param.src, + // disabled, + // contentType + // ); + // } + // } + // // if type is text, directly add it to formdata array + // else { + // addFormParam( + // formdataArray, + // key, + // param.type, + // param.value, + // disabled, + // contentType + // ); + // } + // }); + // request.body.update({ + // mode: 'formdata', + // formdata: formdataArray, + // }); + // } + + const body = request.body?.toJSON(); + + let myBody: RequestInit["body"] = undefined; + if (body !== undefined && Object.keys(body).length > 0) { + switch (body.mode) { + case "urlencoded": { + myBody = new URLSearchParams(); + if (Array.isArray(body.urlencoded)) { + for (const data of body.urlencoded) { + if (data.key && data.value) { + myBody.append(data.key, data.value); + } + } + } + break; + } + case "raw": { + myBody = (body.raw ?? "").toString(); + break; + } + case "formdata": { + // The Content-Type header will be set automatically based on the type of body. + myHeaders.delete("Content-Type"); + + myBody = new FormData(); + if (Array.isArray(request.body.formdata.members)) { + for (const data of request.body.formdata.members) { + if (data.key && data.value.content) { + myBody.append(data.key, data.value.content); + } + // handle generic key-value payload + if (data.key && typeof data.value === "string") { + myBody.append(data.key, data.value); + } + } + } + break; + } + case "file": { + if (_body.type === "raw" && _body.content?.type === "file") { + myBody = await loadImage(_body.content.value.content); + } + break; + } + default: + break; + } + } + + const requestOptions: RequestInit = { + method: request.method, + headers: myHeaders, + body: myBody, + }; + + let finalUrl = request.url.toString(); + if (proxy) { + // Ensure the proxy ends with a slash. + let normalizedProxy = proxy.replace(/\/$/, "") + "/"; + finalUrl = normalizedProxy + request.url.toString(); + } + + return fetchWithtimeout(finalUrl, requestOptions).then((response: any) => { + const contentType = response.headers.get("content-type"); + let fileExtension = ""; + + if (contentType) { + if (contentType.includes("application/pdf")) { + fileExtension = ".pdf"; + } else if (contentType.includes("image/jpeg")) { + fileExtension = ".jpg"; + } else if (contentType.includes("image/png")) { + fileExtension = ".png"; + } else if (contentType.includes("image/gif")) { + fileExtension = ".gif"; + } else if (contentType.includes("image/webp")) { + fileExtension = ".webp"; + } else if (contentType.includes("video/mpeg")) { + fileExtension = ".mpeg"; + } else if (contentType.includes("video/mp4")) { + fileExtension = ".mp4"; + } else if (contentType.includes("audio/mpeg")) { + fileExtension = ".mp3"; + } else if (contentType.includes("audio/ogg")) { + fileExtension = ".ogg"; + } else if (contentType.includes("application/octet-stream")) { + fileExtension = ".bin"; + } else if (contentType.includes("application/zip")) { + fileExtension = ".zip"; + } + + if (fileExtension) { + return response.blob().then((blob: any) => { + const url = window.URL.createObjectURL(blob); + + const link = document.createElement("a"); + link.href = url; + // Now the file name includes the extension + link.setAttribute("download", `file${fileExtension}`); + + // These two lines are necessary to make the link click in Firefox + link.style.display = "none"; + document.body.appendChild(link); + + link.click(); + + // After link is clicked, it's safe to remove it. + setTimeout(() => document.body.removeChild(link), 0); + + return response; + }); + } else { + return response; + } + } + + return response; + }); +} + +export default makeRequest; diff --git a/src/theme/ApiExplorer/Response/_Response.scss b/src/theme/ApiExplorer/Response/_Response.scss new file mode 100644 index 000000000..70b3ec01b --- /dev/null +++ b/src/theme/ApiExplorer/Response/_Response.scss @@ -0,0 +1,120 @@ +.openapi-explorer__response-container { + background-color: var(--ifm-pre-background); + border-radius: var(--openapi-card-border-radius); + border: 1px solid var(--openapi-explorer-border-color); + box-shadow: + 0 2px 3px hsla(222, 8%, 43%, 0.1), + 0 8px 16px -10px hsla(222, 8%, 43%, 0.2); + color: var(--ifm-pre-color); + line-height: var(--ifm-pre-line-height); + margin-bottom: var(--ifm-spacing-vertical); + margin-top: 0; + overflow: auto; + transition: 300ms; + + &:hover { + box-shadow: + 0 0 0 2px rgba(38, 53, 61, 0.15), + 0 2px 3px hsla(222, 8%, 43%, 0.15), + 0 16px 16px -10px hsla(222, 8%, 43%, 0.2); + } + + .openapi-explorer__code-block code { + padding-top: 0; + } +} + +.openapi-explorer__response-title-container { + display: flex; + justify-content: space-between; + border-bottom: 1px solid var(--openapi-explorer-border-color); + margin: 0; + padding: 0.75rem var(--ifm-pre-padding); + text-transform: uppercase; + font-size: 12px; + font-weight: bold; +} + +.openapi-explorer__response-placeholder-message { + font-size: 12px; + padding: 1.25rem; + margin-bottom: 0; + text-align: center; +} + +.openapi-explorer__response-clear-btn { + &:hover { + cursor: pointer; + } +} + +.openapi-explorer__loading-container { + width: 100%; + display: flex; + justify-content: center; +} + +.openapi-response__dot::before { + margin-right: 0.2rem; + margin-bottom: 0.15rem; + content: "⬤"; + color: var(--ifm-color-primary); + font-size: 8px; +} + +.openapi-response__dot--danger::before { + color: var(--ifm-color-danger); +} + +.openapi-response__dot--success::before { + color: var(--ifm-color-success); +} + +.openapi-response__dot--info::before { + color: var(--ifm-color-info); +} + +.openapi-response__status-code { + margin-left: -1rem; +} + +.openapi-response__status-headers { + margin-left: -1rem; +} + +.openapi-response__lds-ring { + display: inline-block; + position: relative; + width: 80px; + height: 80px; +} +.openapi-response__lds-ring div { + box-sizing: border-box; + display: block; + position: absolute; + width: 64px; + height: 64px; + margin: 8px; + border: 5px solid #dfc; + border-radius: 50%; + animation: openapi-response__lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) + infinite; + border-color: var(--ifm-color-primary) transparent transparent transparent; +} +.openapi-response__lds-ring div:nth-child(1) { + animation-delay: -0.45s; +} +.openapi-response__lds-ring div:nth-child(2) { + animation-delay: -0.3s; +} +.openapi-response__lds-ring div:nth-child(3) { + animation-delay: -0.15s; +} +@keyframes openapi-response__lds-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/src/theme/ApiExplorer/Response/index.tsx b/src/theme/ApiExplorer/Response/index.tsx new file mode 100644 index 000000000..6c50d31d4 --- /dev/null +++ b/src/theme/ApiExplorer/Response/index.tsx @@ -0,0 +1,150 @@ +import React from "react"; + +import { usePrismTheme } from "@docusaurus/theme-common"; +import { useDoc } from "@docusaurus/theme-common/internal"; +import ApiCodeBlock from "@theme/ApiExplorer/ApiCodeBlock"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; +import SchemaTabs from "@theme/SchemaTabs"; +import TabItem from "@theme/TabItem"; +import clsx from "clsx"; +import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; + +import { clearResponse, clearCode, clearHeaders } from "./slice"; + +// TODO: We probably shouldn't attempt to format XML... +function formatXml(xml: string) { + const tab = " "; + let formatted = ""; + let indent = ""; + + xml.split(/>\s* { + if (node.match(/^\/\w/)) { + // decrease indent by one 'tab' + indent = indent.substring(tab.length); + } + formatted += indent + "<" + node + ">\r\n"; + if (node.match(/^]*[^/]$/)) { + // increase indent + indent += tab; + } + }); + return formatted.substring(1, formatted.length - 3); +} + +function Response({ item }: { item: NonNullable }) { + const metadata = useDoc(); + const hideSendButton = metadata.frontMatter.hide_send_button; + const prismTheme = usePrismTheme(); + const code = useTypedSelector((state: any) => state.response.code); + const headers = useTypedSelector((state: any) => state.response.headers); + const response = useTypedSelector((state: any) => state.response.value); + const dispatch = useTypedDispatch(); + const responseStatusClass = + code && + "openapi-response__dot " + + (parseInt(code) >= 400 + ? "openapi-response__dot--danger" + : parseInt(code) >= 200 && parseInt(code) < 300 + ? "openapi-response__dot--success" + : "openapi-response__dot--info"); + + if (!item.servers || hideSendButton) { + return null; + } + + let prettyResponse: string = response; + + if (prettyResponse) { + try { + prettyResponse = JSON.stringify(JSON.parse(response), null, 2); + } catch { + if (response.startsWith("<")) { + prettyResponse = formatXml(response); + } + } + } + + return ( +
+
+ Response + { + dispatch(clearResponse()); + dispatch(clearCode()); + dispatch(clearHeaders()); + }} + > + Clear + +
+
+ {code && prettyResponse !== "Fetching..." ? ( + + {/* @ts-ignore */} + + {/* @ts-ignore */} + + {prettyResponse || ( +

+ Click the Send API Request button above and see + the response here! +

+ )} +
+
+ {/* @ts-ignore */} + + {/* @ts-ignore */} + + {JSON.stringify(headers, undefined, 2)} + + +
+ ) : prettyResponse === "Fetching..." ? ( +
+
+
+
+
+
+
+
+ ) : ( +

+ Click the Send API Request button above and see the + response here! +

+ )} +
+
+ ); +} + +export default Response; diff --git a/src/theme/ApiExplorer/Response/slice.ts b/src/theme/ApiExplorer/Response/slice.ts new file mode 100644 index 000000000..d58f0b059 --- /dev/null +++ b/src/theme/ApiExplorer/Response/slice.ts @@ -0,0 +1,45 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; + +export interface State { + value?: string; + code?: string; + headers?: string; +} + +const initialState: State = {} as any; + +export const slice = createSlice({ + name: "response", + initialState, + reducers: { + setResponse: (state, action: PayloadAction) => { + state.value = action.payload; + }, + setCode: (state, action: PayloadAction) => { + state.code = action.payload; + }, + setHeaders: (state, action: PayloadAction) => { + state.headers = action.payload; + }, + clearResponse: (state) => { + state.value = undefined; + }, + clearCode: (state) => { + state.code = undefined; + }, + clearHeaders: (state) => { + state.headers = undefined; + }, + }, +}); + +export const { + setResponse, + clearResponse, + setCode, + clearCode, + setHeaders, + clearHeaders, +} = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/SecuritySchemes/index.tsx b/src/theme/ApiExplorer/SecuritySchemes/index.tsx new file mode 100644 index 000000000..816adf96e --- /dev/null +++ b/src/theme/ApiExplorer/SecuritySchemes/index.tsx @@ -0,0 +1,262 @@ +import React from "react"; + +import Link from "@docusaurus/Link"; +import { useTypedSelector } from "@theme/ApiItem/hooks"; + +function SecuritySchemes(props: any) { + const options = useTypedSelector((state: any) => state.auth.options); + const selected = useTypedSelector((state: any) => state.auth.selected); + const infoAuthPath = `/${props.infoPath}#authentication`; + + if (selected === undefined) return null; + + if (options[selected]?.[0]?.type === undefined) { + return null; + } + + const selectedAuth = options[selected]; + return ( +
+ +

+ Authorization: {selectedAuth[0].name ?? selectedAuth[0].type} +

+
+ {selectedAuth.map((auth: any) => { + const isHttp = auth.type === "http"; + const isApiKey = auth.type === "apiKey"; + const isOauth2 = auth.type === "oauth2"; + const isOpenId = auth.type === "openIdConnect"; + + if (isHttp) { + if (auth.scheme === "bearer") { + const { name, key, type, scopes, ...rest } = auth; + return ( + +
+                  
+                    name:{" "}
+                    {name ?? key}
+                  
+                  
+                    type: 
+                    {type}
+                  
+                  {scopes && scopes.length > 0 && (
+                    
+                      scopes: 
+                      
+                        {auth.scopes.length > 0 ? auth.scopes.toString() : "[]"}
+                      
+                    
+                  )}
+                  {Object.keys(rest).map((k, i) => {
+                    return (
+                      
+                        {k}: 
+                        {typeof rest[k] === "object"
+                          ? JSON.stringify(rest[k], null, 2)
+                          : String(rest[k])}
+                      
+                    );
+                  })}
+                
+
+ ); + } + if (auth.scheme === "basic") { + const { name, key, type, scopes, ...rest } = auth; + return ( + +
+                  
+                    name:{" "}
+                    {name ?? key}
+                  
+                  
+                    type: 
+                    {type}
+                  
+                  {scopes && scopes.length > 0 && (
+                    
+                      scopes: 
+                      
+                        {auth.scopes.length > 0 ? auth.scopes.toString() : "[]"}
+                      
+                    
+                  )}
+                  {Object.keys(rest).map((k, i) => {
+                    return (
+                      
+                        {k}: 
+                        {typeof rest[k] === "object"
+                          ? JSON.stringify(rest[k], null, 2)
+                          : String(rest[k])}
+                      
+                    );
+                  })}
+                
+
+ ); + } + return ( + +
+                
+                  name:{" "}
+                  {auth.name ?? auth.key}
+                
+                
+                  type: 
+                  {auth.type}
+                
+                
+                  in: 
+                  {auth.in}
+                
+              
+
+ ); + } + + if (isApiKey) { + const { name, key, type, scopes, ...rest } = auth; + return ( + +
+                
+                  name:{" "}
+                  {name ?? key}
+                
+                
+                  type: 
+                  {type}
+                
+                {scopes && scopes.length > 0 && (
+                  
+                    scopes: 
+                    
+                      {auth.scopes.length > 0 ? auth.scopes.toString() : "[]"}
+                    
+                  
+                )}
+                {Object.keys(rest).map((k, i) => {
+                  return (
+                    
+                      {k}: 
+                      {typeof rest[k] === "object"
+                        ? JSON.stringify(rest[k], null, 2)
+                        : String(rest[k])}
+                    
+                  );
+                })}
+              
+
+ ); + } + + if (isOauth2) { + const { name, key, type, scopes, flows, ...rest } = auth; + return ( + +
+                
+                  name:{" "}
+                  {name ?? key}
+                
+                
+                  type: 
+                  {type}
+                
+                {scopes && scopes.length > 0 && (
+                  
+                    scopes: 
+                    
+                      {auth.scopes.length > 0 ? auth.scopes.toString() : "[]"}
+                    
+                  
+                )}
+              
+
+ ); + } + + if (isOpenId) { + const { name, key, scopes, type, ...rest } = auth; + return ( + +
+                
+                  name:{" "}
+                  {name ?? key}
+                
+                
+                  type: 
+                  {type}
+                
+                {scopes && scopes.length > 0 && (
+                  
+                    scopes: 
+                    
+                      {auth.scopes.length > 0 ? auth.scopes.toString() : "[]"}
+                    
+                  
+                )}
+                {Object.keys(rest).map((k, i) => {
+                  return (
+                    
+                      {k}: 
+                      {typeof rest[k] === "object"
+                        ? JSON.stringify(rest[k], null, 2)
+                        : String(rest[k])}
+                    
+                  );
+                })}
+              
+
+ ); + } + + return undefined; + })} +
+ ); +} + +export default SecuritySchemes; diff --git a/src/theme/ApiExplorer/Server/_Server.scss b/src/theme/ApiExplorer/Server/_Server.scss new file mode 100644 index 000000000..c6bbb7d70 --- /dev/null +++ b/src/theme/ApiExplorer/Server/_Server.scss @@ -0,0 +1,26 @@ +.openapi-explorer__server-container { + background: var(--openapi-card-background-color); + border-radius: var(--openapi-card-border-radius); + color: var(--ifm-pre-color); + line-height: var(--ifm-pre-line-height); + margin-bottom: var(--ifm-spacing-vertical); + margin-top: 0; + overflow: auto; + + /* hack for view calculation when monaco is hidden */ + position: relative; + + &:empty { + display: none; + } +} + +.openapi-explorer__server-url { + font-size: var(--openapi-explorer-font-size-input); + font-family: var(--ifm-font-family-monospace); +} + +.openapi-explorer__server-description { + padding-left: 0.5rem; + font-weight: var(--ifm-font-weight-bold); +} diff --git a/src/theme/ApiExplorer/Server/index.tsx b/src/theme/ApiExplorer/Server/index.tsx new file mode 100644 index 000000000..210ad9dbf --- /dev/null +++ b/src/theme/ApiExplorer/Server/index.tsx @@ -0,0 +1,123 @@ +import React, { useState } from "react"; + +import FloatingButton from "@theme/ApiExplorer/FloatingButton"; +import FormItem from "@theme/ApiExplorer/FormItem"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import FormTextInput from "@theme/ApiExplorer/FormTextInput"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; + +import { setServer, setServerVariable } from "./slice"; + +function Server() { + const [isEditing, setIsEditing] = useState(false); + const value = useTypedSelector((state: any) => state.server.value); + const options = useTypedSelector((state: any) => state.server.options); + const dispatch = useTypedDispatch(); + + if (options.length <= 0) { + return null; + } + + if (options.length < 1 && value?.variables === undefined) { + return null; + } + + if (!value) { + const defaultOption = options[0]; + dispatch(setServer(JSON.stringify(defaultOption))); + } + + // Default to first option when existing server state is mismatched + if (value) { + const urlExists = options.find((s: any) => s.url === value.url); + if (!urlExists) { + const defaultOption = options[0]; + dispatch(setServer(JSON.stringify(defaultOption))); + } + } + + if (!isEditing) { + let url = ""; + if (value) { + url = value.url.replace(/\/$/, ""); + if (value.variables) { + Object.keys(value.variables).forEach((variable) => { + url = url.replace( + `{${variable}}`, + value.variables?.[variable].default ?? "" + ); + }); + } + } + return ( + setIsEditing(true)} label="Edit"> + + + {url} + + + + ); + } + return ( +
+ setIsEditing(false)} label="Hide"> + + s.url)} + onChange={(e: React.ChangeEvent) => { + dispatch( + setServer( + JSON.stringify( + options.filter((s: any) => s.url === e.target.value)[0] + ) + ) + ); + }} + value={value?.url} + /> + + {value?.description} + + + {value?.variables && + Object.keys(value.variables).map((key) => { + if (value.variables?.[key].enum !== undefined) { + return ( + + ) => { + dispatch( + setServerVariable( + JSON.stringify({ key, value: e.target.value }) + ) + ); + }} + value={value?.variables[key].default} + /> + + ); + } + return ( + + ) => { + dispatch( + setServerVariable( + JSON.stringify({ key, value: e.target.value }) + ) + ); + }} + value={value?.variables?.[key].default} + /> + + ); + })} + +
+ ); +} + +export default Server; diff --git a/src/theme/ApiExplorer/Server/slice.ts b/src/theme/ApiExplorer/Server/slice.ts new file mode 100644 index 000000000..9ab618ab8 --- /dev/null +++ b/src/theme/ApiExplorer/Server/slice.ts @@ -0,0 +1,32 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { ServerObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +// TODO: we might want to export this + +export interface State { + value?: ServerObject; + options: ServerObject[]; +} + +const initialState: State = {} as any; + +export const slice = createSlice({ + name: "server", + initialState, + reducers: { + setServer: (state, action: PayloadAction) => { + state.value = state.options.find( + (s) => s.url === JSON.parse(action.payload).url + ); + }, + setServerVariable: (state, action: PayloadAction) => { + if (state.value?.variables) { + const parsedPayload = JSON.parse(action.payload); + state.value.variables[parsedPayload.key].default = parsedPayload.value; + } + }, + }, +}); + +export const { setServer, setServerVariable } = slice.actions; + +export default slice.reducer; diff --git a/src/theme/ApiExplorer/buildPostmanRequest.ts b/src/theme/ApiExplorer/buildPostmanRequest.ts new file mode 100644 index 000000000..b9c7df1c1 --- /dev/null +++ b/src/theme/ApiExplorer/buildPostmanRequest.ts @@ -0,0 +1,320 @@ +import { AuthState, Scheme } from "@theme/ApiExplorer/Authorization/slice"; +import { Body, Content } from "@theme/ApiExplorer/Body/slice"; +import { + ParameterObject, + ServerObject, +} from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import cloneDeep from "lodash/cloneDeep"; +import sdk from "postman-collection"; + +type Param = { + value?: string | string[]; +} & ParameterObject; + +function setQueryParams(postman: sdk.Request, queryParams: Param[]) { + postman.url.query.clear(); + + const qp = queryParams + .map((param) => { + if (!param.value) { + return undefined; + } + + if (Array.isArray(param.value)) { + return new sdk.QueryParam({ + key: param.name, + value: param.value.join(","), + }); + } + + // Parameter allows empty value: "/hello?extended" + if (param.allowEmptyValue) { + if (param.value === "true") { + return new sdk.QueryParam({ + key: param.name, + value: null, + }); + } + return undefined; + } + + return new sdk.QueryParam({ + key: param.name, + value: param.value, + }); + }) + .filter((item): item is sdk.QueryParam => item !== undefined); + + if (qp.length > 0) { + postman.addQueryParams(qp); + } +} + +function setPathParams(postman: sdk.Request, queryParams: Param[]) { + const source = queryParams.map((param) => { + return new sdk.Variable({ + key: param.name, + value: param.value || `:${param.name}`, + }); + }); + postman.url.variables.assimilate(source, false); +} + +function buildCookie(cookieParams: Param[]) { + const cookies = cookieParams + .map((param) => { + if (param.value && !Array.isArray(param.value)) { + return new sdk.Cookie({ + // TODO: Is this right? + path: "", + domain: "", + key: param.name, + value: param.value, + }); + } + return undefined; + }) + .filter((item): item is sdk.Cookie => item !== undefined); + const list = new sdk.CookieList(null, cookies); + return list.toString(); +} + +function setHeaders( + postman: sdk.Request, + contentType: string, + accept: string, + cookie: string, + headerParams: Param[], + other: { key: string; value: string }[] +) { + postman.headers.clear(); + if (contentType) { + postman.addHeader({ key: "Content-Type", value: contentType }); + } + if (accept) { + postman.addHeader({ key: "Accept", value: accept }); + } + headerParams.forEach((param) => { + if (param.value && !Array.isArray(param.value)) { + postman.addHeader({ key: param.name, value: param.value }); + } + }); + + other.forEach((header) => { + postman.addHeader(header); + }); + + if (cookie) { + postman.addHeader({ key: "Cookie", value: cookie }); + } +} + +// TODO: this is all a bit hacky +function setBody(clonedPostman: sdk.Request, body: Body) { + if (clonedPostman.body === undefined) { + return; + } + + if (body.type === "empty") { + clonedPostman.body = undefined; + return; + } + + if (body.type === "raw" && body.content?.type === "file") { + // treat it like file. + clonedPostman.body.mode = "file"; + clonedPostman.body.file = { src: body.content.value.src }; + return; + } + + switch (clonedPostman.body.mode) { + case "raw": { + // check file even though it should already be set from above + if (body.type !== "raw" || body.content?.type === "file") { + clonedPostman.body = undefined; + return; + } + clonedPostman.body.raw = body.content?.value ?? ""; + return; + } + case "formdata": { + clonedPostman.body.formdata?.clear(); + if (body.type !== "form") { + // treat it like raw. + clonedPostman.body.mode = "raw"; + clonedPostman.body.raw = `${body.content?.value}`; + return; + } + const params = Object.entries(body.content) + .filter((entry): entry is [string, NonNullable] => !!entry[1]) + .map(([key, content]) => { + if (content.type === "file") { + return new sdk.FormParam({ key: key, ...content }); + } + return new sdk.FormParam({ key: key, value: content.value }); + }); + clonedPostman.body.formdata?.assimilate(params, false); + return; + } + case "urlencoded": { + clonedPostman.body.urlencoded?.clear(); + if (body.type !== "form") { + // treat it like raw. + clonedPostman.body.mode = "raw"; + clonedPostman.body.raw = `${body.content?.value}`; + return; + } + const params = Object.entries(body.content) + .filter((entry): entry is [string, NonNullable] => !!entry[1]) + .map(([key, content]) => { + if (content.type !== "file" && content.value) { + return new sdk.QueryParam({ key: key, value: content.value }); + } + return undefined; + }) + .filter((item): item is sdk.QueryParam => item !== undefined); + clonedPostman.body.urlencoded?.assimilate(params, false); + return; + } + default: + return; + } +} + +// TODO: finish these types +interface Options { + server?: ServerObject; + queryParams: Param[]; + pathParams: Param[]; + cookieParams: Param[]; + headerParams: Param[]; + contentType: string; + accept: string; + body: Body; + auth: AuthState; +} + +function buildPostmanRequest( + postman: sdk.Request, + { + queryParams, + pathParams, + cookieParams, + contentType, + accept, + headerParams, + body, + server, + auth, + }: Options +) { + const clonedPostman = cloneDeep(postman); + + clonedPostman.url.protocol = undefined; + clonedPostman.url.host = [window.location.origin]; + + if (server) { + let url = server.url.replace(/\/$/, ""); + const variables = server.variables; + if (variables) { + Object.keys(variables).forEach((variable) => { + url = url.replace(`{${variable}}`, variables[variable].default); + }); + } + clonedPostman.url.host = [url]; + } + + setQueryParams(clonedPostman, queryParams); + setPathParams(clonedPostman, pathParams); + + const cookie = buildCookie(cookieParams); + let otherHeaders = []; + + let selectedAuth: Scheme[] = []; + if (auth.selected !== undefined) { + selectedAuth = auth.options[auth.selected]; + } + + for (const a of selectedAuth) { + // Bearer Auth + if (a.type === "http" && a.scheme === "bearer") { + const { token } = auth.data[a.key]; + if (token === undefined) { + otherHeaders.push({ + key: "Authorization", + value: "Bearer ", + }); + continue; + } + otherHeaders.push({ + key: "Authorization", + value: `Bearer ${token}`, + }); + continue; + } + + if (a.type === "oauth2") { + let token; + if (auth.data[a.key]) { + token = auth.data[a.key].token; + } + if (token === undefined) { + otherHeaders.push({ + key: "Authorization", + value: "Bearer ", + }); + continue; + } + otherHeaders.push({ + key: "Authorization", + value: `Bearer ${token}`, + }); + continue; + } + + // Basic Auth + if (a.type === "http" && a.scheme === "basic") { + const { username, password } = auth.data[a.key]; + if (username === undefined || password === undefined) { + continue; + } + otherHeaders.push({ + key: "Authorization", + value: `Basic ${window.btoa(`${username}:${password}`)}`, + }); + continue; + } + + // API Key + if (a.type === "apiKey" && a.in === "header") { + const { apiKey } = auth.data[a.key]; + if (apiKey === undefined) { + otherHeaders.push({ + key: a.name, + value: "", + }); + continue; + } + otherHeaders.push({ + key: a.name, + value: apiKey, + }); + continue; + } + } + + setHeaders( + clonedPostman, + contentType, + accept, + cookie, + headerParams, + otherHeaders + ); + + setBody(clonedPostman, body); + + return clonedPostman; +} + +export default buildPostmanRequest; diff --git a/src/theme/ApiExplorer/index.tsx b/src/theme/ApiExplorer/index.tsx new file mode 100644 index 000000000..ad669af71 --- /dev/null +++ b/src/theme/ApiExplorer/index.tsx @@ -0,0 +1,34 @@ +import React from "react"; + +import CodeSnippets from "@theme/ApiExplorer/CodeSnippets"; +import Request from "@theme/ApiExplorer/Request"; +import Response from "@theme/ApiExplorer/Response"; +import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import sdk from "postman-collection"; +import SecuritySchemes from "./SecuritySchemes" + +function ApiExplorer({ + item, + infoPath, +}: { + item: NonNullable; + infoPath: string; +}) { + const postman = new sdk.Request(item.postman); + + return ( + <> + + {item.method !== "event" && ( + + )} + + + + ); +} + +export default ApiExplorer; diff --git a/src/theme/ApiExplorer/persistanceMiddleware.ts b/src/theme/ApiExplorer/persistanceMiddleware.ts new file mode 100644 index 000000000..13613fb3e --- /dev/null +++ b/src/theme/ApiExplorer/persistanceMiddleware.ts @@ -0,0 +1,64 @@ +import { Middleware } from "@reduxjs/toolkit"; +import { + setAuthData, + setSelectedAuth, +} from "@theme/ApiExplorer/Authorization/slice"; +import { AppDispatch, RootState } from "@theme/ApiItem/store"; +/* eslint-disable import/no-extraneous-dependencies*/ +import { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; + +import { createStorage, hashArray } from "./storage-utils"; + +export function createPersistanceMiddleware(options: ThemeConfig["api"]) { + const persistanceMiddleware: Middleware<{}, RootState, AppDispatch> = + (storeAPI) => (next) => (action) => { + const result = next(action); + + const state = storeAPI.getState(); + + const storage = createStorage("sessionStorage"); + + if (action.type === setAuthData.type) { + for (const [key, value] of Object.entries(state.auth.data)) { + if (Object.values(value as any).filter(Boolean).length > 0) { + storage.setItem(key, JSON.stringify(value)); + } else { + storage.removeItem(key); + } + } + } + + if (action.type === setSelectedAuth.type) { + if (state.auth.selected) { + storage.setItem( + hashArray(Object.keys(state.auth.options)), + state.auth.selected + ); + } + } + + // TODO: determine way to rehydrate without flashing + if (action.type === "contentType/setContentType") { + storage.setItem("contentType", action.payload); + } + + if (action.type === "accept/setAccept") { + storage.setItem("accept", action.payload); + } + + if (action.type === "server/setServer") { + storage.setItem("server", action.payload); + } + + if (action.type === "server/setServerVariable") { + const server = storage.getItem("server") ?? "{}"; + const variables = JSON.parse(action.payload); + let serverObject = JSON.parse(server); + serverObject.variables[variables.key].default = variables.value; + storage.setItem("server", JSON.stringify(serverObject)); + } + + return result; + }; + return persistanceMiddleware; +} diff --git a/src/theme/ApiExplorer/postman-collection.d.ts b/src/theme/ApiExplorer/postman-collection.d.ts new file mode 100644 index 000000000..9a49b2324 --- /dev/null +++ b/src/theme/ApiExplorer/postman-collection.d.ts @@ -0,0 +1,3 @@ +declare module "postman-collection" { + export = Request.sdk; +} diff --git a/src/theme/ApiExplorer/react-modal.d.ts b/src/theme/ApiExplorer/react-modal.d.ts new file mode 100644 index 000000000..2ba6abf73 --- /dev/null +++ b/src/theme/ApiExplorer/react-modal.d.ts @@ -0,0 +1 @@ +declare module "react-modal"; diff --git a/src/theme/ApiExplorer/storage-utils.ts b/src/theme/ApiExplorer/storage-utils.ts new file mode 100644 index 000000000..298a59386 --- /dev/null +++ b/src/theme/ApiExplorer/storage-utils.ts @@ -0,0 +1,32 @@ +import crypto from "crypto-js"; + +export function hashArray(arr: string[]) { + function hash(message: string) { + return crypto.SHA1(message).toString(); + } + const hashed = arr.map((item) => hash(item)); + hashed.sort(); + const res = hashed.join(); + return hash(res); +} + +type Persistance = false | "localStorage" | "sessionStorage" | undefined; + +export function createStorage(persistance: Persistance): Storage { + if (persistance === false) { + return { + getItem: () => null, + setItem: () => {}, + clear: () => {}, + key: () => null, + removeItem: () => {}, + length: 0, + }; + } + + if (persistance === "sessionStorage") { + return sessionStorage; + } + + return localStorage; +} diff --git a/src/theme/DocCard/index.js b/src/theme/DocCard/index.js deleted file mode 100644 index 2c2179100..000000000 --- a/src/theme/DocCard/index.js +++ /dev/null @@ -1,101 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; -import Link from '@docusaurus/Link'; -import { - findFirstCategoryLink, - useDocById, -} from '@docusaurus/theme-common/internal'; -import isInternalUrl from '@docusaurus/isInternalUrl'; -import {translate} from '@docusaurus/Translate'; -import styles from './styles.module.css'; -import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; -import { - faFolderOpen, - faBook, - faArrowUpRightFromSquare, -} from '@fortawesome/pro-duotone-svg-icons'; - -function CardContainer({href, children}) { - return ( - - {children} - - ); -} -function CardLayout({href, icon, title, description}) { - return ( - -

- {icon} - {title} -

- {description && ( -

- {description} -

- )} -
- ); -} -function CardCategory({item}) { - const href = findFirstCategoryLink(item); - // Unexpected: categories that don't have a link have been filtered upfront - if (!href) { - return null; - } - return ( - - } - //icon={icon} - title={item.label} - description={ - item.customProps?.description ?? - translate( - { - message: '{count} items', - id: 'theme.docs.DocCard.categoryDescription', - description: - 'The default description for a category card in the generated index about how many items this category includes', - }, - {count: item.items.length}, - ) - } - /> - ); -} -function CardLink({item}) { - const icon = isInternalUrl(item.href) ? ( - - ) : ( - - ); - const doc = useDocById(item.docId ?? undefined); - return ( - - ); -} -export default function DocCard({item}) { - switch (item.type) { - case 'link': - return ; - case 'category': - return ; - default: - throw new Error(`unknown item type ${JSON.stringify(item)}`); - } -} diff --git a/src/theme/DocCard/index.tsx b/src/theme/DocCard/index.tsx new file mode 100644 index 000000000..aa6b7c44b --- /dev/null +++ b/src/theme/DocCard/index.tsx @@ -0,0 +1,145 @@ +import React, {type ReactNode} from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import { + findFirstSidebarItemLink, + useDocById, +} from '@docusaurus/theme-common/internal'; +import {usePluralForm} from '@docusaurus/theme-common'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import {translate} from '@docusaurus/Translate'; + +import type {Props} from '@theme/DocCard'; +import Heading from '@theme/Heading'; +import type { + PropSidebarItemCategory, + PropSidebarItemLink, +} from '@docusaurus/plugin-content-docs'; + +import styles from './styles.module.css'; + +import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; +import { + faFolderOpen, + faBook, + faArrowUpRightFromSquare, +} from '@fortawesome/pro-duotone-svg-icons'; + +function useCategoryItemsPlural() { + const {selectMessage} = usePluralForm(); + return (count: number) => + selectMessage( + count, + translate( + { + message: '1 item|{count} items', + id: 'theme.docs.DocCard.categoryDescription.plurals', + description: + 'The default description for a category card in the generated index about how many items this category includes', + }, + {count}, + ), + ); +} + +function CardContainer({ + href, + children, +}: { + href: string; + children: ReactNode; +}): JSX.Element { + return ( + + {children} + + ); +} + +function CardLayout({ + href, + icon, + title, + description, +}: { + href: string; + icon: ReactNode; + title: string; + description?: string; +}): JSX.Element { + return ( + + + {icon} {title} + + {description && ( +

+ {description} +

+ )} +
+ ); +} + +function CardCategory({ + item, +}: { + item: PropSidebarItemCategory; +}): JSX.Element | null { + const href = findFirstSidebarItemLink(item); + const categoryItemsPlural = useCategoryItemsPlural(); + + // Unexpected: categories that don't have a link have been filtered upfront + if (!href) { + return null; + } + + return ( + + } + title={item.label} + description={item.description ?? categoryItemsPlural(item.items.length)} + /> + ); +} + +function CardLink({item}: {item: PropSidebarItemLink}): JSX.Element { + const icon = isInternalUrl(item.href) ? ( + + ) : ( + + ); + const doc = useDocById(item.docId ?? undefined); + return ( + + ); +} + +export default function DocCard({item}: Props): JSX.Element { + switch (item.type) { + case 'link': + return ; + case 'category': + return ; + default: + throw new Error(`unknown item type ${JSON.stringify(item)}`); + } +} diff --git a/src/theme/DocCard/styles.module.css b/src/theme/DocCard/styles.module.css index 3c7257fc8..a18029ce4 100644 --- a/src/theme/DocCard/styles.module.css +++ b/src/theme/DocCard/styles.module.css @@ -7,7 +7,6 @@ border: 1px solid var(--ifm-color-emphasis-200); transition: all var(--ifm-transition-fast) ease; transition-property: border, box-shadow; - height: 9.5em; } .cardContainer:hover { @@ -24,10 +23,10 @@ } .cardDescription { - font-size: 0.9rem; + font-size: 0.8rem; } .docCardIcon { margin-right: 0.5em; color: var(--ifm-color-primary); -} +} \ No newline at end of file diff --git a/src/theme/NotFound/Content/index.tsx b/src/theme/NotFound/Content/index.tsx new file mode 100644 index 000000000..6ba5e6f03 --- /dev/null +++ b/src/theme/NotFound/Content/index.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import clsx from 'clsx'; +import Translate from '@docusaurus/Translate'; +import type {Props} from '@theme/NotFound/Content'; +import Heading from '@theme/Heading'; +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + + +export default function NotFoundContent({className}: Props): JSX.Element { + return ( +
+
+
+ + + Page Not Found + + +

+ Our docs and API specifications have recently moved—checkout the + navbar at the top of this page to find their new home. If you + can't find the document you're looking for,{' '} + + let us know + + . +

+ +
+
+
+ ); +} diff --git a/static/api-specs/idn/beta/paths/access-profile-entitlements.yaml b/static/api-specs/idn/beta/paths/access-profile-entitlements.yaml index 3785ded92..c1d830b91 100644 --- a/static/api-specs/idn/beta/paths/access-profile-entitlements.yaml +++ b/static/api-specs/idn/beta/paths/access-profile-entitlements.yaml @@ -4,16 +4,15 @@ get: - Access Profiles summary: List Access Profile's Entitlements description: >- - This API lists the Entitlements associated with a given Access Profile + Use this API to get a list of an access profile's entitlements. - - A token with API, ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to invoke this API. In - addition, a token with SOURCE_SUBADMIN authority must have access to the Source associated with the given - Access Profile + A token with API, ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. In + addition, a token with SOURCE_SUBADMIN authority must have access to the source associated with the specified + access profile. parameters: - name: id in: path - description: ID of the containing Access Profile + description: ID of the access profile containing the entitlements. required: true schema: type: string @@ -54,6 +53,9 @@ get: **source.id**: *eq, in* + + + Filtering is not supported for access profiles and entitlements that have the '+' symbol in their names. example: attribute eq "memberOf" required: false - in: query @@ -70,7 +72,7 @@ get: required: false responses: '200': - description: List of Entitlements + description: List of entitlements. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/access-profiles.yaml b/static/api-specs/idn/beta/paths/access-profiles.yaml index 320a543c1..4619e109c 100644 --- a/static/api-specs/idn/beta/paths/access-profiles.yaml +++ b/static/api-specs/idn/beta/paths/access-profiles.yaml @@ -4,9 +4,8 @@ get: - Access Profiles summary: List Access Profiles description: >- - This API returns a list of Access Profiles. + Use this API to get a list of access profiles. - A token with API, ORG_ADMIN, ROLE_ADMIN, ROLE_SUBADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. parameters: @@ -16,11 +15,11 @@ get: type: string description: >- If provided, filters the returned list according to what is visible to the indicated ROLE_SUBADMIN or - SOURCE_SUBADMIN Identity. The value of the parameter is either an Identity ID, or the special value **me**, - which is shorthand for the calling Identity's ID. + SOURCE_SUBADMIN identity. The value of the parameter is either an identity ID, or the special value **me**, + which is shorthand for the calling identity's ID. - A 400 Bad Request error is returned if the **for-subadmin** parameter is specified for an Identity that is not + A 400 Bad Request error is returned if the **for-subadmin** parameter is specified for an identity that is not a subadmin. example: 8c190e6787aa4ed9a90bd9d5344523fb required: false @@ -57,6 +56,9 @@ get: **source.id**: *eq, in* + + + Filtering is not supported for access profiles and entitlements that have the '+' symbol in their names. example: name eq "SailPoint Support" required: false - in: query @@ -77,10 +79,9 @@ get: type: string format: comma-separated description: >- - If present and not empty, additionally filters Access Profiles to those which are assigned to the Segment(s) + If present and not empty, additionally filters access profiles to those which are assigned to the segment(s) with the specified IDs. - If segmentation is currently unavailable, specifying this parameter results in an error. example: 0b5c9f25-83c6-4762-9073-e38f7bb2ae26,2e8d8180-24bc-4d21-91c6-7affdb473b0d required: false @@ -90,13 +91,13 @@ get: type: boolean default: true description: >- - Whether or not the response list should contain unsegmented Access Profiles. + Indicates whether the response list should contain unsegmented access profiles. If *for-segment-ids* is absent or empty, specifying *include-unsegmented* as false results in an error. example: false required: false responses: '200': - description: List of Access Profiles + description: List of access profiles. content: application/json: schema: @@ -119,13 +120,13 @@ post: operationId: createAccessProfile tags: - Access Profiles - summary: Create an Access Profile + summary: Create Access Profile description: >- - This API creates an Access Profile. + Use this API to create an access profile. A token with API, ORG_ADMIN, ROLE_ADMIN, ROLE_SUBADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. In addition, a token with only ROLE_SUBADMIN or SOURCE_SUBADMIN authority must be associated with the - Access Profile's Source. + access profile's Source. The maximum supported length for the description field is 2000 characters. Longer descriptions will be preserved for existing access profiles, however, any new access profiles as well as any updates to existing descriptions will be limited to 2000 characters. @@ -137,7 +138,7 @@ post: $ref: '../../v3/schemas/access/AccessProfile.yaml' responses: '201': - description: Access Profile created + description: Access profile created. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/access-request-approval-summary.yaml b/static/api-specs/idn/beta/paths/access-request-approval-summary.yaml index b57a84473..4c4a2b461 100644 --- a/static/api-specs/idn/beta/paths/access-request-approval-summary.yaml +++ b/static/api-specs/idn/beta/paths/access-request-approval-summary.yaml @@ -1,31 +1,35 @@ get: operationId: getAccessRequestApprovalSummary - summary: Get the number of pending, approved and rejected access requests approvals + security: + - UserContextAuth: [ idn:access-request-approvals-summary:read ] + summary: Get Access Requests Approvals Number tags: - Access Request Approvals description: >- - This endpoint returns the number of pending, approved and rejected access requests approvals. - See "owner-id" query parameter below for authorization info. + Use this API to return the number of pending, approved and rejected access requests approvals. + See the "owner-id" query parameter for authorization information. parameters: - in: query name: owner-id schema: type: string description: >- - The id of the owner or approver identity of the approvals. If present, the value returns approval summary for the specified identity. + The ID of the owner or approver identity of the approvals. If present, the value returns approval summary for the specified identity. * ORG_ADMIN users can call this with any identity ID value. * ORG_ADMIN user can also fetch all the approvals in the org, when owner-id is not used. * Non ORG_ADMIN users can only specify *me* or pass their own identity ID value. - + example: 2c91808568c529c60168cca6f90c1313 + required: false - in: query name: from-date schema: type: string description: >- - From date is the date and time from which the results will be shown. It should be in a valid ISO-8601 format + This is the date and time the results will be shown from. It must be in a valid ISO-8601 format. - example: from-date=2020-03-19T19:59:11Z + example: from-date=2020-03-19T19:59:11Z + required: false responses: '200': description: Number of pending, approved, rejected access request approvals. diff --git a/static/api-specs/idn/beta/paths/account.yaml b/static/api-specs/idn/beta/paths/account.yaml index 27ad8de48..42f9b8a70 100644 --- a/static/api-specs/idn/beta/paths/account.yaml +++ b/static/api-specs/idn/beta/paths/account.yaml @@ -42,16 +42,17 @@ patch: - Accounts summary: Update Account description: >- - This updates account details. + Use this API to update account details. A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. - This endpoint supports updating an account's correlation. The identityId and manuallyCorrelated fields can be - modified for any account. The attributes fields can be modified just for flat file accounts. - To re-assign an account from one identity to another, replace the current identityId with a new value. - If the account you're assigning was provisioned by IdentityNow, it's possible IdentityNow could create a new account + This API supports updating an account's correlation. You can modify only the `identityId` and `manuallyCorrelated` fields for any flat file account. + To reassign an account from one identity to another, replace the current `identityId` with a new value. + If the account you're assigning was provisioned by Identity Security Cloud (ISC), it's possible for ISC to create a new account for the previous identity as soon as the account is moved. If the account you're assigning is authoritative, - this will cause the previous identity to become uncorrelated and could even result in its deletion. - All accounts that are reassigned will be set to manuallyCorrelated: true unless otherwise specified + this causes the previous identity to become uncorrelated and can even result in its deletion. + All accounts that are reassigned will be set to `manuallyCorrelated: true` unless you specify otherwise. + + >**Note:** The `attributes` field can only be modified for flat file accounts. security: - UserContextAuth: [idn:accounts:manage] parameters: @@ -72,7 +73,7 @@ patch: schema: type: array items: - $ref: "../schemas/JsonPatchOperation.yaml" + type: object example: Uncorrelate account: description: Remove account from Identity diff --git a/static/api-specs/idn/beta/paths/accounts.yaml b/static/api-specs/idn/beta/paths/accounts.yaml index f837f51d7..819cbb1d6 100644 --- a/static/api-specs/idn/beta/paths/accounts.yaml +++ b/static/api-specs/idn/beta/paths/accounts.yaml @@ -55,6 +55,12 @@ get: **entitlements**: *eq* + **origin**: *eq, in* + + + **manuallyCorrelated**: *eq* + + **identity.name**: *eq, in, sw* @@ -82,7 +88,7 @@ get: Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) - Sorting is supported for the following fields: **id, name, created, modified, sourceId, identityId, identity.id, nativeIdentity, uuid, manuallyCorrelated, entitlements, identity.name, identity.identityState, identity.correlated, source.displayableName, source.authoritative, source.connectionType** + Sorting is supported for the following fields: **id, name, created, modified, sourceId, identityId, identity.id, nativeIdentity, uuid, manuallyCorrelated, entitlements, origin, identity.name, identity.identityState, identity.correlated, source.displayableName, source.authoritative, source.connectionType** responses: '200': description: List of account objects diff --git a/static/api-specs/idn/beta/paths/approve-access-request-approval.yaml b/static/api-specs/idn/beta/paths/approve-access-request-approval.yaml index 9fce2b032..589a9041a 100644 --- a/static/api-specs/idn/beta/paths/approve-access-request-approval.yaml +++ b/static/api-specs/idn/beta/paths/approve-access-request-approval.yaml @@ -1,21 +1,21 @@ post: operationId: approveAccessRequest - summary: Approves an access request approval. + summary: Approve Access Request Approval tags: - Access Request Approvals description: >- - This endpoint approves an access request approval. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. + Use this endpoint to approve an access request approval. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. parameters: - in: path name: approvalId schema: type: string required: true - description: The id of the approval. + description: Approval ID. example: 2c91808b7294bea301729568c68c002e requestBody: description: Reviewer's comment. - required: false + required: true content: application/json: schema: @@ -23,6 +23,8 @@ post: responses: '202': $ref: '../../v3/responses/202.yaml' + '400': + $ref: '../../v3/responses/400.yaml' '401': $ref: '../../v3/responses/401.yaml' '403': diff --git a/static/api-specs/idn/beta/paths/auth-profiles.yaml b/static/api-specs/idn/beta/paths/auth-profiles.yaml index fdb592bf8..31a46f613 100644 --- a/static/api-specs/idn/beta/paths/auth-profiles.yaml +++ b/static/api-specs/idn/beta/paths/auth-profiles.yaml @@ -13,7 +13,9 @@ get: content: application/json: schema: - $ref: '../schemas/AuthProfileSummary.yaml' + type: array + items: + $ref: '../schemas/AuthProfileSummary.yaml' '400': $ref: '../../v3/responses/400.yaml' '401': diff --git a/static/api-specs/idn/beta/paths/campaign-activate.yaml b/static/api-specs/idn/beta/paths/campaign-activate.yaml index adc610550..06f8626da 100644 --- a/static/api-specs/idn/beta/paths/campaign-activate.yaml +++ b/static/api-specs/idn/beta/paths/campaign-activate.yaml @@ -4,9 +4,9 @@ post: - Certification Campaigns summary: Activate a Campaign description: >- - Submits a job to activate the campaign with the given Id. The campaign must be staged. + Use this API to submit a job to activate the certified campaign with the specified ID. The campaign must be staged. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/start-campaign). - Requires roles of CERT_ADMIN and ORG_ADMIN + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [ idn:campaign:update ] deprecated: true @@ -27,7 +27,7 @@ post: schema: type: string required: true - description: The campaign id + description: Campaign ID. example: ef38f94347e94562b5bb8424a56397d8 responses: '202': diff --git a/static/api-specs/idn/beta/paths/campaign-complete.yaml b/static/api-specs/idn/beta/paths/campaign-complete.yaml index b610d1d23..be4458612 100644 --- a/static/api-specs/idn/beta/paths/campaign-complete.yaml +++ b/static/api-specs/idn/beta/paths/campaign-complete.yaml @@ -12,10 +12,10 @@ post: ::: - Completes a certification campaign. This is provided to admins so that they - can complete a certification even if all items have not been completed. + Use this API to complete a certification campaign. This functionality is provided to admins so that they + can complete a certification even if all items have not been completed. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/complete-campaign). - Requires roles of CERT_ADMIN and ORG_ADMIN + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. deprecated: true security: - UserContextAuth: [idn:campaign:update] @@ -34,7 +34,7 @@ post: schema: type: string required: true - description: The campaign id + description: Campaign ID. example: ef38f94347e94562b5bb8424a56397d8 responses: '202': diff --git a/static/api-specs/idn/beta/paths/campaign-reports-configuration.yaml b/static/api-specs/idn/beta/paths/campaign-reports-configuration.yaml index 4393b1ccf..e0842408d 100644 --- a/static/api-specs/idn/beta/paths/campaign-reports-configuration.yaml +++ b/static/api-specs/idn/beta/paths/campaign-reports-configuration.yaml @@ -5,15 +5,15 @@ get: summary: Get Campaign Reports Configuration deprecated: true description: >- - Fetches configuration for campaign reports. Currently it includes only one element - identity attributes defined as custom report columns. + Use this API to fetch the configuration for certification campaign reports. The configuration includes only one element - identity attributes defined as custom report columns. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/get-campaign-reports-config). - Requires roles of CERT_ADMIN and ORG_ADMIN. + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [ idn:campaign-reports-config:read ] responses: '200': - description: Campaign Report Configuration + description: Campaign report configuration. content: application/json: schema: @@ -35,22 +35,22 @@ put: summary: Set Campaign Reports Configuration deprecated: true description: >- - Overwrites configuration for campaign reports. + Use this API to overwrite the configuration for campaign reports. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/set-campaign-reports-config). - Requires roles CERT_ADMIN and ORG_ADMIN. + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [ idn:campaign-reports-config:write ] requestBody: required: true - description: Campaign Report Configuration + description: Campaign report configuration. content: application/json: schema: $ref: '../schemas/CampaignReportsConfig.yaml' responses: '200': - description: The persisted Campaign Report Configuration + description: The persisted campaign report configuration. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/campaign-reports.yaml b/static/api-specs/idn/beta/paths/campaign-reports.yaml index 17d14ae04..ea07e5f73 100644 --- a/static/api-specs/idn/beta/paths/campaign-reports.yaml +++ b/static/api-specs/idn/beta/paths/campaign-reports.yaml @@ -5,9 +5,9 @@ get: summary: Get Campaign Reports deprecated: true description: >- - Fetches all reports for a certification campaign by campaign ID. + Use this API to fetch all reports for a certification campaign by campaign ID. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/get-campaign-reports). - Requires roles of CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN + Calling this endpoint requires roles of CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN. security: - UserContextAuth: [idn:campaign-report:read] parameters: @@ -17,7 +17,7 @@ get: type: string example: 2c91808571bcfcf80171c23e4b4221fc required: true - description: The ID of the campaign for which reports are being fetched. + description: ID of the campaign whose reports are being fetched. responses: '200': description: Array of campaign report objects. diff --git a/static/api-specs/idn/beta/paths/campaign-run-remediation-scan.yaml b/static/api-specs/idn/beta/paths/campaign-run-remediation-scan.yaml index ff6e16601..45b76cec3 100644 --- a/static/api-specs/idn/beta/paths/campaign-run-remediation-scan.yaml +++ b/static/api-specs/idn/beta/paths/campaign-run-remediation-scan.yaml @@ -4,9 +4,9 @@ post: - Certification Campaigns summary: Run Campaign Remediation Scan description: >- - Kicks off remediation scan task for a certification campaign. + Use this API to run a remediation scan task for a certification campaign. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/start-campaign-remediation-scan). - Requires roles of CERT_ADMIN and ORG_ADMIN + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. deprecated: true security: - UserContextAuth: [idn:campaign-report:run] @@ -17,7 +17,7 @@ post: type: string example: 2c91808571bcfcf80171c23e4b4221fc required: true - description: The ID of the campaign for which remediation scan is being run. + description: ID of the campaign the remediation scan is being run for. responses: '202': $ref: '../../v3/responses/202.yaml' diff --git a/static/api-specs/idn/beta/paths/campaign-run-report.yaml b/static/api-specs/idn/beta/paths/campaign-run-report.yaml index 04001e28c..ea400e2e7 100644 --- a/static/api-specs/idn/beta/paths/campaign-run-report.yaml +++ b/static/api-specs/idn/beta/paths/campaign-run-report.yaml @@ -5,9 +5,9 @@ post: summary: Run Campaign Report deprecated: true description: >- - Runs a report for a certification campaign. + Use this API to run a report for a certification campaign. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/start-campaign-report). - Requires the following roles: CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN. + Calling this endpoint requires the following roles: CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN. security: - UserContextAuth: [idn:campaign-report:run] parameters: @@ -17,13 +17,13 @@ post: type: string example: 2c91808571bcfcf80171c23e4b4221fc required: true - description: The ID of the campaign for which report is being run. + description: ID of the campaign the report is being run for. - in: path name: type schema: $ref: '../schemas/ReportType.yaml' required: true - description: The type of the report to run. + description: Type of report to run. responses: '202': $ref: '../../v3/responses/202.yaml' diff --git a/static/api-specs/idn/beta/paths/campaign-template-generate.yaml b/static/api-specs/idn/beta/paths/campaign-template-generate.yaml index 49f6a3280..32388a63b 100644 --- a/static/api-specs/idn/beta/paths/campaign-template-generate.yaml +++ b/static/api-specs/idn/beta/paths/campaign-template-generate.yaml @@ -7,31 +7,33 @@ post: security: - UserContextAuth: [idn:campaign-template:run] description: >- - Generates a new campaign from a campaign template. + Use this API to generate a new certification campaign from a campaign template. The campaign object contained in the template has special formatting applied to its name and description - fields in order to determine the generated campaign's name/description. Placeholders in those fields are + fields that determine the generated campaign's name/description. Placeholders in those fields are formatted with the current date and time upon generation. - Placeholders consist of a percent sign followed by a letter indicating what should be inserted; for - example, "%Y" will insert the current year; a campaign template named "Campaign for %y" would generate a + Placeholders consist of a percent sign followed by a letter indicating what should be inserted. For + example, "%Y" inserts the current year, and a campaign template named "Campaign for %y" generates a campaign called "Campaign for 2020" (assuming the year at generation time is 2020). Valid placeholders are the date/time conversion suffix characters supported by [java.util.Formatter](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html). - Requires roles ORG_ADMIN. + Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/start-generate-campaign-template). + + Calling this endpoint requires the ORG_ADMIN role. parameters: - in: path name: id schema: type: string required: true - description: The ID of the campaign template to use for generation. + description: ID of the campaign template to use for generation. example: 2c9180835d191a86015d28455b4a2329 responses: '200': description: >- - Indicates a campaign was successfully generated from this template, and returns a reference to the + This response indicates that a campaign was successfully generated from this template, and the API returns a reference to the new campaign. content: application/json: diff --git a/static/api-specs/idn/beta/paths/campaign-template-schedule.yaml b/static/api-specs/idn/beta/paths/campaign-template-schedule.yaml index a80244296..a2bd24e4d 100644 --- a/static/api-specs/idn/beta/paths/campaign-template-schedule.yaml +++ b/static/api-specs/idn/beta/paths/campaign-template-schedule.yaml @@ -2,9 +2,9 @@ get: operationId: getCampaignTemplateSchedule tags: - Certification Campaigns - summary: Gets a Campaign Template's Schedule + summary: Get Campaign Template Schedule description: >- - Gets the schedule for a campaign template. Returns a 404 if there is no schedule set. + Use this API to get the schedule for a certification campaign template. The API returns a 404 if there is no schedule set. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/get-campaign-template-schedule). security: - UserContextAuth: [ idn:campaign-template:read ] deprecated: true @@ -14,12 +14,12 @@ get: schema: type: string required: true - description: The ID of the campaign template whose schedule is being fetched. + description: ID of the campaign template whose schedule is being fetched. example: "04bedce387bd47b2ae1f86eb0bb36dee" responses: '200': description: >- - The current schedule for the campaign template. See the PUT endpoint documentation for + Current schedule for the campaign template. See the [Set Campaign Template Schedule endpoint documentation](https://developer.sailpoint.com/docs/api/beta/set-campaign-template-schedule) for more examples. content: application/json: @@ -41,10 +41,10 @@ put: operationId: setCampaignTemplateSchedule tags: - Certification Campaigns - summary: Sets a Campaign Template's Schedule + summary: Set Campaign Template Schedule description: >- - Sets the schedule for a campaign template. If a schedule already exists, it will be overwritten with - the new one. + Use this API to set the schedule for a certification campaign template. If a schedule already exists, the API overwrites it with the new one. + Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/set-campaign-template-schedule). security: - UserContextAuth: [ idn:campaign-template:run ] deprecated: true @@ -54,7 +54,7 @@ put: schema: type: string required: true - description: The ID of the campaign template being scheduled. + description: ID of the campaign template being scheduled. example: 04bedce387bd47b2ae1f86eb0bb36dee requestBody: content: @@ -147,9 +147,9 @@ delete: operationId: deleteCampaignTemplateSchedule tags: - Certification Campaigns - summary: Deletes a Campaign Template's Schedule + summary: Delete Campaign Template Schedule description: >- - Deletes the schedule for a campaign template. Returns a 404 if there is no schedule set. + Use this API to delete the schedule for a certification campaign template. The API returns a 404 if there is no schedule set. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/delete-campaign-template-schedule). security: - UserContextAuth: [ idn:campaign-template:run ] deprecated: true @@ -159,7 +159,7 @@ delete: schema: type: string required: true - description: The ID of the campaign template whose schedule is being deleted. + description: ID of the campaign template whose schedule is being deleted. example: "04bedce387bd47b2ae1f86eb0bb36dee" responses: '204': diff --git a/static/api-specs/idn/beta/paths/campaign-template.yaml b/static/api-specs/idn/beta/paths/campaign-template.yaml index a9ab8b840..c6f688588 100644 --- a/static/api-specs/idn/beta/paths/campaign-template.yaml +++ b/static/api-specs/idn/beta/paths/campaign-template.yaml @@ -3,7 +3,7 @@ get: tags: - Certification Campaigns summary: Get a Campaign Template - description: Fetches a campaign template by ID. + description: Use this API to fetch a certification campaign template by ID. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/get-campaign-template). security: - UserContextAuth: [ idn:campaign-template:read ] deprecated: true @@ -13,11 +13,11 @@ get: schema: type: string required: true - description: The desired campaign template's ID. + description: Requested campaign template's ID. example: 2c9180835d191a86015d28455b4a2329 responses: '200': - description: The data for the campaign matching the given ID. + description: Data for the campaign matching the given ID. content: application/json: schema: @@ -48,7 +48,7 @@ patch: tags: - Certification Campaigns summary: Update a Campaign Template - description: Allows updating individual fields on a campaign template using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + description: Use this API to update individual fields on a certification campaign template, using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/patch-campaign-template). deprecated: true security: - UserContextAuth: [ idn:campaign-template:update ] @@ -58,7 +58,7 @@ patch: schema: type: string required: true - description: The ID of the campaign template being modified. + description: ID of the campaign template being modified. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true @@ -86,7 +86,7 @@ patch: responses: '200': description: >- - Indicates the PATCH operation succeeded, and returns the template's new representation. + This response indicates that the PATCH operation succeeded, and the API returns the template's new representation. content: application/json: schema: @@ -117,7 +117,7 @@ delete: tags: - Certification Campaigns summary: Delete a Campaign Template - description: Deletes a campaign template by ID. + description: Use this API to delete a certification campaign template by ID. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/delete-campaign-template). deprecated: true security: - UserContextAuth: [ idn:campaign-template:delete ] @@ -127,7 +127,7 @@ delete: schema: type: string required: true - description: The ID of the campaign template being deleted. + description: ID of the campaign template being deleted. example: 2c9180835d191a86015d28455b4a2329 responses: '204': diff --git a/static/api-specs/idn/beta/paths/campaign-templates.yaml b/static/api-specs/idn/beta/paths/campaign-templates.yaml index 7ec8220fe..45417d559 100644 --- a/static/api-specs/idn/beta/paths/campaign-templates.yaml +++ b/static/api-specs/idn/beta/paths/campaign-templates.yaml @@ -1,13 +1,12 @@ get: - operationId: listCampaignTemplates + operationId: getCampaignTemplates tags: - Certification Campaigns summary: List Campaign Templates description: >- - Lists all CampaignTemplates. Scope can be reduced via standard V3 query params. + Use this API to get a list of all campaign templates. Scope can be reduced through standard V3 query params. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/list-campaign-templates). - - All CampaignTemplates matching the query params + The endpoint returns all campaign templates matching the query parameters. deprecated: true security: @@ -46,7 +45,7 @@ get: example: name eq "manager template" responses: '200': - description: List of campaign template objects + description: List of campaign template objects. content: application/json: schema: @@ -71,7 +70,7 @@ post: - Certification Campaigns summary: Create a Campaign Template description: >- - Create a campaign Template based on campaign. + Use this API to create a campaign template based on campaign. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/create-campaign-template). security: - UserContextAuth: [ idn:campaign-template:create ] deprecated: true diff --git a/static/api-specs/idn/beta/paths/campaign.yaml b/static/api-specs/idn/beta/paths/campaign.yaml index 6a66a394a..3103d194c 100644 --- a/static/api-specs/idn/beta/paths/campaign.yaml +++ b/static/api-specs/idn/beta/paths/campaign.yaml @@ -2,10 +2,10 @@ get: operationId: getCampaign tags: - Certification Campaigns - summary: Get a campaign + summary: Get Campaign description: >- - Retrieves information for an existing campaign using the campaign's ID. Authorized callers must be a - reviewer for this campaign, an ORG_ADMIN, or a CERT_ADMIN. + Use this API to get information for an existing certification campaign by the campaign's ID. Though this endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/get-campaign). + Authorized callers must be reviewers for this campaign, ORG_ADMINs, or a CERT_ADMINs. deprecated: true security: - UserContextAuth: [] @@ -15,11 +15,11 @@ get: schema: type: string required: true - description: The ID of the campaign to be retrieved + description: ID of the campaign to be retrieved. example: 2c91808571bcfcf80171c23e4b4221fc responses: '200': - description: A campaign object + description: Campaign object. content: application/json: schema: @@ -50,7 +50,7 @@ patch: tags: - Certification Campaigns summary: Update a Campaign - description: Allows updating individual fields on a campaign using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + description: Use this API to update individual fields on a certification campaign, using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. Though this endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/beta/update-campaign). deprecated: true security: - UserContextAuth: [idn:campaign:update,idn:campaign:read] @@ -60,7 +60,7 @@ patch: schema: type: string required: true - description: The ID of the campaign template being modified. + description: ID of the campaign template being modified. example: 2c91808571bcfcf80171c23e4b4221fc requestBody: required: true @@ -68,7 +68,7 @@ patch: A list of campaign update operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. The fields that can be patched differ based on the status of the campaign. - In the *STAGED* status, the following fields can be patched: + When the campaign is in the *STAGED* status, you can patch these fields: * name * description * recommendationsEnabled @@ -76,7 +76,7 @@ patch: * emailNotificationEnabled * autoRevokeAllowed - In the *ACTIVE* status, the following fields can be patched: + When the campaign is in the *ACTIVE* status, you can patch these fields: * deadline content: application/json-patch+json: @@ -94,7 +94,7 @@ patch: responses: '200': description: >- - Indicates the PATCH operation succeeded, and returns the campaign's new representation. + This response indicates that the PATCH operation succeeded, and the API returns the campaign's new representation. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/campaigns-delete.yaml b/static/api-specs/idn/beta/paths/campaigns-delete.yaml index d178bdf28..7309a1a97 100644 --- a/static/api-specs/idn/beta/paths/campaigns-delete.yaml +++ b/static/api-specs/idn/beta/paths/campaigns-delete.yaml @@ -2,15 +2,15 @@ post: operationId: deleteCampaigns tags: - Certification Campaigns - summary: Deletes Campaigns + summary: Delete Campaigns description: >- - Deletes campaigns whose Ids are specified in the provided list of campaign Ids. - Authorized callers must be an ORG_ADMIN or a CERT_ADMIN. + Use this API to delete certification campaigns whose IDs are specified in the provided list of campaign IDs. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/delete-campaigns). + Authorized callers must be ORG_ADMINs or CERT_ADMINs. deprecated: true security: - UserContextAuth: [idn:campaign:delete] requestBody: - description: The ids of the campaigns to delete. + description: IDs of the campaigns to delete. required: true content: application/json: diff --git a/static/api-specs/idn/beta/paths/campaigns.yaml b/static/api-specs/idn/beta/paths/campaigns.yaml index 34698b7cb..315b7f079 100644 --- a/static/api-specs/idn/beta/paths/campaigns.yaml +++ b/static/api-specs/idn/beta/paths/campaigns.yaml @@ -4,9 +4,7 @@ get: - Certification Campaigns summary: List Campaigns description: >- - Gets campaigns and returns them in a list. Can provide increased level of detail for each campaign if provided - the correct query. - security: + Use this API to get a list of campaigns. The API can provide increased level of detail for each campaign for the correct provided query. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/get-active-campaigns). - UserContextAuth: [] deprecated: true parameters: @@ -57,7 +55,7 @@ get: example: name responses: '200': - description: A list of campaign objects. By default list of SLIM campaigns is returned. + description: List of campaign objects. By default, the API returns a list of SLIM campaigns. content: application/json: schema: @@ -86,8 +84,8 @@ post: operationId: createCampaign tags: - Certification Campaigns - summary: Create a campaign - description: Creates a new Certification Campaign with the information provided in the request body. + summary: Create Campaign + description: Use this API to create a certification campaign with the information provided in the request body. Though this Beta endpoint has been deprecated, you can find its V3 equivalent [here](https://developer.sailpoint.com/docs/api/v3/create-campaign). security: - UserContextAuth: [idn:campaign:create] deprecated: true @@ -108,7 +106,7 @@ post: $ref: '../schemas/campaign/examples/CreateCampaignRoleComposition.yaml' responses: '200': - description: Indicates that the campaign requested was successfully created and returns its representation. + description: This response indicates that the requested campaign was successfully created, and the API returns its representation. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/correlation-config.yaml b/static/api-specs/idn/beta/paths/correlation-config.yaml new file mode 100644 index 000000000..a442aaf66 --- /dev/null +++ b/static/api-specs/idn/beta/paths/correlation-config.yaml @@ -0,0 +1,85 @@ +get: + operationId: getCorrelationConfig + tags: + - Sources + summary: Get Source Correlation Configuration + security: + - UserContextAuth: [idn:sources:read] + description: >- + This API returns the existing correlation configuration for a source specified by the + given ID. + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - in: path + name: id + required: true + schema: + type: string + description: The source id + example: 2c9180835d191a86015d28455b4a2329 + responses: + '200': + description: Correlation configuration for a source + content: + application/json: + schema: + $ref: '../schemas/CorrelationConfig.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + +put: + operationId: putCorrelationConfig + tags: + - Sources + summary: Update Source Correlation Configuration + security: + - UserContextAuth: [idn:sources:update] + description: >- + Replaces the correlation configuration for the source specified by the given ID with the + configuration provided in the request body. + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - in: path + name: id + required: true + schema: + type: string + description: The source id + example: 2c9180835d191a86015d28455b4a2329 + requestBody: + required: true + content: + application/json: + schema: + $ref: '../schemas/CorrelationConfig.yaml' + responses: + '200': + description: Updated correlation configuration for a source + content: + application/json: + schema: + $ref: '../schemas/CorrelationConfig.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/discovered-applications.yaml b/static/api-specs/idn/beta/paths/discovered-applications.yaml index 4b4ac5a76..5a3332f76 100644 --- a/static/api-specs/idn/beta/paths/discovered-applications.yaml +++ b/static/api-specs/idn/beta/paths/discovered-applications.yaml @@ -1,7 +1,7 @@ get: operationId: getDiscoveredApplications tags: - - Discovered Applications + - Application Discovery summary: Retrieve discovered applications for tenant description: > Fetches a list of applications that have been identified within the environment. This includes details such as application names, discovery dates, potential correlated saas_vendors and related suggested connectors. diff --git a/static/api-specs/idn/beta/paths/form-definitions-export.yaml b/static/api-specs/idn/beta/paths/form-definitions-export.yaml index 252b957ce..fbbb5b1d2 100644 --- a/static/api-specs/idn/beta/paths/form-definitions-export.yaml +++ b/static/api-specs/idn/beta/paths/form-definitions-export.yaml @@ -90,11 +90,9 @@ get: object: $ref: '../schemas/forms/FormDefinitionResponse.yaml' self: - type: string - x-go-name: Self + $ref: '../schemas/forms/FormDefinitionSelfImportExportDto.yaml' version: type: integer - format: int8 x-go-name: Version "400": description: An error with the request occurred diff --git a/static/api-specs/idn/beta/paths/form-definitions-import.yaml b/static/api-specs/idn/beta/paths/form-definitions-import.yaml index c6cae2b69..9ddda1245 100644 --- a/static/api-specs/idn/beta/paths/form-definitions-import.yaml +++ b/static/api-specs/idn/beta/paths/form-definitions-import.yaml @@ -19,7 +19,6 @@ post: x-go-name: Self version: type: integer - format: int8 x-go-name: Version example: [ { @@ -142,11 +141,9 @@ post: object: $ref: '../schemas/forms/FormDefinitionResponse.yaml' self: - type: string - x-go-name: Self + $ref: '../schemas/forms/FormDefinitionSelfImportExportDto.yaml' version: type: integer - format: int8 x-go-name: Version x-go-name: ImportedObjects infos: diff --git a/static/api-specs/idn/beta/paths/form-definitions.yaml b/static/api-specs/idn/beta/paths/form-definitions.yaml index 51e08618b..3fe42c06c 100644 --- a/static/api-specs/idn/beta/paths/form-definitions.yaml +++ b/static/api-specs/idn/beta/paths/form-definitions.yaml @@ -16,10 +16,8 @@ get: type: integer format: int64 default: 0 - x-go-name: Offset example: 250 required: false - x-go-name: Offset - name: limit in: query description: |- @@ -33,10 +31,8 @@ get: maxLength: 250 minLength: 0 default: 250 - x-go-name: Limit example: 250 required: false - x-go-name: Limit - name: filters in: query description: >- @@ -58,10 +54,8 @@ get: **modified**: *eq, gt, sw, in* schema: type: string - x-go-name: Filters example: name sw "my form" required: false - x-go-name: Filters - name: sorters in: query description: >- @@ -72,10 +66,8 @@ get: schema: type: string default: name - x-go-name: Sorters example: name required: false - x-go-name: Sorters responses: "200": description: Returns a list of form definitions by tenant @@ -92,19 +84,15 @@ get: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID "401": description: An error with the authorization occurred content: @@ -114,19 +102,15 @@ get: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID "403": description: An error with the user permissions occurred content: @@ -136,19 +120,15 @@ get: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID "429": description: Too many requests content: @@ -164,19 +144,15 @@ get: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID security: - UserContextAuth: - sp:forms:manage @@ -216,19 +192,15 @@ post: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID "401": description: An error with the authorization occurred content: @@ -238,19 +210,15 @@ post: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID "403": description: An error with the user permissions occurred content: @@ -260,19 +228,15 @@ post: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID "429": description: Too many requests content: @@ -288,20 +252,15 @@ post: properties: detailCode: type: string - x-go-name: DetailCode messages: type: array items: $ref: '../schemas/forms/ErrorMessage.yaml' - x-go-name: Messages statusCode: type: integer format: int64 - x-go-name: StatusCode trackingId: type: string - x-go-name: TrackingID security: - UserContextAuth: - - sp:forms:manage - x-codegen-request-body-name: Body \ No newline at end of file + - sp:forms:manage \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/form-instances.yaml b/static/api-specs/idn/beta/paths/form-instances.yaml index 52aeb732c..2078f831f 100644 --- a/static/api-specs/idn/beta/paths/form-instances.yaml +++ b/static/api-specs/idn/beta/paths/form-instances.yaml @@ -10,7 +10,9 @@ get: content: application/json: schema: - $ref: '../schemas/forms/ListFormInstancesByTenantResponse.yaml' + type: array + items: + $ref: '../schemas/forms/FormInstanceResponse.yaml' "400": description: An error with the request occurred content: diff --git a/static/api-specs/idn/beta/paths/forward-access-request-approval.yaml b/static/api-specs/idn/beta/paths/forward-access-request-approval.yaml index c1aea6422..1489e41b5 100644 --- a/static/api-specs/idn/beta/paths/forward-access-request-approval.yaml +++ b/static/api-specs/idn/beta/paths/forward-access-request-approval.yaml @@ -1,17 +1,17 @@ post: operationId: forwardAccessRequest - summary: Forwards an access request approval to a new owner. + summary: Forward Access Request Approval tags: - Access Request Approvals description: >- - This endpoint forwards an access request approval. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. + Use this API to forward an access request approval to a new owner. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. parameters: - in: path name: approvalId schema: type: string required: true - description: The id of the approval. + description: Approval ID. example: 2c91808b7294bea301729568c68c002e requestBody: description: Information about the forwarded approval. diff --git a/static/api-specs/idn/beta/paths/historical-identity-access-items.yaml b/static/api-specs/idn/beta/paths/historical-identity-access-items.yaml index 81f37d8fe..abea8d0b0 100644 --- a/static/api-specs/idn/beta/paths/historical-identity-access-items.yaml +++ b/static/api-specs/idn/beta/paths/historical-identity-access-items.yaml @@ -18,8 +18,73 @@ get: name: type schema: type: string - description: The type of access item for the identity. If not provided, it defaults to account + description: >- + The type of access item for the identity. If not provided, it defaults to account. + + + Types of access items: **accessProfile, account, app, entitlement, role** example: account + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **source**: *eq* + + + **standalone**: *eq* + + + **privileged**: *eq* + + + **attribute**: *eq* + + + **cloudGoverned**: *eq* + example: source eq "DataScienceDataset" + - in: query + name: sorters + schema: + type: string + format: comma-separated + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **name, value, standalone, privileged, attribute, source, cloudGoverned, removeDate, nativeIdentity, entitlementCount** + example: name + - in: query + name: query + schema: + type: string + description: >- + This param is used to search if certain fields of the access item contain the string provided. + + + Searching is supported for the following fields depending on the type: + + + Access Profiles: **name, description** + + + Accounts: **name, nativeIdentity** + + + Apps: **name** + + + Entitlements: **name, value, description** + + + Roles: **name, description** + example: "Dr. Arden" responses: '200': description: The list of access items. @@ -41,13 +106,15 @@ get: value: - accessType: accessProfile id: 2c918087763e69d901763e72e97f006f - name: sample sourceName: DataScienceDataset sourceId: 2793o32dwd description: AccessProfile - Workday/Citizenship access displayName: Dr. Arden Rogahn MD entitlementCount: 12 appDisplayName: AppName + removeDate: 2024-07-01T06:00:00.00Z + standalone: false + revocable: true Account: description: An account response @@ -66,6 +133,7 @@ get: - accessType: app id: 2c918087763e69d901763e72e97f006f name: appName + appRoleId: 2c918087763e69d901763e72e97f006f Entitlement: description: An entitlement event @@ -78,7 +146,10 @@ get: sourceName: DataScienceDataset sourceId: 2793o32dwd description: Entitlement - Workday/Citizenship access - displayName: Dr. Arden Rogahn MD + displayName: Dr. Arden Rogahn MD + standalone: true + privileged: false + cloudGoverned: false Role: description: A role response @@ -87,6 +158,8 @@ get: id: 2c918087763e69d901763e72e97f006f name: sample description: Role - Workday/Citizenship access + removeDate: 2024-07-01T06:00:00.00Z + revocable: true '400': $ref: '../../v3/responses/400.yaml' '401': @@ -95,5 +168,9 @@ get: $ref: '../../v3/responses/403.yaml' '404': $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' '500': - $ref: '../../v3/responses/500.yaml' \ No newline at end of file + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [ idn:identity-history:read ] \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/historical-identity-snapshot-date-access-items.yaml b/static/api-specs/idn/beta/paths/historical-identity-snapshot-date-access-items.yaml index 2c61b9e4a..7325eda5a 100644 --- a/static/api-specs/idn/beta/paths/historical-identity-snapshot-date-access-items.yaml +++ b/static/api-specs/idn/beta/paths/historical-identity-snapshot-date-access-items.yaml @@ -2,34 +2,35 @@ get: operationId: listIdentitySnapshotAccessItems tags: - Identity History - summary: Gets the list of identity access items at a given date filterd by item type + summary: Get Identity Access Items Snapshot description: >- - This method retrieves the list of identity access items at a given date filterd by item type - Requires authorization scope of 'idn:identity-history:read' + Use this API to get a list of identity access items at a specified date, filtered by item type. + security: + - UserContextAuth: [idn:identity-history:read] parameters: - in: path name: id schema: type: string required: true - description: The identity id + description: Identity ID. example: '8c190e6787aa4ed9a90bd9d5344523fb' - in: path name: date schema: type: string required: true - description: The specified date + description: Specified date. example: '2007-03-01T13:00:00Z' - in: query name: type schema: type: string - description: The access item type + description: Access item type. example: account responses: '200': - description: The identity object. + description: Identity object. content: application/json: schema: @@ -102,5 +103,7 @@ get: $ref: '../../v3/responses/403.yaml' '404': $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' '500': $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/icon.yaml b/static/api-specs/idn/beta/paths/icon.yaml index f2f3e1848..eb9330bed 100644 --- a/static/api-specs/idn/beta/paths/icon.yaml +++ b/static/api-specs/idn/beta/paths/icon.yaml @@ -36,7 +36,7 @@ put: description: file with icon. Allowed mime-types ['image/png', 'image/jpeg'] example: \x00\x00\x00\x02 security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:icons:manage] responses: '200': description: Icon updated @@ -85,7 +85,7 @@ delete: description: Object id. example: a291e870-48c3-4953-b656-fb5ce2a93169 security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:icons:manage] responses: '204': $ref: '../../v3/responses/204.yaml' diff --git a/static/api-specs/idn/beta/paths/identities-invite.yaml b/static/api-specs/idn/beta/paths/identities-invite.yaml new file mode 100644 index 000000000..ed57d64ad --- /dev/null +++ b/static/api-specs/idn/beta/paths/identities-invite.yaml @@ -0,0 +1,44 @@ +post: + operationId: startIdentitiesInvite + tags: + - Identities + summary: Invite identities to register + description: | + This API submits a task for inviting given identities via email to complete registration. The invitation email will include the link. After selecting the link an identity will be able to set up password and log in into the system. Invitations expire after 7 days. By default invitations send to the work identity email. It can be changed in Admin > Identities > Identity Profiles by selecting corresponding profile and editing Invitation Options. + + This task will send an invitation email only for unregistered identities. + + The executed task status can be checked by Task Management > [Get task status by ID](https://developer.sailpoint.com/docs/api/beta/get-task-status) + + A token with ORG_ADMIN or HELPDESK authority is required to call this API. + externalDocs: + description: 'Learn more about inviting identities here' + url: 'https://documentation.sailpoint.com/saas/help/common/users/inviting_users.html' + security: + - UserContextAuth: + - "idn:password-user-invite:create" + requestBody: + required: true + content: + application/json: + schema: + $ref: "../schemas/InviteIdentitiesRequest.yaml" + responses: + "202": + description: Responds with an initial TaskStatus for the executed task + content: + application/json: + schema: + $ref: "../schemas/TaskStatus.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" diff --git a/static/api-specs/idn/beta/paths/identity-attribute.yaml b/static/api-specs/idn/beta/paths/identity-attribute.yaml index b52033b77..e37a7d106 100644 --- a/static/api-specs/idn/beta/paths/identity-attribute.yaml +++ b/static/api-specs/idn/beta/paths/identity-attribute.yaml @@ -41,9 +41,10 @@ put: summary: Update Identity Attribute description: >- This updates an existing identity attribute. - Making an attribute searchable requires that the `system`, `standard`, and `multi` properties be set to false. + Making an attribute searchable requires that the `system`, `standard`, and `multi` properties be set to false. + A token with ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ idn:identity-profile-attribute:create ] + - UserContextAuth: [ idn:identity-profile-attribute:manage ] parameters: - in: path name: name @@ -84,9 +85,10 @@ delete: summary: Delete Identity Attribute description: >- This deletes an identity attribute with the given name. - The `system` and `standard` properties must be set to false before you can delete an identity attribute. + The `system` and `standard` properties must be set to false before you can delete an identity attribute. + A token with ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ idn:identity-profile-attribute:delete ] + - UserContextAuth: [ idn:identity-profile-attribute:manage ] parameters: - in: path name: name diff --git a/static/api-specs/idn/beta/paths/identity-attributes-bulk-delete.yaml b/static/api-specs/idn/beta/paths/identity-attributes-bulk-delete.yaml index 49a1b495d..9cd188977 100644 --- a/static/api-specs/idn/beta/paths/identity-attributes-bulk-delete.yaml +++ b/static/api-specs/idn/beta/paths/identity-attributes-bulk-delete.yaml @@ -1,14 +1,15 @@ -post: +delete: operationId: deleteIdentityAttributesInBulk tags: - Identity Attributes summary: Bulk delete Identity Attributes description: >- - This deletes identity attributes for a given set of names. - Attributes that are currently mapped in an Identity Profile cannot be deleted. - The `system` and `standard` properties must be set to false before you can delete an identity attribute. + Use this API to bulk delete identity attributes for a given set of names. + Attributes that are currently mapped in an identity profile cannot be deleted. + The `system` and `standard` properties must be set to 'false' before you can delete an identity attribute. + A token with ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ idn:identity-profile-attribute-bulk:delete ] + - UserContextAuth: [ idn:identity-profile-attribute:manage ] requestBody: required: true content: diff --git a/static/api-specs/idn/beta/paths/identity-attributes.yaml b/static/api-specs/idn/beta/paths/identity-attributes.yaml index 4eda9a9d7..844450dfa 100644 --- a/static/api-specs/idn/beta/paths/identity-attributes.yaml +++ b/static/api-specs/idn/beta/paths/identity-attributes.yaml @@ -4,9 +4,9 @@ get: - Identity Attributes summary: List Identity Attributes description: >- - This gets a collection of identity attributes. + Use this API to get a collection of identity attributes. security: - - UserContextAuth: [idn:identity-profile-attribute-list:read] + - UserContextAuth: [ idn:identity-profile-attribute:read ] parameters: - in: query name: includeSystem @@ -14,7 +14,7 @@ get: type: boolean default: false description: >- - Include "system" attributes in the response. + Include 'system' attributes in the response. required: false example: false - in: query @@ -23,7 +23,7 @@ get: type: boolean default: false description: >- - Include "silent" attributes in the response. + Include 'silent' attributes in the response. required: false example: false - in: query @@ -32,13 +32,13 @@ get: type: boolean default: false description: >- - Include only "searchable" attributes in the response. + Include only 'searchable' attributes in the response. required: false example: false - $ref: '../../v3/parameters/count.yaml' responses: "200": - description: List of identity attributes + description: List of identity attributes. content: application/json: schema: @@ -61,9 +61,10 @@ post: - Identity Attributes summary: Create Identity Attribute description: >- - This creates a new identity attribute. + Use this API to create a new identity attribute. + A token with ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ idn:identity-profile-attribute:create ] + - UserContextAuth: [ idn:identity-profile-attribute:manage ] requestBody: required: true content: @@ -72,7 +73,7 @@ post: $ref: "../../v3/schemas/identity-attributes/IdentityAttribute.yaml" responses: "201": - description: The identity attribute was created successfully + description: The identity attribute was created successfully. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/identity-ownership.yaml b/static/api-specs/idn/beta/paths/identity-ownership.yaml index a47e7298f..8a297af6e 100644 --- a/static/api-specs/idn/beta/paths/identity-ownership.yaml +++ b/static/api-specs/idn/beta/paths/identity-ownership.yaml @@ -4,7 +4,12 @@ get: tags: - Identities description: >- - Get Ownership association details of an Identity + Use this API to return an identity's owned objects that will cause problems for deleting the identity. + + Use this API as a checklist of objects that you need to reassign to a different identity before you can delete the identity. + + For a full list of objects owned by an identity, use the [Search API](https://developer.sailpoint.com/docs/api/v3/search-post/). + When you search for identities, the returned identities have a property, `owns`, that contains a more comprehensive list of identity's owned objects. security: - UserContextAuth: - "idn:identity:read" @@ -14,12 +19,12 @@ get: schema: type: string required: true - description: The identity id + description: Identity ID. example: 'ff8081814d2a8036014d701f3fbf53fa' responses: "200": description: >- - Ownership association details of an Identity. + Identity's ownership association details. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/identity-profile-lifecycle-state.yaml b/static/api-specs/idn/beta/paths/identity-profile-lifecycle-state.yaml index a9d710333..49c8726e7 100644 --- a/static/api-specs/idn/beta/paths/identity-profile-lifecycle-state.yaml +++ b/static/api-specs/idn/beta/paths/identity-profile-lifecycle-state.yaml @@ -1,30 +1,32 @@ get: - operationId: listLifecycleStates + operationId: getLifecycleStates tags: - Lifecycle States - summary: Lifecycle State + summary: Get Lifecycle State description: | - This endpoint returns a lifecycle state. + Use this endpoint to get a lifecycle state by its ID and its associated identity profile ID. A token with ORG_ADMIN or API authority is required to call this API. parameters: - in: path name: identity-profile-id description: >- - Identity Profile ID + Identity Profile ID. required: true schema: type: string + example: 2b838de9-db9b-abcf-e646-d4f274ad4238 - in: path name: lifecycle-state-id description: >- - Lifecycle State ID + Lifecycle State ID. required: true schema: type: string + example: ef38f94347e94562b5bb8424a56397d8 responses: '200': - description: lifecycle-state + description: Requested lifecycle state. content: application/json: schema: @@ -46,24 +48,26 @@ patch: - Lifecycle States summary: Update Lifecycle State description: | - This API updates individual lifecycle state fields using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + Use this endpoint to update individual lifecycle state fields, using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. A token with ORG_ADMIN or API authority is required to call this API. parameters: - in: path name: identity-profile-id description: >- - Identity Profile ID + Identity Profile ID. required: true schema: type: string + example: 2b838de9-db9b-abcf-e646-d4f274ad4238 - in: path name: lifecycle-state-id description: >- - Lifecycle State ID + Lifecycle State ID. required: true schema: type: string + example: ef38f94347e94562b5bb8424a56397d8 requestBody: required: true description: | @@ -110,7 +114,7 @@ patch: responses: '200': description: >- - Updated lifecycle-state. + Updated lifecycle state. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/identity-profile-process-identities.yaml b/static/api-specs/idn/beta/paths/identity-profile-process-identities.yaml index 265491c74..2618f0d91 100644 --- a/static/api-specs/idn/beta/paths/identity-profile-process-identities.yaml +++ b/static/api-specs/idn/beta/paths/identity-profile-process-identities.yaml @@ -47,6 +47,6 @@ post: '500': $ref: '../../v3/responses/500.yaml' security: - - UserContextAuth: [idn:identity-profile:refresh] + - UserContextAuth: [idn:identity-profile:read, idn:identity-profile:manage] diff --git a/static/api-specs/idn/beta/paths/identity-profiles-identity-preview.yaml b/static/api-specs/idn/beta/paths/identity-profiles-identity-preview.yaml index 85519849e..d3b3b3ba1 100644 --- a/static/api-specs/idn/beta/paths/identity-profiles-identity-preview.yaml +++ b/static/api-specs/idn/beta/paths/identity-profiles-identity-preview.yaml @@ -4,9 +4,11 @@ post: - Identity Profiles summary: Generate Identity Profile Preview description: >- - This generates a non-persisted IdentityDetails object that will represent - as the preview of the identities attribute when the given policy's - attribute config is applied. + Use this API to generate a non-persisted `IdentityDetails` object that represents + a preview of the identity attributes with a specified policy's + attribute config applied. + + This API supports the `accountAttribute`, `rule`, and `reference` transform types. A token with ORG_ADMIN authority is required to call this API to generate an identity preview. requestBody: diff --git a/static/api-specs/idn/beta/paths/identity-send-account-verification.yaml b/static/api-specs/idn/beta/paths/identity-send-account-verification.yaml new file mode 100644 index 000000000..8132ffcea --- /dev/null +++ b/static/api-specs/idn/beta/paths/identity-send-account-verification.yaml @@ -0,0 +1,33 @@ +post: + operationId: sendIdentityVerificationAccountToken + tags: + - Identities + summary: Send password reset email + description: | + This API sends an email with the link to start Password Reset. After selecting the link an identity will be able to set up a new password. Emails expire after 2 hours. + + A token with ORG_ADMIN or HELPDESK authority is required to call this API. + security: + - UserContextAuth: + - "idn:password-user-invite:create" + requestBody: + required: true + content: + application/json: + schema: + $ref: "../schemas/SendAccountVerificationRequest.yaml" + responses: + "200": + description: The email was successfully sent + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" diff --git a/static/api-specs/idn/beta/paths/identity-set-lifecycle-state.yaml b/static/api-specs/idn/beta/paths/identity-set-lifecycle-state.yaml index 5c2d14c95..b27cc0a38 100644 --- a/static/api-specs/idn/beta/paths/identity-set-lifecycle-state.yaml +++ b/static/api-specs/idn/beta/paths/identity-set-lifecycle-state.yaml @@ -4,14 +4,14 @@ post: - Lifecycle States summary: Set Lifecycle State description: | - This endpoint will set/update an identity's lifecycle state to the one provided and updates the corresponding identity profile. + Use this API to set/update an identity's lifecycle state to the one provided and update the corresponding identity profile. - A token with ORG_ADMIN or API authority is required to call this API. + A token with ORG_ADMIN or API authority and the appropriate user context is required to call this API. parameters: - in: path name: identity-id description: >- - The ID of the identity to update. + ID of the identity to update. required: true example: 2c9180857893f1290178944561990364 schema: @@ -27,7 +27,7 @@ post: lifecycleStateId: type: string format: uuid - description: The ID of the lifecycle state to set. + description: ID of the lifecycle state to set. example: 2c9180877a86e408017a8c19fefe046c responses: '200': @@ -41,7 +41,9 @@ post: type: string format: uuid example: 2c9180837ab5b716017ab7c6c9ef1e20 - description: The ID of the IdentityRequest object that is generated when the workflow launches. To follow the IdentityRequest, you can provide this ID with a [Get Account Activity request](https://developer.sailpoint.com/docs/api/beta/get-account-activity/). The response will contain relevant information about the IdentityRequest, such as its status. + description: ID of the IdentityRequest object that is generated when the workflow launches. To follow the IdentityRequest, you can provide this ID with a [Get Account Activity request](https://developer.sailpoint.com/docs/api/beta/get-account-activity/). The response will contain relevant information about the IdentityRequest, such as its status. + '400': + $ref: '../../v3/responses/400.yaml' '401': $ref: '../../v3/responses/401.yaml' '403': diff --git a/static/api-specs/idn/beta/paths/load-accounts.yaml b/static/api-specs/idn/beta/paths/load-accounts.yaml index 973b5985e..4d1d76476 100644 --- a/static/api-specs/idn/beta/paths/load-accounts.yaml +++ b/static/api-specs/idn/beta/paths/load-accounts.yaml @@ -12,7 +12,7 @@ post: A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. security: - - UserContextAuth: [idn:accounts:manage] + - UserContextAuth: [idn:sources:manage] parameters: - in: path name: id @@ -32,9 +32,8 @@ post: format: binary description: The CSV file containing the source accounts to aggregate. disableOptimization: - type: boolean - example: true - default: false + type: string + example: "true" description: Use this flag to reprocess every account whether or not the data has changed. responses: "202": @@ -53,3 +52,4 @@ post: $ref: '../../v3/responses/429.yaml' "500": $ref: "../../v3/responses/500.yaml" + diff --git a/static/api-specs/idn/beta/paths/load-entitlements-by-sources.yaml b/static/api-specs/idn/beta/paths/load-entitlements-by-sources.yaml new file mode 100644 index 000000000..c6e73a61d --- /dev/null +++ b/static/api-specs/idn/beta/paths/load-entitlements-by-sources.yaml @@ -0,0 +1,51 @@ +post: + tags: + - Entitlements + summary: Aggregate Entitlements + deprecated: true + operationId: importEntitlementsBySource + description: >- + Starts an entitlement aggregation on the specified source. Though this endpoint has been deprecated, you can find its Beta equivalent [here](https://developer.sailpoint.com/docs/api/beta/import-entitlements). + + + If the target source is a direct connection, then the request body must be empty. You will also need to make sure the Content-Type header is not set. If you set the Content-Type header without specifying a body, then you will receive a 500 error. + + + If the target source is a delimited file source, then the CSV file needs to be included in the request body. You will also need to set the Content-Type header to `multipart/form-data`. + parameters: + - in: path + name: id + schema: + type: string + required: true + description: Source Id + example: ef38f94347e94562b5bb8424a56397d8 + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + csvFile: + type: string + format: binary + description: The CSV file containing the source entitlements to aggregate. + responses: + "202": + description: Aggregate Entitlements Task + content: + application/json: + schema: + $ref: "../schemas/LoadEntitlementTask.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [ idn:entitlements:manage ] \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/load-entitlements.yaml b/static/api-specs/idn/beta/paths/load-entitlements.yaml index 92382c947..8db4bebad 100644 --- a/static/api-specs/idn/beta/paths/load-entitlements.yaml +++ b/static/api-specs/idn/beta/paths/load-entitlements.yaml @@ -1,16 +1,16 @@ post: tags: - - Entitlements - summary: Aggregate Entitlements + - Sources + summary: Entitlement Aggregation operationId: importEntitlements description: >- Starts an entitlement aggregation on the specified source. - - If the target source is a direct connection, then the request body must be empty. You will also need to make sure the Content-Type header is not set. If you set the Content-Type header without specifying a body, then you will receive a 500 error. + If the target source is a delimited file source, then the CSV file needs to be included in the request body. + You will also need to set the Content-Type header to `multipart/form-data`. - If the target source is a delimited file source, then the CSV file needs to be included in the request body. You will also need to set the Content-Type header to `multipart/form-data`. + A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. parameters: - in: path name: id @@ -25,7 +25,7 @@ post: schema: type: object properties: - csvFile: + file: type: string format: binary description: The CSV file containing the source entitlements to aggregate. diff --git a/static/api-specs/idn/beta/paths/load-uncorrelated-accounts.yaml b/static/api-specs/idn/beta/paths/load-uncorrelated-accounts.yaml new file mode 100644 index 000000000..be3a3c46f --- /dev/null +++ b/static/api-specs/idn/beta/paths/load-uncorrelated-accounts.yaml @@ -0,0 +1,45 @@ +post: + tags: + - Sources + summary: Process Uncorrelated Accounts + operationId: importUncorrelatedAccounts + description: >- + File is required for upload. You will also need to set the Content-Type header to `multipart/form-data` + security: + - UserContextAuth: [ idn:sources:manage ] + parameters: + - in: path + name: id + schema: + type: string + required: true + description: Source Id + example: 75dbec1ebe154d5785da27b95e1dd5d7 + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + "202": + description: Uncorrelated Accounts Task + content: + application/json: + schema: + $ref: "../schemas/LoadUncorrelatedAccountsTask.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + "500": + $ref: "../../v3/responses/500.yaml" + + diff --git a/static/api-specs/idn/beta/paths/manual-discover-applications-template.yaml b/static/api-specs/idn/beta/paths/manual-discover-applications-template.yaml index b43b040b8..8f7a90da2 100644 --- a/static/api-specs/idn/beta/paths/manual-discover-applications-template.yaml +++ b/static/api-specs/idn/beta/paths/manual-discover-applications-template.yaml @@ -1,10 +1,13 @@ get: summary: CSV template download for discovery tags: - - Manual Discover Applications Template + - Application Discovery description: > - Allows the user to download an example CSV file with two columns `application_name` and `domain`. + This endpoint allows the user to download an example CSV file with two columns `application_name` and `description`. The CSV file contains a single row with the values 'Example Application' and 'Example Description'. + + + The downloaded template is specifically designed for use with the `/manual-discover-applications` endpoint. security: - UserContextAuth: - 'idn:application-discovery:read' @@ -15,7 +18,10 @@ get: content: text/csv: schema: - $ref: '../schemas/ManualDiscoverApplicationsTemplate.yaml' + $ref: '../../beta/schemas/ManualDiscoverApplicationsTemplate.yaml' + example: | + application_name,description + Example Application,Example Description '400': $ref: '../../v3/responses/400.yaml' '401': diff --git a/static/api-specs/idn/beta/paths/manual-discover-applications.yaml b/static/api-specs/idn/beta/paths/manual-discover-applications.yaml index 2835ab674..d40a6a670 100644 --- a/static/api-specs/idn/beta/paths/manual-discover-applications.yaml +++ b/static/api-specs/idn/beta/paths/manual-discover-applications.yaml @@ -1,10 +1,11 @@ post: summary: CSV Upload to discover applications tags: - - Manual Discover Applications + - Application Discovery description: >- - This API allows for the upload of a CSV file containing application data to - be manually correlated to potential IDN connector(s). + This endpoint supports uploading a CSV file with application data for manual correlation to specific IDN connectors. + + If a suitable IDN connector is unavailable, the system will recommend generic connectors instead. security: - UserContextAuth: - 'idn:application-discovery:write' @@ -13,20 +14,10 @@ post: content: multipart/form-data: schema: - type: object - properties: - csvFile: - type: string - format: binary - required: - - csvFile + $ref: '../schemas/ManualDiscoverApplications.yaml' responses: '200': description: The CSV has been successfully processed. - content: - multipart/form-data: - schema: - $ref: '../schemas/ManualDiscoverApplications.yaml' '400': $ref: '../../v3/responses/400.yaml' description: > diff --git a/static/api-specs/idn/beta/paths/password-policies.yaml b/static/api-specs/idn/beta/paths/password-policies.yaml index 08de2b334..17258d92a 100644 --- a/static/api-specs/idn/beta/paths/password-policies.yaml +++ b/static/api-specs/idn/beta/paths/password-policies.yaml @@ -120,7 +120,9 @@ get: "useIdentityAttributes": false, "validateAgainstAccountId": true, "validateAgainstAccountName": true, - "sourceIds": ["2c91808382ffee0b01830de154f14034","2c91808582ffee0c01830de36511405f" ] + "sourceIds": ["2c91808382ffee0b01830de154f14034","2c91808582ffee0c01830de36511405f" ], + "created": null, + "modified": null }, { "description": null, @@ -151,7 +153,9 @@ get: "useIdentityAttributes": true, "validateAgainstAccountId": false, "validateAgainstAccountName": false, - "sourceIds": [ ] + "sourceIds": [ ], + "created": null, + "modified": null } ] '400': diff --git a/static/api-specs/idn/beta/paths/password-policy.yaml b/static/api-specs/idn/beta/paths/password-policy.yaml index c94138613..629ca9fe6 100644 --- a/static/api-specs/idn/beta/paths/password-policy.yaml +++ b/static/api-specs/idn/beta/paths/password-policy.yaml @@ -53,7 +53,9 @@ get: "useIdentityAttributes": false, "validateAgainstAccountId": true, "validateAgainstAccountName": true, - "sourceIds": ["2c91808382ffee0b01830de154f14034","2c91808582ffee0c01830de36511405f" ] + "sourceIds": ["2c91808382ffee0b01830de154f14034","2c91808582ffee0c01830de36511405f" ], + "created": null, + "modified": null } '400': $ref: '../../v3/responses/400.yaml' diff --git a/static/api-specs/idn/beta/paths/reject-access-request-approval.yaml b/static/api-specs/idn/beta/paths/reject-access-request-approval.yaml index 781ccde4c..82fa0dca4 100644 --- a/static/api-specs/idn/beta/paths/reject-access-request-approval.yaml +++ b/static/api-specs/idn/beta/paths/reject-access-request-approval.yaml @@ -1,21 +1,21 @@ post: operationId: rejectAccessRequest - summary: Rejects an access request approval. + summary: Reject Access Request Approval tags: - Access Request Approvals description: >- - This endpoint rejects an access request approval. Only the owner of the approval and admin users are allowed to perform this action. + Use this API to reject an access request approval. Only the owner of the approval and admin users are allowed to perform this action. parameters: - in: path name: approvalId schema: type: string required: true - description: The id of the approval. + description: Approval ID. example: 2c91808b7294bea301729568c68c002e requestBody: description: Reviewer's comment. - required: false + required: true content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/remove-accounts.yaml b/static/api-specs/idn/beta/paths/remove-accounts.yaml index c54de3c20..72418b846 100644 --- a/static/api-specs/idn/beta/paths/remove-accounts.yaml +++ b/static/api-specs/idn/beta/paths/remove-accounts.yaml @@ -1,8 +1,8 @@ post: operationId: deleteAccountsAsync - summary: Remove All Accounts + summary: Remove All Accounts in a Source tags: - - Accounts + - Sources description: | Use this endpoint to remove all accounts from the system without provisioning changes to the source. Accounts that are removed could be re-created during the next aggregation. diff --git a/static/api-specs/idn/beta/paths/role-mining-sessions.yaml b/static/api-specs/idn/beta/paths/role-mining-sessions.yaml index dd5abf0be..419b99a35 100644 --- a/static/api-specs/idn/beta/paths/role-mining-sessions.yaml +++ b/static/api-specs/idn/beta/paths/role-mining-sessions.yaml @@ -76,7 +76,7 @@ get: schema: type: array items: - $ref: '../schemas/RoleMiningSessionDto.yaml' + $ref: '../schemas/RoleMiningSessionResponse.yaml' '400': $ref: '../../v3/responses/400.yaml' '401': diff --git a/static/api-specs/idn/beta/paths/role.yaml b/static/api-specs/idn/beta/paths/role.yaml index eee384c96..38544014c 100644 --- a/static/api-specs/idn/beta/paths/role.yaml +++ b/static/api-specs/idn/beta/paths/role.yaml @@ -46,25 +46,40 @@ patch: description: >- This API updates an existing role using [JSON Patch](https://tools.ietf.org/html/rfc6902) syntax. + The following fields are patchable: + + * name + * description + * enabled + * owner + * accessProfiles + * membership + * requestable + * accessRequestConfig + * revokeRequestConfig + * segments + A token with API, ORG_ADMIN, ROLE_ADMIN, or ROLE_SUBADMIN authority is required to call this API. In addition, a token with ROLE_SUBADMIN authority may only call this API if all access profiles included in the role are associated to Sources with management workgroups of which the ROLE_SUBADMIN is a member. + The maximum supported length for the description field is 2000 characters. Longer descriptions will be preserved for existing roles, however, any new roles as well as any updates to existing descriptions will be limited to 2000 characters. + When you use this API to modify a role's membership identities, you can only modify up to a limit of 500 membership identities at a time. parameters: - name: id @@ -210,6 +225,7 @@ delete: description: >- This API deletes a Role by its ID. + A token with API, ORG_ADMIN, ROLE_ADMIN, or ROLE_SUBADMIN authority is required to call this API. In addition, a token with ROLE_SUBADMIN authority may only call this API if all Access Profiles included in the Role are associated to Sources with management workgroups of which the ROLE_SUBADMIN is a member. diff --git a/static/api-specs/idn/beta/paths/roles.yaml b/static/api-specs/idn/beta/paths/roles.yaml index eafe0f3fa..90948c713 100644 --- a/static/api-specs/idn/beta/paths/roles.yaml +++ b/static/api-specs/idn/beta/paths/roles.yaml @@ -77,7 +77,6 @@ get: If segmentation is currently unavailable, specifying this parameter results in an error. - example: 0b5c9f25-83c6-4762-9073-e38f7bb2ae26,2e8d8180-24bc-4d21-91c6-7affdb473b0d required: false - in: query @@ -119,12 +118,15 @@ post: description: >- This API creates a role. + You must have a token with API, ORG_ADMIN, ROLE_ADMIN, or ROLE_SUBADMIN authority to call this API. + In addition, a ROLE_SUBADMIN may not create a role including an access profile if that access profile is associated with a source the ROLE_SUBADMIN is not associated with themselves. + The maximum supported length for the description field is 2000 characters. Longer descriptions will be preserved for existing roles. However, any new roles as well as any updates to existing descriptions will be limited to 2000 characters. requestBody: diff --git a/static/api-specs/idn/beta/paths/schemas.yaml b/static/api-specs/idn/beta/paths/schemas.yaml index 94ec4ba1c..dc104de5c 100644 --- a/static/api-specs/idn/beta/paths/schemas.yaml +++ b/static/api-specs/idn/beta/paths/schemas.yaml @@ -1,35 +1,41 @@ get: - operationId: listSourceSchemas + operationId: getSourceSchemas tags: - Sources - summary: Lists the Schemas that exist on the specified Source in IdentityNow. + summary: List Schemas on Source + description: Use this API to list the schemas that exist on the specified source in Identity Security Cloud (ISC). parameters: - in: path name: sourceId required: true schema: type: string - description: The Source id. + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 - in: query name: include-types required: false schema: type: string + enum: + - group + - user description: >- If set to 'group', then the account schema is filtered and only group schemas are returned. Only a value of 'group' is recognized. example: group responses: '200': - description: The Schemas were successfully retrieved. + description: The schemas were successfully retrieved. content: application/json: schema: type: array items: $ref: '../schemas/Schema.yaml' + '400': + $ref: '../../v3/responses/400.yaml' '401': $ref: '../../v3/responses/401.yaml' '403': @@ -44,14 +50,15 @@ post: operationId: createSourceSchema tags: - Sources - summary: Creates a new Schema on the specified Source in IdentityNow. + summary: Create Schema on Source + description: Use this API to create a new schema on the specified source in Identity Security Cloud (ISC). parameters: - in: path name: sourceId required: true schema: type: string - description: The Source id. + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true @@ -61,7 +68,7 @@ post: $ref: '../schemas/Schema.yaml' responses: '201': - description: The Schema was successfully created on the specified Source. + description: The schema was successfully created on the specified source. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/set-password.yaml b/static/api-specs/idn/beta/paths/set-password.yaml index e9db06242..4950e9f07 100644 --- a/static/api-specs/idn/beta/paths/set-password.yaml +++ b/static/api-specs/idn/beta/paths/set-password.yaml @@ -3,6 +3,8 @@ post: tags: - Password Management summary: Set Identity's Password + security: + - UserContextAuth: [idn:password-change:manage] description: | This API is used to set a password for an identity. diff --git a/static/api-specs/idn/beta/paths/sim-integrations-before-provisioning-rule.yaml b/static/api-specs/idn/beta/paths/sim-integrations-before-provisioning-rule.yaml new file mode 100644 index 000000000..881128e7b --- /dev/null +++ b/static/api-specs/idn/beta/paths/sim-integrations-before-provisioning-rule.yaml @@ -0,0 +1,42 @@ +patch: + tags: + - SIM Integrations + summary: Patch a SIM beforeProvisioningRule attribute. + description: Patch a SIM beforeProvisioningRule attribute given a JsonPatch object. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: patchBeforeProvisioningRule + requestBody: + required: true + description: The JsonPatch object that describes the changes of SIM beforeProvisioningRule. + content: + application/json-patch+json: + schema: + $ref: '../schemas/JsonPatch.yaml' + parameters: + - name: id + in: path + description: SIM integration id + schema: + type: string + example: 12345 + required: true + responses: + '200': + description: The updated DTO containing the details of the SIM integration. + content: + application/json: + schema: + $ref: '../schemas/ServiceDeskIntegrationDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:write] \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/sim-integrations-value-list.yaml b/static/api-specs/idn/beta/paths/sim-integrations-value-list.yaml new file mode 100644 index 000000000..e0cef139b --- /dev/null +++ b/static/api-specs/idn/beta/paths/sim-integrations-value-list.yaml @@ -0,0 +1,62 @@ +get: + tags: + - SIM Integrations + summary: List the existing SIM integrations. + description: List the existing SIM integrations. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: getSIMIntegrations + responses: + '200': + description: The DTO containing the details of the SIM integration + content: + application/json: + schema: + $ref: '../schemas/ServiceDeskIntegrationDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:read] + +post: + tags: + - SIM Integrations + summary: Create new SIM integration + description: Create a new SIM Integrations. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: createSIMIntegration + requestBody: + description: DTO containing the details of the SIM integration + content: + application/json: + schema: + $ref: '../schemas/SimIntegrationDetails.yaml' + required: true + responses: + '200': + description: details of the created integration + content: + application/json: + schema: + $ref: '../schemas/ServiceDeskIntegrationDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:create] \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/sim-integrations.yaml b/static/api-specs/idn/beta/paths/sim-integrations.yaml new file mode 100644 index 000000000..247749dd8 --- /dev/null +++ b/static/api-specs/idn/beta/paths/sim-integrations.yaml @@ -0,0 +1,153 @@ +put: + tags: + - SIM Integrations + summary: Update an existing SIM integration + description: Update an existing SIM integration. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: putSIMIntegration + requestBody: + description: The full DTO of the integration containing the updated model + content: + application/json: + schema: + $ref: '../schemas/SimIntegrationDetails.yaml' + required: true + parameters: + - name: id + in: path + description: The id of the integration. + schema: + type: string + example: 12345 + required: true + responses: + '200': + description: details of the updated integration + content: + application/json: + schema: + $ref: '../schemas/ServiceDeskIntegrationDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:create] + +get: + tags: + - SIM Integrations + summary: Get a SIM integration details. + description: Get the details of a SIM integration. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: getSIMIntegration + parameters: + - name: id + in: path + description: The id of the integration. + schema: + type: string + example: 12345 + required: true + responses: + '200': + description: The DTO containing the details of the SIM integration + content: + application/json: + schema: + $ref: '../schemas/ServiceDeskIntegrationDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:read] + +delete: + tags: + - SIM Integrations + summary: Delete a SIM integration + description: Get the details of a SIM integration. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: deleteSIMIntegration + parameters: + - name: id + description: The id of the integration to delete. + in: path + schema: + type: string + example: 12345 + required: true + responses: + '200': + description: No content response + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:write] + +patch: + tags: + - SIM Integrations + summary: Patch a SIM attribute. + description: Patch a SIM attribute given a JsonPatch object. A token with Org Admin or Service Desk Admin authority is required to access this endpoint. + operationId: patchSIMAttributes + requestBody: + required: true + description: The JsonPatch object that describes the changes of SIM + content: + application/json-patch+json: + schema: + $ref: '../schemas/JsonPatch.yaml' + parameters: + - name: id + description: SIM integration id + in: path + schema: + type: string + example: 12345 + required: true + responses: + '200': + description: The updated DTO containing the details of the SIM integration. + content: + application/json: + schema: + $ref: '../schemas/ServiceDeskIntegrationDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [idn:service-desk-admin:write] \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/sod-all-report-run.yaml b/static/api-specs/idn/beta/paths/sod-all-report-run.yaml index e521eac22..09eddf4d5 100644 --- a/static/api-specs/idn/beta/paths/sod-all-report-run.yaml +++ b/static/api-specs/idn/beta/paths/sod-all-report-run.yaml @@ -1,7 +1,7 @@ post: operationId: startSodAllPoliciesForOrg tags: - - SOD Policy + - SOD Policies summary: Runs all policies for org deprecated: true security: diff --git a/static/api-specs/idn/beta/paths/sod-all-report-status.yaml b/static/api-specs/idn/beta/paths/sod-all-report-status.yaml index 6080fdbc9..ff36945ce 100644 --- a/static/api-specs/idn/beta/paths/sod-all-report-status.yaml +++ b/static/api-specs/idn/beta/paths/sod-all-report-status.yaml @@ -1,7 +1,7 @@ get: operationId: getSodAllReportRunStatus tags: - - SOD Policy + - SOD Policies summary: Get multi-report run task status deprecated: true security: diff --git a/static/api-specs/idn/beta/paths/sod-download-custom-report.yaml b/static/api-specs/idn/beta/paths/sod-download-custom-report.yaml index 949c1eedc..d62937e5e 100644 --- a/static/api-specs/idn/beta/paths/sod-download-custom-report.yaml +++ b/static/api-specs/idn/beta/paths/sod-download-custom-report.yaml @@ -1,7 +1,7 @@ get: operationId: getCustomViolationReport tags: - - SOD Policy + - SOD Policies summary: Download custom violation report deprecated: true security: diff --git a/static/api-specs/idn/beta/paths/sod-download-default-report.yaml b/static/api-specs/idn/beta/paths/sod-download-default-report.yaml index 8b084c2bd..3f502c117 100644 --- a/static/api-specs/idn/beta/paths/sod-download-default-report.yaml +++ b/static/api-specs/idn/beta/paths/sod-download-default-report.yaml @@ -1,7 +1,7 @@ get: operationId: getDefaultViolationReport tags: - - SOD Policy + - SOD Policies summary: Download violation report deprecated: true security: diff --git a/static/api-specs/idn/beta/paths/sod-policies.yaml b/static/api-specs/idn/beta/paths/sod-policies.yaml index 5860654fb..68152f456 100644 --- a/static/api-specs/idn/beta/paths/sod-policies.yaml +++ b/static/api-specs/idn/beta/paths/sod-policies.yaml @@ -257,15 +257,27 @@ get: Filtering is supported for the following fields and operators: - **id**: *eq* - - - **name**: *eq* - - - **state**: *eq* + **id**: *eq, in* + + + **name**: *eq, in* + + + **state**: *eq, in* example: id eq "bc693f07e7b645539626c25954c58554" required: false + - in: query + name: sorters + required: false + schema: + type: string + format: comma-separated + example: id,name + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id, name, created, modified, description** responses: "200": description: List of all SOD policies. diff --git a/static/api-specs/idn/beta/paths/sod-violation-check.yaml b/static/api-specs/idn/beta/paths/sod-violation-check.yaml index 63691dfb7..58a79d692 100644 --- a/static/api-specs/idn/beta/paths/sod-violation-check.yaml +++ b/static/api-specs/idn/beta/paths/sod-violation-check.yaml @@ -1,7 +1,7 @@ post: - operationId: violationCheck + operationId: startViolationCheck tags: - - SOD Policy + - SOD Policies summary: Check SOD violations description: >- This API initiates a SOD policy verification asynchronously. diff --git a/static/api-specs/idn/beta/paths/sod-violation-report-status.yaml b/static/api-specs/idn/beta/paths/sod-violation-report-status.yaml index f7511bde8..fcf570e7a 100644 --- a/static/api-specs/idn/beta/paths/sod-violation-report-status.yaml +++ b/static/api-specs/idn/beta/paths/sod-violation-report-status.yaml @@ -1,7 +1,7 @@ get: operationId: getSodViolationReportRunStatus tags: - - SOD Policy + - SOD Policies summary: Get violation report run status deprecated: true security: diff --git a/static/api-specs/idn/beta/paths/sod/arm-risk.yaml b/static/api-specs/idn/beta/paths/sod/arm-risk.yaml index be8c8662a..ebd4f8ee8 100644 --- a/static/api-specs/idn/beta/paths/sod/arm-risk.yaml +++ b/static/api-specs/idn/beta/paths/sod/arm-risk.yaml @@ -1,7 +1,7 @@ get: operationId: getArmRiskById tags: - - SOD Policy + - SOD Policies summary: Gets the specified ARM risk. description: >- This API gets the specified ARM risk. diff --git a/static/api-specs/idn/beta/paths/source.yaml b/static/api-specs/idn/beta/paths/source.yaml index 76ff2e191..9260102fe 100644 --- a/static/api-specs/idn/beta/paths/source.yaml +++ b/static/api-specs/idn/beta/paths/source.yaml @@ -6,7 +6,7 @@ get: - Sources summary: Get Source by ID description: >- - This end-point gets a specific source in IdentityNow. + Use this API to get a source by a specified ID in Identity Security Cloud (ISC). A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. parameters: @@ -15,11 +15,11 @@ get: schema: type: string required: true - description: The Source ID + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 responses: '200': - description: A Source object + description: Source object. content: application/json: schema: @@ -44,10 +44,9 @@ put: - Sources summary: Update Source (Full) description: | - This API updates a source in IdentityNow, using a full object representation. In other words, the existing Source - configuration is completely replaced. + Use this API to update a source in Identity Security Cloud (ISC), using a full object representation. This means that when you use this API, it completely replaces the existing source configuration. - Some fields are immutable and cannot be changed, such as: + These fields are immutable, so they cannot be changed: * id * type @@ -65,7 +64,7 @@ put: schema: type: string required: true - description: The Source id + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true @@ -76,8 +75,8 @@ put: responses: '200': description: >- - Updated Source object. Any passwords will only show the the encrypted cipher-text, as they are not decrypt-able - in IdentityNow cloud-based services, per IdentityNow security design. + Updated Source object. Any passwords will only show the the encrypted cipher-text so that they aren't decryptable + in Identity Security Cloud (ISC) cloud-based services, per ISC security design. content: application/json: schema: @@ -102,10 +101,10 @@ patch: - Sources summary: Update Source (Partial) description: | - This API partially updates a source in IdentityNow, using a list of patch operations according to the + Use this API to partially update a source in Identity Security Cloud (ISC), using a list of patch operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. - Some fields are immutable and cannot be changed, such as: + These fields are immutable, so they cannot be changed: * id * type * authoritative @@ -124,13 +123,13 @@ patch: schema: type: string required: true - description: The Source id + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true description: >- A list of account update operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. - Any password changes are submitted as plain-text and encrypted upon receipt in IdentityNow. + Any password changes are submitted as plain-text and encrypted upon receipt in Identity Security Cloud (ISC). content: application/json-patch+json: schema: @@ -149,7 +148,7 @@ patch: } ] Edit the source cluster: - description: This example shows how to edit a source cluster by id. + description: This example shows how to edit a source cluster by ID. value: [ { @@ -160,7 +159,7 @@ patch: ] Edit source features: - description: This example illustrates how you can update source supported features + description: This example illustrates how you can update source supported features. value: [ { @@ -174,8 +173,8 @@ patch: ] } ] - Change a source description and cluster in One Call: - description: This example shows how multiple fields may be updated with a single patch call. + Change a source description and cluster in one call: + description: This example shows how multiple fields may be updated with a single PATCH call. value: [ { @@ -190,7 +189,7 @@ patch: } ] Add a filter string to the connector: - description: This example shows how you can add a filter to incoming accounts during the account aggregation process. In the example below, any account that does not have an "m" or "d" in the id will be aggregated. + description: This example shows how you can add a filter to incoming accounts during the account aggregation process. In the example, any account that does not have an "m" or "d" in the ID will be aggregated. value: [ { @@ -200,7 +199,7 @@ patch: } ] Update connector attribute for specific operation type: - description: This example shows how you can update the 3rd object in the connection parameters operationType. This will change it from a standard group aggregation to a group aggregation on the "test" entitlement type + description: This example shows how you can update the 3rd object in the connection parameter's `operationType`. This changes it from a standard group aggregation to a group aggregation on the "test" entitlement type. value: [ { @@ -209,11 +208,28 @@ patch: "value": "Group Aggregation-test" } ] + Enable notifications for new account provisioning on a source: + description: This example shows how you can configure and enable email notifications that will send when new accounts are provisioned on a source. + value: + [ + { + "op": "replace", + "path": "/connectorAttributes/accountCreateNotification", + "value": { + "notifyList": [ + "Distribution.list@demo.com" + ], + "notifyAccountOwner": true, + "enabled": true, + "notifyAccountOwnerAltEmail": false + } + } + ] responses: '200': description: >- - Updated Source object. Any passwords will only show the the encrypted cipher-text, as they are not decrypt-able - in IdentityNow cloud-based services, per IdentityNow security design. + Updated Source object. Any passwords will only show the the encrypted cipher-text so that they are not decryptable + in Identity Security Cloud cloud-based services, per ISC security design. content: application/json: schema: @@ -238,19 +254,19 @@ delete: - Sources summary: Delete Source by ID description: >- - This end-point deletes a specific source in IdentityNow. + Use this API to delete a specific source in Identity Security Cloud (ISC). + + The API removes all the accounts on the source first, and then it deletes the source. + You can retrieve the actual task execution status with this method: GET `/task-status/{id}` A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. - - All of accounts on the source will be removed first, then the source will be deleted. - Actual status of task execution can be retrieved via method GET `/task-status/{id}` parameters: - in: path name: id schema: type: string required: true - description: The Source ID + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 responses: '202': @@ -261,22 +277,22 @@ delete: type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - TASK_RESULT example: TASK_RESULT id: type: string - description: ID of the task result + description: Task result ID. example: 2c91808779ecf55b0179f720942f181a name: type: string - description: Human-readable display name of the task result (should be null/empty) + description: Task result's human-readable display name (this should be null/empty). example: null examples: deleteSource: - summary: Response returned when deleting a source + summary: Response returned when a source is being deleted. value: {"type": "TASK_RESULT", "id": "2c91808779ecf55b0179f720942f181a", "name": null} '400': $ref: '../../v3/responses/400.yaml' diff --git a/static/api-specs/idn/beta/paths/task-status-list.yaml b/static/api-specs/idn/beta/paths/task-status-list.yaml index 33f31c4de..46d794625 100644 --- a/static/api-specs/idn/beta/paths/task-status-list.yaml +++ b/static/api-specs/idn/beta/paths/task-status-list.yaml @@ -2,7 +2,8 @@ get: tags: - Task Management summary: Retrieve a task status list. - description: Get a TaskStatus list. + description: | + Use this endpoint to get a list of **completed** tasks. To get a list of tasks **in-progress**, please use the [get pending tasks](https://developer.sailpoint.com/docs/api/beta/get-pending-tasks) endpoint. operationId: getTaskStatusList parameters: - $ref: '../../v3/parameters/limit.yaml' diff --git a/static/api-specs/idn/beta/paths/task-status.yaml b/static/api-specs/idn/beta/paths/task-status.yaml index 15f8f2f0d..b94b54d16 100644 --- a/static/api-specs/idn/beta/paths/task-status.yaml +++ b/static/api-specs/idn/beta/paths/task-status.yaml @@ -10,13 +10,13 @@ get: parameters: - name: id in: path - description: Task ID of the TaskStatus to get + description: Task ID. required: true + example: 00eebcf881994e419d72e757fd30dc0e style: simple explode: false schema: type: string - example: anId responses: "200": description: Responds with a TaskStatus for the task with the given task ID. @@ -39,30 +39,40 @@ get: security: - UserContextAuth: [idn:task-management:read] patch: + operationId: updateTaskStatus tags: - Task Management summary: Update task status by ID - description: Update a current TaskStatus for a task by task ID. - operationId: updateTaskStatus + description: Update a current task status by task ID. Use this API to clear a pending task by updating the completionStatus and completed attributes. parameters: - name: id in: path - description: Task ID of the task whose TaskStatus to update + description: Task ID. + example: 00eebcf881994e419d72e757fd30dc0e required: true style: simple explode: false schema: type: string - example: anId requestBody: + required: true + description: The JSONPatch payload used to update the object. content: application/json-patch+json: schema: - $ref: '../schemas/JsonPatch.yaml' - required: true + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" + example: + - op: replace + path: /completionStatus + value: Error + - op: replace + path: /completed + value: 2024-05-17T19:33:16.470Z responses: "200": - description: Responds with the updated TaskStatus for the task with the given task ID. + description: This response indicates the PATCH operation succeeded, and the API returns the updated task object. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/ui-metadata/tenant-ui-metadata.yaml b/static/api-specs/idn/beta/paths/ui-metadata/tenant-ui-metadata.yaml index fc86dfad3..6155208f6 100644 --- a/static/api-specs/idn/beta/paths/ui-metadata/tenant-ui-metadata.yaml +++ b/static/api-specs/idn/beta/paths/ui-metadata/tenant-ui-metadata.yaml @@ -8,7 +8,7 @@ get: A token with ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:ui-access-metadata-page:read] responses: '200': description: A tenant UI metadata object @@ -44,7 +44,7 @@ put: schema: $ref: "../../schemas/ui-metadata/TenantUiMetadataItemUpdateRequest.yaml" security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:ui-access-metadata-page:manage] responses: '200': description: A tenant UI metadata object diff --git a/static/api-specs/idn/beta/paths/vendor-connector-mappings.yaml b/static/api-specs/idn/beta/paths/vendor-connector-mappings.yaml index b4f4f5af0..d07e197e9 100644 --- a/static/api-specs/idn/beta/paths/vendor-connector-mappings.yaml +++ b/static/api-specs/idn/beta/paths/vendor-connector-mappings.yaml @@ -4,7 +4,7 @@ get: - 'idn:application-discovery:read' operationId: getVendorConnectorMappings tags: - - Vendor Connector Mappings + - Application Discovery summary: List vendor connector mappings description: > Retrieves a list of mappings between SaaS vendors and IDN connectors, detailing the connections established for correlation. diff --git a/static/api-specs/idn/beta/paths/work-items-count.yaml b/static/api-specs/idn/beta/paths/work-items-count.yaml index 6f3cae27b..7788c10fa 100644 --- a/static/api-specs/idn/beta/paths/work-items-count.yaml +++ b/static/api-specs/idn/beta/paths/work-items-count.yaml @@ -18,9 +18,9 @@ get: content: application/json: schema: - type: array - items: - $ref: '../schemas/WorkItemsCount.yaml' + # type: array + # items: + $ref: '../schemas/WorkItemsCount.yaml' '400': $ref: '../../v3/responses/400.yaml' '403': diff --git a/static/api-specs/idn/beta/paths/work-items-summary.yaml b/static/api-specs/idn/beta/paths/work-items-summary.yaml index 86aa54799..ebe61baa2 100644 --- a/static/api-specs/idn/beta/paths/work-items-summary.yaml +++ b/static/api-specs/idn/beta/paths/work-items-summary.yaml @@ -18,9 +18,9 @@ get: content: application/json: schema: - type: array - items: - $ref: '../schemas/WorkItemsSummary.yaml' + # type: array + # items: + $ref: '../schemas/WorkItemsSummary.yaml' '400': $ref: '../../v3/responses/400.yaml' '403': diff --git a/static/api-specs/idn/beta/paths/workflow-execution.yaml b/static/api-specs/idn/beta/paths/workflow-execution.yaml index fa3164913..18e647dd6 100644 --- a/static/api-specs/idn/beta/paths/workflow-execution.yaml +++ b/static/api-specs/idn/beta/paths/workflow-execution.yaml @@ -2,15 +2,15 @@ get: operationId: getWorkflowExecution tags: - Workflows - summary: Get a Workflow Execution + summary: Get Workflow Execution description: >- - Get a single workflow execution. Workflow executions are available for up to 90 days before being archived. If you attempt to access a workflow execution that has been archived, you will receive a 404 Not Found. + Use this API to get a single workflow execution. Workflow executions are available for up to 90 days before being archived. If you attempt to access a workflow execution that has been archived, you will receive a "404 Not Found" response. security: - UserContextAuth: [sp:workflow:read] parameters: - name: id in: path - description: Id of the workflow execution + description: Workflow execution ID. required: true style: simple explode: false @@ -20,7 +20,7 @@ get: responses: '200': description: >- - The workflow execution + Workflow execution. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/workflow-executions.yaml b/static/api-specs/idn/beta/paths/workflow-executions.yaml index 62862a80b..b1e63f39c 100644 --- a/static/api-specs/idn/beta/paths/workflow-executions.yaml +++ b/static/api-specs/idn/beta/paths/workflow-executions.yaml @@ -1,10 +1,10 @@ get: - operationId: listWorkflowExecutions + operationId: getWorkflowExecutions tags: - Workflows summary: List Workflow Executions description: >- - This lists the executions for a given workflow. Workflow executions are available for up to 90 days before being archived. + Use this API to list a specified workflow's executions. Workflow executions are available for up to 90 days before being archived. By default, you can get a maximum of 250 executions. To get executions past the first 250 records, you can do the following: @@ -17,7 +17,7 @@ get: - Filter to find relevant workflow executions. For example, you can filter for failed workflow executions: `GET /workflows/:workflowID/executions?filters=status eq "Failed"` - - You can paginate through results with the `offset` parameter. + - Paginate through results with the `offset` parameter. For example, you can page through 50 executions per page and use that as a way to get to the records past the first 250. Refer to [Paginating Results](https://developer.sailpoint.com/idn/api/standard-collection-parameters#paginating-results) for more information about the query parameters you can use to achieve pagination. security: @@ -25,7 +25,7 @@ get: parameters: - name: id in: path - description: Id of the workflow + description: Workflow ID. required: true style: simple explode: false @@ -55,7 +55,7 @@ get: responses: '200': description: >- - List of workflow executions for the given workflow + List of workflow executions for the specified workflow. content: application/json: schema: diff --git a/static/api-specs/idn/beta/paths/workgroups/workgroups.yaml b/static/api-specs/idn/beta/paths/workgroups/workgroups.yaml index 7b2b62c11..9e8850d88 100644 --- a/static/api-specs/idn/beta/paths/workgroups/workgroups.yaml +++ b/static/api-specs/idn/beta/paths/workgroups/workgroups.yaml @@ -23,6 +23,9 @@ get: **name**: *eq, sw, in* + + + **memberships.identityId**: *eq, in* example: name sw "Test" required: false - in: query diff --git a/static/api-specs/idn/beta/schemas/AccessItemAccessProfileResponse.yaml b/static/api-specs/idn/beta/schemas/AccessItemAccessProfileResponse.yaml index 93ebacf23..ddbcfb5a0 100644 --- a/static/api-specs/idn/beta/schemas/AccessItemAccessProfileResponse.yaml +++ b/static/api-specs/idn/beta/schemas/AccessItemAccessProfileResponse.yaml @@ -35,4 +35,19 @@ properties: appDisplayName: type: string example: AppName - description: the name of app \ No newline at end of file + description: the name of + removeDate: + type: string + example: 2024-07-01T06:00:00.00Z + description: the date the access profile is no longer assigned to the specified identity + standalone: + type: boolean + example: false + description: indicates whether the access profile is standalone + revocable: + type: boolean + example: true + description: indicates whether the access profile is +required: + - standalone + - revocable \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/AccessItemAppResponse.yaml b/static/api-specs/idn/beta/schemas/AccessItemAppResponse.yaml index 10d93d90f..6fda71816 100644 --- a/static/api-specs/idn/beta/schemas/AccessItemAppResponse.yaml +++ b/static/api-specs/idn/beta/schemas/AccessItemAppResponse.yaml @@ -11,10 +11,14 @@ properties: displayName: type: string example: Display Name - description: the access profile display name + description: the access item display name sourceName: type: string example: appName description: the associated source name if it exists + appRoleId: + type: string + example: 2c918087763e69d901763e72e97f006f + description: the app role id \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/AccessItemEntitlementResponse.yaml b/static/api-specs/idn/beta/schemas/AccessItemEntitlementResponse.yaml index 19be9f523..36d47a8c2 100644 --- a/static/api-specs/idn/beta/schemas/AccessItemEntitlementResponse.yaml +++ b/static/api-specs/idn/beta/schemas/AccessItemEntitlementResponse.yaml @@ -36,4 +36,19 @@ properties: type: string example: Dr. Arden Rogahn MD description: the display name of the identity - \ No newline at end of file + standalone: + type: boolean + example: true + description: indicates whether the entitlement is standalone + privileged: + type: boolean + example: false + description: indicates whether the entitlement is privileged + cloudGoverned: + type: boolean + example: true + description: indicates whether the entitlement is cloud governed +required: + - standalone + - privileged + - cloudGoverned \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/AccessItemRoleResponse.yaml b/static/api-specs/idn/beta/schemas/AccessItemRoleResponse.yaml index eda1a9a35..d3685379b 100644 --- a/static/api-specs/idn/beta/schemas/AccessItemRoleResponse.yaml +++ b/static/api-specs/idn/beta/schemas/AccessItemRoleResponse.yaml @@ -19,6 +19,14 @@ properties: sourceName: type: string example: Source Name - description: the associated source name if it exists - - \ No newline at end of file + description: the associated source name if it exists + removeDate: + type: string + example: 2024-07-01T06:00:00.00Z + description: the date the role is no longer assigned to the specified identity + revocable: + type: boolean + example: true + description: indicates whether the role is revocable +required: + - revocable \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/Account.yaml b/static/api-specs/idn/beta/schemas/Account.yaml index dbc34544d..5de333220 100644 --- a/static/api-specs/idn/beta/schemas/Account.yaml +++ b/static/api-specs/idn/beta/schemas/Account.yaml @@ -26,6 +26,25 @@ allOf: type: string example: 2c9180835d2e5168015d32f890ca1581 description: The unique ID of the identity this account is correlated to + cloudLifecycleState: + type: string + nullable: true + example: active + description: The lifecycle state of the identity this account is correlated to + identityState: + type: string + nullable: true + example: ACTIVE + description: The identity state of the identity this account is correlated to + connectionType: + type: string + example: direct + description: The connection type of the source this account is from + type: + type: string + nullable: true + example: NON_HUMAN + description: The type of the account attributes: type: object nullable: true @@ -80,21 +99,91 @@ allOf: description: Indicates if the account has entitlements example: true identity: - $ref: './BaseReferenceDto.yaml' description: The identity this account is correlated to - example: - id: "2c918084660f45d6016617daa9210584" - type: "IDENTITY" - name: "Adam Kennedy" + type: object + properties: + type: + description: The type of object being referenced + type: string + enum: + - IDENTITY + example: IDENTITY + id: + type: string + description: ID of the identity + example: 2c918084660f45d6016617daa9210584 + name: + type: string + description: Human-readable display name of the identity + example: Adam Kennedy sourceOwner: - $ref: './BaseReferenceDto.yaml' description: The owner of the source this account belongs to - example: - id: "4c5c8534e99445de98eef6c75e25eb01" - type: "IDENTITY" - name: "SailPoint Support" + type: object + properties: + type: + description: The type of object being referenced + type: string + enum: + - IDENTITY + example: IDENTITY + id: + type: string + description: ID of the identity + example: 4c5c8534e99445de98eef6c75e25eb01 + name: + type: string + description: Human-readable display name of the identity + example: SailPoint Support features: type: string description: A string list containing the owning source's features example: 'ENABLE' nullable: true + origin: + type: string + nullable: true + enum: + - AGGREGATED + - PROVISIONED + - null + description: The origin of the account either aggregated or provisioned + example: AGGREGATED + ownerIdentity: + description: The identity who owns this account, typically used for non-human accounts + type: object + nullable: true + properties: + type: + description: The type of object being referenced + type: string + enum: + - IDENTITY + example: IDENTITY + id: + type: string + description: ID of the identity + example: 2c918084660f45d6016617daa9210584 + name: + type: string + description: Human-readable display name of the identity + example: Adam Kennedy + ownerGroup: + description: The governance group who owns this account, typically used for non-human accounts + type: object + nullable: true + properties: + type: + description: The type of object being referenced + type: string + enum: + - "GOVERNANCE_GROUP" + example: "GOVERNANCE_GROUP" + id: + type: string + description: ID of the governance group + example: 8d3e0094e99445de98eef6c75e25jc04 + name: + type: string + description: Human-readable display name of the governance group + example: "GovGroup AX17Z" + \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/ApprovalItemDetails.yaml b/static/api-specs/idn/beta/schemas/ApprovalItemDetails.yaml index 01a91c14f..b97d96a3f 100644 --- a/static/api-specs/idn/beta/schemas/ApprovalItemDetails.yaml +++ b/static/api-specs/idn/beta/schemas/ApprovalItemDetails.yaml @@ -6,6 +6,7 @@ properties: example: 2c9180835d2e5168015d32f890ca1581 account: type: string + nullable: true description: The account referenced by the approval item example: john.smith application: @@ -14,6 +15,7 @@ properties: example: Active Directory name: type: string + nullable: true description: The attribute's name example: emailAddress operation: @@ -22,7 +24,8 @@ properties: example: update value: type: string + nullable: true description: The attribute's value example: a@b.com state: - $ref: '../../v3/schemas/WorkItemState.yaml' + $ref: '../../v3/schemas/WorkItemState.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/CampaignTemplate.yaml b/static/api-specs/idn/beta/schemas/CampaignTemplate.yaml index 75a5c544c..d862918c3 100644 --- a/static/api-specs/idn/beta/schemas/CampaignTemplate.yaml +++ b/static/api-specs/idn/beta/schemas/CampaignTemplate.yaml @@ -33,6 +33,7 @@ properties: default: false ownerRef: type : object + readOnly: true description: >- The owner of this template, and the owner of campaigns generated from this template via a schedule. This field is automatically populated at creation time with the current user. diff --git a/static/api-specs/idn/beta/schemas/Children.yaml b/static/api-specs/idn/beta/schemas/Children.yaml new file mode 100644 index 000000000..d020cf276 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/Children.yaml @@ -0,0 +1,13 @@ +type: object +properties: + operator: + type: string + example: EQUALS + attribute: + type: string + example: country + value: + $ref: './Value.yaml' + children: + type: string + nullable: true \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/CommonAccessResponse.yaml b/static/api-specs/idn/beta/schemas/CommonAccessResponse.yaml index 561351068..53a105f58 100644 --- a/static/api-specs/idn/beta/schemas/CommonAccessResponse.yaml +++ b/static/api-specs/idn/beta/schemas/CommonAccessResponse.yaml @@ -10,6 +10,9 @@ properties: status: type: string description: CONFIRMED or DENIED + commonAccessType: + type: string + example: UNSET lastUpdated: type: string readOnly: true @@ -25,4 +28,4 @@ properties: createdByUser: type: boolean default: false - example: false + example: false \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/CompleteInvocationInput.yaml b/static/api-specs/idn/beta/schemas/CompleteInvocationInput.yaml index 4f5009407..60db350c6 100644 --- a/static/api-specs/idn/beta/schemas/CompleteInvocationInput.yaml +++ b/static/api-specs/idn/beta/schemas/CompleteInvocationInput.yaml @@ -4,5 +4,6 @@ properties: $ref: './LocalizedMessage.yaml' output: type: object + nullable: true example: {"approved": false} - description: Trigger output that completed the invocation. Its schema is defined in the trigger definition. + description: Trigger output that completed the invocation. Its schema is defined in the trigger definition. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/CompletedApproval.yaml b/static/api-specs/idn/beta/schemas/CompletedApproval.yaml index 7e631f081..f02c8e306 100644 --- a/static/api-specs/idn/beta/schemas/CompletedApproval.yaml +++ b/static/api-specs/idn/beta/schemas/CompletedApproval.yaml @@ -29,12 +29,23 @@ properties: requester: $ref: './AccessItemRequesterDto.yaml' requestedFor: - type: array - description: Identities access was requested for. - items: - $ref: './AccessItemRequestedForDto.yaml' - minItems: 1 - maxItems: 10 + type: object + description: Identity access was requested for. + properties: + type: + type: string + enum: + - IDENTITY + description: Type of the object to which this reference applies + example: IDENTITY + id: + type: string + description: ID of the object to which this reference applies + example: 2c9180835d191a86015d28455b4b232a + name: + type: string + description: Human-readable display name of the object to which this reference applies + example: William Wilson reviewedBy: type: object description: Identity who reviewed the access item request. @@ -88,7 +99,7 @@ properties: removeDate: type: string nullable: true - description: The date the role or access profile is no longer assigned to the specified identity. + description: The date the role or access profile or entitlement is no longer assigned to the specified identity. format: 'date-time' example: '2020-07-11T00:00:00Z' removeDateUpdateRequested: @@ -137,4 +148,5 @@ properties: requestedAppId: 2c91808f7892918f0178b78da4a305a1 requestedAccounts: type: string - nullable: true \ No newline at end of file + nullable: true + description: Information about the requested accounts \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/CorrelationConfig.yaml b/static/api-specs/idn/beta/schemas/CorrelationConfig.yaml new file mode 100644 index 000000000..531284bdf --- /dev/null +++ b/static/api-specs/idn/beta/schemas/CorrelationConfig.yaml @@ -0,0 +1,54 @@ +type: object +description: Source configuration information that is used by correlation process. +properties: + id: + type: string + description: The ID of the correlation configuration. + example: 2c9180835d191a86015d28455b4a2329 + name: + type: string + description: The name of the correlation configuration. + example: Source [source] Account Correlation + attributeAssignments: + type: array + description: The list of attribute assignments of the correlation configuration. + items: + type: object + description: The attribute assignment of the correlation configuration. + properties: + property: + type: string + description: The property of the attribute assignment. + example: first_name + value: + type: string + description: The value of the attribute assignment. + example: firstName + operation: + type: string + description: The operation of the attribute assignment. + enum: + - EQ + example: EQ + complex: + type: boolean + description: Whether or not the it's a complex attribute assignment. + default: false + example: false + ignoreCase: + type: boolean + description: Whether or not the attribute assignment should ignore case. + default: false + example: false + matchMode: + type: string + description: The match mode of the attribute assignment. + enum: + - ANYWHERE + - START + - END + example: ANYWHERE + filterString: + type: string + description: The filter string of the attribute assignment. + example: first_name == "John" diff --git a/static/api-specs/idn/beta/schemas/EmailNotificationOption.yaml b/static/api-specs/idn/beta/schemas/EmailNotificationOption.yaml index 7891cd1a4..53f0375fb 100644 --- a/static/api-specs/idn/beta/schemas/EmailNotificationOption.yaml +++ b/static/api-specs/idn/beta/schemas/EmailNotificationOption.yaml @@ -2,14 +2,17 @@ type : object properties: notifyManagers: type: boolean + default: false example: true description: If true, then the manager is notified of the lifecycle state change. notifyAllAdmins: type: boolean + default: false example: true description: If true, then all the admins are notified of the lifecycle state change. notifySpecificUsers: type: boolean + default: false example: true description: If true, then the users specified in "emailAddressList" below are notified of lifecycle state change. emailAddressList: diff --git a/static/api-specs/idn/beta/schemas/EmailStatusDto.yaml b/static/api-specs/idn/beta/schemas/EmailStatusDto.yaml index a3b1f5613..ecad0fb70 100644 --- a/static/api-specs/idn/beta/schemas/EmailStatusDto.yaml +++ b/static/api-specs/idn/beta/schemas/EmailStatusDto.yaml @@ -2,9 +2,13 @@ type: object properties: id: type: string + nullable: true email: type: string example: "sender@example.com" + isVerifiedByDomain: + type: boolean + example: false verificationStatus: type: string enum: diff --git a/static/api-specs/idn/beta/schemas/Expression.yaml b/static/api-specs/idn/beta/schemas/Expression.yaml index b04630a4e..ed66ac42e 100644 --- a/static/api-specs/idn/beta/schemas/Expression.yaml +++ b/static/api-specs/idn/beta/schemas/Expression.yaml @@ -9,13 +9,15 @@ properties: example: "EQUALS" attribute: type: string + nullable: true description: Name for the attribute example: "location" value: $ref: './Value.yaml' children: type: array + nullable: true description: List of expressions items: - $ref: './Value.yaml' - example: [] + $ref: './Children.yaml' + example: [] \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/FederationProtocolDetails.yaml b/static/api-specs/idn/beta/schemas/FederationProtocolDetails.yaml index 46f92e30d..869800a9a 100644 --- a/static/api-specs/idn/beta/schemas/FederationProtocolDetails.yaml +++ b/static/api-specs/idn/beta/schemas/FederationProtocolDetails.yaml @@ -2,6 +2,8 @@ type: object properties: role: type: string + description: Federation protocol role + example: SAML_IDP enum: - SAML_IDP - SAML_SP diff --git a/static/api-specs/idn/beta/schemas/FormDetails.yaml b/static/api-specs/idn/beta/schemas/FormDetails.yaml index 8f9f45394..1133dc3b8 100644 --- a/static/api-specs/idn/beta/schemas/FormDetails.yaml +++ b/static/api-specs/idn/beta/schemas/FormDetails.yaml @@ -1,11 +1,14 @@ type: object +nullable: true properties: id: type: string + nullable: true description: ID of the form example: 2c9180835d2e5168015d32f890ca1581 name: type: string + nullable: true description: Name of the form example: AccountSelection Form title: @@ -21,4 +24,6 @@ properties: description: The name of the user that should be shown this form example: Jane.Doe sections: - $ref: './SectionDetails.yaml' + type: array + items: + $ref: './SectionDetails.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/GetOAuthClientResponse.yaml b/static/api-specs/idn/beta/schemas/GetOAuthClientResponse.yaml index 135d1963d..82ef6bade 100644 --- a/static/api-specs/idn/beta/schemas/GetOAuthClientResponse.yaml +++ b/static/api-specs/idn/beta/schemas/GetOAuthClientResponse.yaml @@ -80,6 +80,12 @@ properties: format: 'date-time' description: The date and time, down to the millisecond, when the API Client was last updated example: '2018-06-25T20:22:28.104Z' + secret: + type: string + nullable: true + metadata: + type: string + nullable: true lastUsed: type: string nullable: true @@ -112,4 +118,4 @@ required: - claimsSupported - created - modified - - scope + - scope \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/IdentityListItem.yaml b/static/api-specs/idn/beta/schemas/IdentityListItem.yaml index 49f9ed586..09a992dd8 100644 --- a/static/api-specs/idn/beta/schemas/IdentityListItem.yaml +++ b/static/api-specs/idn/beta/schemas/IdentityListItem.yaml @@ -10,10 +10,12 @@ properties: example: 'Adam Zampa' firstName: type: string + nullable: true description: the first name of the identity example: 'Adam' lastName: type: string + nullable: true description: the last name of the identity example: 'Zampa' active: @@ -25,4 +27,4 @@ properties: type: string nullable: true description: the date when the identity was deleted - example: '2007-03-01T13:00:00.000Z' + example: '2007-03-01T13:00:00.000Z' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/IdpDetails.yaml b/static/api-specs/idn/beta/schemas/IdpDetails.yaml index 298b5f166..828a6dc46 100644 --- a/static/api-specs/idn/beta/schemas/IdpDetails.yaml +++ b/static/api-specs/idn/beta/schemas/IdpDetails.yaml @@ -14,9 +14,12 @@ allOf: logoutUrl: type: string description: The IDP logout URL. Used with IDP configurations. + example: https://dev-206445.oktapreview.com/login/signout includeAuthContext: type: boolean description: Determines if the configured AuthnContext should be used or the default. Used with IDP configurations. + default: false + example: false nameId: type: string description: The name id format to use. Used with IDP configurations. @@ -26,6 +29,7 @@ allOf: cert: type: string description: The Base64-encoded certificate used by the IDP. Used with IDP configurations. + example: -----BEGIN CERTIFICATE-----****-----END CERTIFICATE----- loginUrlPost: type: string description: The IDP POST URL, used with IDP HTTP-POST bindings for IDP-initiated logins. Used with IDP configurations. @@ -40,6 +44,8 @@ allOf: example: email role: type: string + description: Federation protocol role + example: SAML_IDP enum: - SAML_IDP certificateExpirationDate: diff --git a/static/api-specs/idn/beta/schemas/InviteIdentitiesRequest.yaml b/static/api-specs/idn/beta/schemas/InviteIdentitiesRequest.yaml new file mode 100644 index 000000000..f51c7c2e2 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/InviteIdentitiesRequest.yaml @@ -0,0 +1,14 @@ +type: object +properties: + ids: + description: The list of Identities IDs to invite - required when 'uninvited' is false + type: array + items: + type: string + nullable: true + example: [ "2b568c65bc3c4c57a43bd97e3a8e55", "2c9180867769897d01776ed5f125512f" ] + uninvited: + description: indicator (optional) to invite all unregistered identities in the system within a limit 1000. This parameter makes sense only when 'ids' is empty. + type: boolean + default: false + example: false diff --git a/static/api-specs/idn/beta/schemas/InvocationStatus.yaml b/static/api-specs/idn/beta/schemas/InvocationStatus.yaml index 59a90d954..53560a3dc 100644 --- a/static/api-specs/idn/beta/schemas/InvocationStatus.yaml +++ b/static/api-specs/idn/beta/schemas/InvocationStatus.yaml @@ -15,7 +15,11 @@ properties: triggerId: type: string description: Trigger ID - example: "idn:access-requested" + example: "idn:access-request-post-approval" + subscriptionName: + type: string + description: Subscription name + example: "Access request subscription" subscriptionId: type: string description: Subscription ID @@ -37,4 +41,4 @@ properties: description: Data related to start of trigger invocation. completeInvocationInput: $ref: './CompleteInvocationInput.yaml' - description: Data related to end of trigger invocation. + description: Data related to end of trigger invocation. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/JITConfiguration.yaml b/static/api-specs/idn/beta/schemas/JITConfiguration.yaml index 65f434dd9..98ac276f8 100644 --- a/static/api-specs/idn/beta/schemas/JITConfiguration.yaml +++ b/static/api-specs/idn/beta/schemas/JITConfiguration.yaml @@ -3,12 +3,15 @@ properties: enabled: type: boolean description: The indicator for just-in-time provisioning enabled + default: false + example: false sourceId: type: string description: the sourceId that mapped to just-in-time provisioning configuration example: 2c9180857377ed2901739c12a2da5ac8 sourceAttributeMappings: type: object + description: A mapping of identity profile attribute names to SAML assertion attribute names additionalProperties: type: string description: a mapping of JIT source attributes to the SAML assertion attribute diff --git a/static/api-specs/idn/beta/schemas/LifecycleState.yaml b/static/api-specs/idn/beta/schemas/LifecycleState.yaml index a2340c16c..14ed75426 100644 --- a/static/api-specs/idn/beta/schemas/LifecycleState.yaml +++ b/static/api-specs/idn/beta/schemas/LifecycleState.yaml @@ -4,17 +4,17 @@ properties: type: string readOnly: true example: 2c9180835d2e5168015d32f890ca1581 - description: lifecycle stat id. + description: Lifecycle state ID. name: type: string readOnly: true example: Lifecycle Name - description: Lifecycle-state name. + description: Lifecycle state name. technicalName: type: string readOnly: true example: lifecycleTechnicalName - description: The technical name for lifecycle state. This is for internal use. + description: Lifecycle state technical name. This is for internal use. description: type: string example: LifecycleDescription @@ -33,8 +33,9 @@ properties: description: Lifecycle state modified date. enabled: type: boolean + default: false example: true - description: Whether the lifecycle state is enabled or disabled. + description: Indicates whether the lifecycle state is enabled or disabled. identityCount: type: integer format: int32 diff --git a/static/api-specs/idn/beta/schemas/LoadUncorrelatedAccountsTask.yaml b/static/api-specs/idn/beta/schemas/LoadUncorrelatedAccountsTask.yaml new file mode 100644 index 000000000..87b398074 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/LoadUncorrelatedAccountsTask.yaml @@ -0,0 +1,186 @@ +type: object +properties: + success: + type: boolean + description: The status of the result + default: 'true' + example: 'true' + task: + type: object + properties: + id: + description: System-generated unique ID of the task this taskStatus represents + type: string + example: 90b83a6bb737489494794f84cd3a51e6 + type: + description: Type of task this task represents + type: string + example: QUARTZ + name: + description: The name of uncorrelated accounts process + type: string + example: Cloud Process Uncorrelated Accounts + description: + description: The description of the task + type: string + example: Processes uncorrelated accounts for the specified application. + launcher: + description: The user who initiated the task + type: string + example: John Doe + created: + type: string + description: >- + The Task creation date + format: date-time + example: '2020-09-07T42:14:00.364Z' + launched: + type: string + nullable: true + format: date-time + description: >- + The task start date + example: '2020-09-07T42:14:00.521Z' + completed: + type: string + nullable: true + format: date-time + description: >- + The task completion date + example: '2020-09-07T42:14:01.137Z' + completionStatus: + type: string + nullable: true + enum: + - SUCCESS + - WARNING + - ERROR + - TERMINATED + - TEMP_ERROR + description: >- + Task completion status. + example: Success + parentName: + type: string + nullable: true + description: >- + Name of the parent task if exists. + example: Audit Report + messages: + type: array + description: >- + List of the messages dedicated to the report. + From task definition perspective here usually should be warnings or errors. + example: [] + items: + type: object + properties: + type: + type: string + description: >- + Type of the message. + enum: + - INFO + - WARN + - ERROR + example: WARN + error: + type: boolean + default: false + description: >- + Flag whether message is an error. + example: false + warning: + type: boolean + default: false + description: >- + Flag whether message is a warning. + example: true + key: + type: string + description: >- + Message string identifier. + example: "This correlation failed because the currently running correlation must complete before the next one can start." + localizedText: + type: string + description: >- + Message context with the locale based language. + example: "This correlation failed because the currently running correlation must complete before the next one can start." + progress: + type: string + nullable: true + description: >- + Current task state. + example: Initializing... + attributes: + type: object + description: >- + Extra attributes map(dictionary) for the task. + properties: + qpocJobId: + description: The id of qpoc job + type: string + example: '5d303d46-fc51-48cd-9c6d-4e211e3ab63c' + taskStartDelay: + description: the task start delay value + example: '' + returns: + description: Return values from the task + type: object + example: + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_APPLICATIONS" + attributeName: "applications" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_TOTAL" + attributeName: "total" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_IGNORED" + attributeName: "correlationFailures" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_FAILURES" + attributeName: "ignored" + - displayLabel: "TASK_OUT_UNCHANGED_ACCOUNTS" + attributeName: "optimized" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION__CREATED" + attributeName: "created" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_UPDATED" + attributeName: "updated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_DELETED" + attributeName: "deleted" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_MANAGER_CHANGES" + attributeName: "managerChanges" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_BUSINESS_ROLE_CHANGES" + attributeName: "detectedRoleChanges" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_EXCEPTION_CHANGES" + attributeName: "exceptionChanges" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_POLICIES" + attributeName: "policies" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_POLICY_VIOLATIONS" + attributeName: "policyViolations" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_POLICY_NOTIFICATIONS" + attributeName: "policyNotifications" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_SCORES_CHANGED" + attributeName: "scoresChanged" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_SNAPSHOTS_CREATED" + attributeName: "snapshotsCreated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_SCOPES_CREATED" + attributeName: "scopesCreated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_SCOPES_CORRELATED" + attributeName: "scopesCorrelated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_SCOPES_SELECTED" + attributeName: "scopesSelected" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_SCOPES_DORMANT" + attributeName: "scopesDormant" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_UNSCOPED_IDENTITIES" + attributeName: "unscopedIdentities" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_CERTIFICATIONS_CREATED" + attributeName: "certificationsCreated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_CERTIFICATIONS_DELETED" + attributeName: "certificationsDeleted" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_APPLICATIONS_GENERATED" + attributeName: "applicationsGenerated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_MANAGED_ATTRIBUTES_PROMOTED" + attributeName: "managedAttributesCreated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_MANAGED_ATTRIBUTES_PROMOTED_BY_APP" + attributeName: "managedAttributesCreatedByApplication" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_IDENTITYENTITLEMENTS_CREATED" + attributeName: "identityEntitlementsCreated" + - displayLabel: "TASK_OUT_ACCOUNT_CORRELATION_GROUPS_CREATED" + attributeName: "groupsCreated" \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/LocalizedMessage.yaml b/static/api-specs/idn/beta/schemas/LocalizedMessage.yaml index 97f271b6c..7845ed808 100644 --- a/static/api-specs/idn/beta/schemas/LocalizedMessage.yaml +++ b/static/api-specs/idn/beta/schemas/LocalizedMessage.yaml @@ -1,4 +1,5 @@ type: object +nullable: true description: Localized error message to indicate a failed invocation or error if any. required: - "locale" @@ -11,4 +12,4 @@ properties: message: description: Message text type: string - example: "Error has occurred!" + example: "Error has occurred!" \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/ManagerCorrelationMapping.yaml b/static/api-specs/idn/beta/schemas/ManagerCorrelationMapping.yaml index 3c6a7807d..87a90a2de 100644 --- a/static/api-specs/idn/beta/schemas/ManagerCorrelationMapping.yaml +++ b/static/api-specs/idn/beta/schemas/ManagerCorrelationMapping.yaml @@ -1,4 +1,5 @@ type: object +nullable: true properties: accountAttributeName: type: string @@ -10,5 +11,4 @@ properties: type: string description: >- Name of the identity attribute to search when trying to find a manager using the value from the accountAttribute. - example: "manager" - + example: "manager" \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/ManualDiscoverApplicationsTemplate.yaml b/static/api-specs/idn/beta/schemas/ManualDiscoverApplicationsTemplate.yaml index 68ced4509..9f76fa589 100644 --- a/static/api-specs/idn/beta/schemas/ManualDiscoverApplicationsTemplate.yaml +++ b/static/api-specs/idn/beta/schemas/ManualDiscoverApplicationsTemplate.yaml @@ -4,7 +4,7 @@ properties: type: string description: Name of the example application. example: "Example Application" - domain: + description: type: string - description: Description of the example application's domain. + description: Description of the example application. example: "Example Description" diff --git a/static/api-specs/idn/beta/schemas/PasswordPolicyV3Dto.yaml b/static/api-specs/idn/beta/schemas/PasswordPolicyV3Dto.yaml index e42d6e104..64ea108e4 100644 --- a/static/api-specs/idn/beta/schemas/PasswordPolicyV3Dto.yaml +++ b/static/api-specs/idn/beta/schemas/PasswordPolicyV3Dto.yaml @@ -6,19 +6,21 @@ properties: example: 2c91808e7d976f3b017d9f5ceae440c8 description: type: string + nullable: true description: Description for current password policy. example: Information about the Password Policy name: type: string description: The name of the password policy. example: PasswordPolicy Example - dateCrated: + dateCreated: type: string format: 'date-time' description: Date the Password Policy was created. example: 1639056206564 lastUpdated: type: string + nullable: true format: 'date-time' description: Date the Password Policy was updated. example: 1939056206564 @@ -127,9 +129,15 @@ properties: type: boolean description: Defines whether this policy validate against account name or not. This field is false by default. example: true + created: + type: string + nullable: true + modified: + type: string + nullable: true sourceIds: type: array description: List of sources IDs managed by this password policy. items: type: string - example: ["2c91808382ffee0b01830de154f14034", "2f98808382ffee0b01830de154f12134"] + example: ["2c91808382ffee0b01830de154f14034", "2f98808382ffee0b01830de154f12134"] \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/PendingApproval.yaml b/static/api-specs/idn/beta/schemas/PendingApproval.yaml index ccf67017a..01fcd2a9c 100644 --- a/static/api-specs/idn/beta/schemas/PendingApproval.yaml +++ b/static/api-specs/idn/beta/schemas/PendingApproval.yaml @@ -63,7 +63,7 @@ properties: description: Action that is performed on this approval, and system has not finished performing that action yet. removeDate: type: string - description: The date the role or access profile is no longer assigned to the specified identity. + description: The date the role or access profile or entitlement is no longer assigned to the specified identity. format: 'date-time' example: '2020-07-11T00:00:00Z' removeDateUpdateRequested: diff --git a/static/api-specs/idn/beta/schemas/RoleInsight.yaml b/static/api-specs/idn/beta/schemas/RoleInsight.yaml index b6ef9525d..ca6724c8d 100644 --- a/static/api-specs/idn/beta/schemas/RoleInsight.yaml +++ b/static/api-specs/idn/beta/schemas/RoleInsight.yaml @@ -12,12 +12,15 @@ properties: type: string format: 'date-time' description: The date-time insights were last created for this role. + modifiedDate: + type: string + format: 'date-time' + nullable: true + description: The date-time insights were last modified for this role. example: '2020-05-19T13:49:37.385Z' role: $ref: './RoleInsightsRole.yaml' description: A role insight: $ref: './RoleInsightsInsight.yaml' - description: The kind of insight this is and some stats - - + description: The kind of insight this is and some stats \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/RoleInsightsInsight.yaml b/static/api-specs/idn/beta/schemas/RoleInsightsInsight.yaml index b46f94f50..b4247f771 100644 --- a/static/api-specs/idn/beta/schemas/RoleInsightsInsight.yaml +++ b/static/api-specs/idn/beta/schemas/RoleInsightsInsight.yaml @@ -15,4 +15,7 @@ properties: totalNumberOfIdentities: type: integer description: The total number of identities. - example: 1000 \ No newline at end of file + example: 1000 + impactedIdentityNames: + type: string + nullable: true \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/RoleMiningPotentialRole.yaml b/static/api-specs/idn/beta/schemas/RoleMiningPotentialRole.yaml index 349d689d0..ca9ee08bc 100644 --- a/static/api-specs/idn/beta/schemas/RoleMiningPotentialRole.yaml +++ b/static/api-specs/idn/beta/schemas/RoleMiningPotentialRole.yaml @@ -1,8 +1,10 @@ type: object properties: createdBy: - $ref: './iai/EntityCreatedByDTO.yaml' - description: The session created by details. + oneOf: + - $ref: './iai/EntityCreatedByDTO.yaml' + - $ref: './iai/NullableEntityCreatedByDTO.yaml' + description: The session created by details density: type: integer description: The density of a potential role. @@ -10,6 +12,7 @@ properties: format: int32 description: type: string + nullable: true description: The description of a potential role. example: "Potential Role for Accounting dept" entitlementCount: @@ -19,6 +22,7 @@ properties: format: int32 excludedEntitlements: description: The list of entitlement ids to be excluded. + nullable: true type: array items: type: string @@ -35,6 +39,7 @@ properties: format: int32 identityDistribution: description: Identity attribute distribution. + nullable: true type: array items: $ref: './RoleMiningIdentityDistribution.yaml' @@ -51,6 +56,7 @@ properties: provisionState: $ref: './RoleMiningPotentialRoleProvisionState.yaml' description: The provisioning state of a potential role. + nullable: true quality: type: integer description: The quality of a potential role. @@ -58,6 +64,7 @@ properties: format: int32 roleId: type: string + nullable: true description: The roleId of a potential role. example: "07a0b4e2-7a76-44fa-bd0b-c64654b66519" saved: @@ -69,4 +76,16 @@ properties: description: The session parameters of the potential role. type: $ref: './iai/RoleMiningRoleType.yaml' - description: Role mining potential type. \ No newline at end of file + description: Role mining potential type. + id: + type: string + description: Id of the potential role + example: "e0cc5d7d-bf7f-4f81-b2af-8885b09d9923" + createdDate: + type: string + format: 'date-time' + description: The date-time when this potential role was created. + modifiedDate: + type: string + format: 'date-time' + description: The date-time when this potential role was modified. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/RoleMiningPotentialRoleSummary.yaml b/static/api-specs/idn/beta/schemas/RoleMiningPotentialRoleSummary.yaml index 76cc919bb..33420bf68 100644 --- a/static/api-specs/idn/beta/schemas/RoleMiningPotentialRoleSummary.yaml +++ b/static/api-specs/idn/beta/schemas/RoleMiningPotentialRoleSummary.yaml @@ -52,6 +52,24 @@ properties: type: $ref: './iai/RoleMiningRoleType.yaml' description: Role mining potential type. + createdBy: + oneOf: + - $ref: './iai/EntityCreatedByDTO.yaml' + - $ref: './iai/NullableEntityCreatedByDTO.yaml' + description: The potential role created by details + createdDate: + type: string + format: 'date-time' + description: The date-time when this potential role was created. + saved: + type: boolean + description: The potential role's saved status + default: false + example: true + description: + type: string + nullable: true + description: Description of the potential role session: $ref: './RoleMiningSessionParametersDto.yaml' - description: The session parameters of the potential role. + description: The session parameters of the potential role. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/RoleMiningSessionDraftRoleDto.yaml b/static/api-specs/idn/beta/schemas/RoleMiningSessionDraftRoleDto.yaml index 6fd860ca7..6f9d6f025 100644 --- a/static/api-specs/idn/beta/schemas/RoleMiningSessionDraftRoleDto.yaml +++ b/static/api-specs/idn/beta/schemas/RoleMiningSessionDraftRoleDto.yaml @@ -1,5 +1,9 @@ type: object properties: + name: + type: string + description: Name of the draft role + example: "Saved RM Session - 07/10" description: type: string description: Draft role description @@ -27,11 +31,19 @@ properties: format: date-time description: Last modified date example: '2020-09-16T18:49:32.150Z' - name: - type: string - description: Name of the draft role - example: "Saved RM Session - 07/10" type: $ref: './iai/RoleMiningRoleType.yaml' description: Role mining session type - example: SPECIALIZED \ No newline at end of file + example: SPECIALIZED + id: + type: string + description: Id of the potential draft role + example: "e0cc5d7d-bf7f-4f81-b2af-8885b09d9923" + createdDate: + type: string + format: 'date-time' + description: The date-time when this potential draft role was created. + modifiedDate: + type: string + format: 'date-time' + description: The date-time when this potential draft role was modified. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/RoleMiningSessionDto.yaml b/static/api-specs/idn/beta/schemas/RoleMiningSessionDto.yaml index 850356218..785a7335e 100644 --- a/static/api-specs/idn/beta/schemas/RoleMiningSessionDto.yaml +++ b/static/api-specs/idn/beta/schemas/RoleMiningSessionDto.yaml @@ -6,22 +6,24 @@ properties: example: { identityIds: [], criteria: "source.name:DataScienceDataset", - attributeFilterCriteria: { - displayName: {untranslated: "Location: Miami"}, - ariaLabel: {untranslated: "Location: Miami"}, - data: { - displayName: {translateKey: "IDN.IDENTITY_ATTRIBUTES.LOCATION"}, - name: "location", - operator: "EQUALS", - values: ["Miami"] + attributeFilterCriteria: [ + { + displayName: {untranslated: "Location: Miami"}, + ariaLabel: {untranslated: "Location: Miami"}, + data: { + displayName: {translateKey: "IDN.IDENTITY_ATTRIBUTES.LOCATION"}, + name: "location", + operator: "EQUALS", + values: ["Miami"] + } } - } + ] } pruneThreshold: type: integer description: The prune threshold to be used or null to calculate prescribedPruneThreshold nullable: true - example: 5 + example: 50 format: int32 prescribedPruneThreshold: type: integer @@ -45,10 +47,6 @@ properties: description: Number of potential roles ready example: 0 format: int32 - status: - $ref: './RoleMiningSessionStatus.yaml' - description: The status of the role mining session - example: CREATED type: $ref: './iai/RoleMiningRoleType.yaml' description: Role mining session type @@ -58,11 +56,6 @@ properties: description: The id of the user who will receive an email about the role mining session nullable: true example: "2c918090761a5aac0176215c46a62d58" - createdBy: - oneOf: - - $ref: './iai/EntityCreatedByDTO.yaml' - - $ref: './iai/NullableEntityCreatedByDTO.yaml' - description: The session created by details identityCount: type: integer description: Number of identities in the population which meet the search criteria or identity list provided diff --git a/static/api-specs/idn/beta/schemas/RoleMiningSessionResponse.yaml b/static/api-specs/idn/beta/schemas/RoleMiningSessionResponse.yaml index 7b56cfcb0..443cf11e7 100644 --- a/static/api-specs/idn/beta/schemas/RoleMiningSessionResponse.yaml +++ b/static/api-specs/idn/beta/schemas/RoleMiningSessionResponse.yaml @@ -5,14 +5,22 @@ properties: description: The scope of identities for this role mining session minNumIdentitiesInPotentialRole: type: integer + nullable: true description: Minimum number of identities in a potential role example: 20 + scopingMethod: + type: string + description: The scoping method of the role mining session + nullable: true + example: "AUTO_RM" prescribedPruneThreshold: type: integer + nullable: true description: The computed (or prescribed) prune threshold for this session example: 83 pruneThreshold: type: integer + nullable: true description: The prune threshold to be used for this role mining session example: 70 potentialRoleCount: @@ -26,6 +34,33 @@ properties: status: $ref: './RoleMiningSessionStatus.yaml' description: The role mining session status + emailRecipientId: + type: string + description: The id of the user who will receive an email about the role mining session + nullable: true + createdBy: + oneOf: + - $ref: './iai/EntityCreatedByDTO.yaml' + - $ref: './iai/NullableEntityCreatedByDTO.yaml' + description: The session created by details + identityCount: + type: integer + description: The number of identities + example: 39 + saved: + type: boolean + description: The session's saved status + default: false + example: true + name: + type: string + description: The session's saved name + nullable: true + example: "Saved RM Session - 07/10" + dataFilePath: + type: string + description: The data file path of the role mining session + nullable: true id: type: string description: Session Id for this role mining session @@ -42,14 +77,21 @@ properties: $ref: './iai/RoleMiningRoleType.yaml' description: Role mining session type example: - scope: {identityIds: [], criteria: "source.name:DataScienceDataset"} + scope: {identityIds: [], criteria: "source.name:DataScienceDataset", "attributeFilterCriteria": null} + "scopingMethod": "AUTO_RM" minNumIdentitiesInPotentialRole: 20 pruneThreshold: 70 prescribedPruneThreshold: 83 potentialRoleCount: 8 potentialRolesReadyCount: 4 status: {state: "POTENTIAL_ROLES_PROCESSING"} + type: SPECIALIZED + "emailRecipientId": null + "createdBy": null + "identityCount": 0 + "saved": false + "name": null + "dataFilePath": null "id": "602ba738-cf48-499b-a780-7b67b3fc1ecf" "createdDate": "2021-09-08T16:11:05.348Z" - "modifiedDate": "2021-09-08T16:11:05.348Z" - type: SPECIALIZED + "modifiedDate": "2021-09-08T16:11:05.348Z" \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/SendAccountVerificationRequest.yaml b/static/api-specs/idn/beta/schemas/SendAccountVerificationRequest.yaml new file mode 100644 index 000000000..d429658ec --- /dev/null +++ b/static/api-specs/idn/beta/schemas/SendAccountVerificationRequest.yaml @@ -0,0 +1,18 @@ +type: object +properties: + sourceName: + description: The source name where identity account password should be reset + type: string + nullable: true + example: "Active Directory Source" + via: + description: The method to send notification + type: string + enum: + - EMAIL_WORK + - EMAIL_PERSONAL + - LINK_WORK + - LINK_PERSONAL + example: EMAIL_WORK +required: + - via diff --git a/static/api-specs/idn/beta/schemas/SessionConfiguration.yaml b/static/api-specs/idn/beta/schemas/SessionConfiguration.yaml index 6ba488ea8..2aab8d6d5 100644 --- a/static/api-specs/idn/beta/schemas/SessionConfiguration.yaml +++ b/static/api-specs/idn/beta/schemas/SessionConfiguration.yaml @@ -3,12 +3,15 @@ properties: maxIdleTime: type: integer description: The maximum time in minutes a session can be idle. + format: int32 example: 15 rememberMe: type: boolean description: Denotes if 'remember me' is enabled. + default: false example: true maxSessionTime: type: integer description: The maximum allowable session time in minutes. + format: int32 example: 45 diff --git a/static/api-specs/idn/beta/schemas/SimIntegrationDetails.yaml b/static/api-specs/idn/beta/schemas/SimIntegrationDetails.yaml new file mode 100644 index 000000000..010a3095e --- /dev/null +++ b/static/api-specs/idn/beta/schemas/SimIntegrationDetails.yaml @@ -0,0 +1,66 @@ +type: object +title: Sim Integration Details +allOf: + - $ref: './BaseCommonDto.yaml' + - type: object + properties: + description: + type: string + description: The description of the integration + example: 'Integration description' + nullable: false + type: + type: string + description: The integration type + example: 'ServiceNow Service Desk' + nullable: false + attributes: + type: object + description: The attributes map containing the credentials used to configure the integration. + nullable: true + example: '{"uid":"Walter White","firstname":"walter","cloudStatus":"UNREGISTERED","displayName":"Walter White","identificationNumber":"942","lastSyncDate":1470348809380,"email":"walter@gmail.com","lastname":"white"}' + sources: + type: array + description: The list of sources (managed resources) + items: + type: string + example: + - 2c9180835d191a86015d28455b4a2329 + - 2c5680835d191a85765d28455b4a9823 + nullable: false + cluster: + type: string + description: The cluster/proxy + example: 'xyzzy999' + nullable: false + statusMap: + type: object + description: Custom mapping between the integration result and the provisioning result + example: + closed_cancelled: Failed + closed_complete: Committed + closed_incomplete: Failed + closed_rejected: Failed + in_process: Queued + requested: Queued + request: + type: object + description: Request data to customize desc and body of the created ticket + example: + description: SailPoint Access Request, + req_description: The Service Request created by SailPoint ServiceNow Service Integration Module (SIM)., + req_short_description: SailPoint New Access Request Created from IdentityNow, + short_description: SailPoint Access Request $!plan.arguments.identityRequestId + beforeProvisioningRule: + description: Before provisioning rule of integration + properties: + type: + $ref: '../../v3/schemas/DtoType.yaml' + id: + type: string + description: ID of the rule + example: 2c918085708c274401708c2a8a760001 + name: + type: string + description: Human-readable display name of the rule + example: Example Rule \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/SlimAccount.yaml b/static/api-specs/idn/beta/schemas/SlimAccount.yaml index abd9e8b48..f6e61becb 100644 --- a/static/api-specs/idn/beta/schemas/SlimAccount.yaml +++ b/static/api-specs/idn/beta/schemas/SlimAccount.yaml @@ -27,6 +27,10 @@ allOf: type: boolean description: Whether the account is locked example: false + type: + type: string + description: Either NON_HUMAN or null, null denotes human account + example: NON_HUMAN manuallyCorrelated: type: boolean description: Whether the account was manually correlated @@ -55,3 +59,24 @@ allOf: firstName: "SailPoint" lastName: "Support" displayName: "SailPoint Support" + origin: + type: string + enum: + - AGGREGATED + - PROVISIONED + description: The origin of the account either aggregated or provisioned + example: AGGREGATED + ownerIdentity: + $ref: './BaseReferenceDto.yaml' + description: The identity who owns this account, typically used for non-human accounts + example: + id: "2c919194670f45d6016917qzz910581" + type: "IDENTITY" + name: "Adam Abbott" + ownerGroup: + $ref: './BaseReferenceDto.yaml' + description: The governance group who owns this account, typically used for non-human accounts + example: + id: "8d3e0094e99445de98eef6c75e25jc04" + type: "GOVERNANCE_GROUP" + name: "GovGroup AX17Z" diff --git a/static/api-specs/idn/beta/schemas/SodPolicy.yaml b/static/api-specs/idn/beta/schemas/SodPolicy.yaml index 152e061d7..94ee3955e 100644 --- a/static/api-specs/idn/beta/schemas/SodPolicy.yaml +++ b/static/api-specs/idn/beta/schemas/SodPolicy.yaml @@ -27,7 +27,24 @@ properties: example: "This policy ensures compliance of xyz" nullable: true ownerRef: - $ref: '../../v3/schemas/OwnerDto.yaml' + type: object + description: The owner of the SOD policy. + properties: + type: + type: string + description: Owner type. + enum: + - IDENTITY + - GOVERNANCE_GROUP + example: IDENTITY + id: + type: string + description: Owner's ID. + example: 2c9180a46faadee4016fb4e018c20639 + name: + type: string + description: Owner's name. + example: Support externalPolicyReference: type: string description: Optional external policy reference. diff --git a/static/api-specs/idn/beta/schemas/SodViolationContextCheckCompleted.yaml b/static/api-specs/idn/beta/schemas/SodViolationContextCheckCompleted.yaml index 869472c27..c478602ce 100644 --- a/static/api-specs/idn/beta/schemas/SodViolationContextCheckCompleted.yaml +++ b/static/api-specs/idn/beta/schemas/SodViolationContextCheckCompleted.yaml @@ -1,5 +1,6 @@ description: An object referencing a completed SOD violation check type: object +nullable: true properties: state: type: string diff --git a/static/api-specs/idn/beta/schemas/Source.yaml b/static/api-specs/idn/beta/schemas/Source.yaml index 74f350569..57b46ff4f 100644 --- a/static/api-specs/idn/beta/schemas/Source.yaml +++ b/static/api-specs/idn/beta/schemas/Source.yaml @@ -3,136 +3,140 @@ properties: id: type: string readOnly: true - description: the id of the Source - example: "2c91808568c529c60168cca6f90c1324" + description: Source ID. + example: 2c91808568c529c60168cca6f90c1324 name: type: string - description: Human-readable name of the source + description: Source's human-readable name. example: My Source description: type: string - description: Human-readable description of the source - example: "This is the corporate directory." + description: Source's human-readable description. + example: This is the corporate directory. owner: - description: Reference to an owning Identity Object + description: Reference to identity object who owns the source. type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - IDENTITY example: IDENTITY id: type: string - description: ID of the identity + description: Owner identity's ID. example: 2c91808568c529c60168cca6f90c1313 name: type: string - description: Human-readable display name of the identity + description: Owner identity's human-readable display name. example: MyName cluster: - description: Reference to the associated Cluster + description: Reference to the source's associated cluster. type: object + nullable: true required: - name - id - - type + - type properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - CLUSTER example: CLUSTER id: type: string - description: ID of the cluster + description: Cluster ID. example: 2c9180866166b5b0016167c32ef31a66 name: type: string - description: Human-readable display name of the cluster + description: Cluster's human-readable display name. example: Corporate Cluster accountCorrelationConfig: - description: Reference to an Account Correlation Config object + description: Reference to account correlation config object. type: object + nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - ACCOUNT_CORRELATION_CONFIG example: ACCOUNT_CORRELATION_CONFIG id: type: string - description: ID of the account correlation config + description: Account correlation config ID. example: 2c9180855d191c59015d28583727245a name: type: string - description: Human-readable display name of the account correlation config + description: Account correlation config's human-readable display name. example: Directory [source-62867] Account Correlation accountCorrelationRule: description: >- - Reference to a Rule that can do COMPLEX correlation, should only be used when accountCorrelationConfig can't - be used. + Reference to a rule that can do COMPLEX correlation. Only use this rule when you can't use accountCorrelationConfig. type: object + nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - RULE example: RULE id: type: string - description: ID of the rule + description: Rule ID. example: 2c918085708c274401708c2a8a760001 name: type: string - description: Human-readable display name of the rule + description: Rule's human-readable display name. example: Example Rule managerCorrelationMapping: $ref: './ManagerCorrelationMapping.yaml' description: >- - Filter Object used during manager correlation to match incoming manager values to an existing manager's - Account/Identity + Filter object used during manager correlation to match incoming manager values to an existing manager's + account/identity. managerCorrelationRule: description: >- - Reference to the ManagerCorrelationRule, only used when a simple filter isn't sufficient. + Reference to the ManagerCorrelationRule. Only use this rule when a simple filter isn't sufficient. type: object + nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - RULE example: RULE id: type: string - description: ID of the rule + description: Rule ID. example: 2c918085708c274401708c2a8a760001 name: type: string - description: Human-readable display name of the rule + description: Rule's human-readable display name. example: Example Rule beforeProvisioningRule: description: >- - Rule that runs on the CCG and allows for customization of provisioning plans before the connector is called. + Rule that runs on the CCG and allows for customization of provisioning plans before the API calls the connector. type: object + nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - RULE example: RULE id: type: string - description: ID of the rule + description: Rule ID. example: 2c918085708c274401708c2a8a760001 name: type: string - description: Human-readable display name of the rule + description: Rule's human-readable display name. example: Example Rule schemas: type: array @@ -140,21 +144,21 @@ properties: type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - CONNECTOR_SCHEMA example: CONNECTOR_SCHEMA id: type: string - description: ID of the schema + description: Schema ID. example: 2c91808568c529c60168cca6f90c1777 name: type: string - description: Human-readable display name of the schema + description: Schema's human-readable display name. example: MySchema description: >- - List of references to Schema objects + List of references to schema objects. example: - type: "CONNECTOR_SCHEMA" id: "2c9180835d191a86015d28455b4b232a" @@ -164,22 +168,23 @@ properties: name: "group" passwordPolicies: type: array + nullable: true items: type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - PASSWORD_POLICY example: PASSWORD_POLICY id: type: string - description: ID of the policy + description: Policy ID. example: 2c91808568c529c60168cca6f90c1777 name: type: string - description: Human-readable display name of the policy + description: Policy's human-readable display name. example: My Password Policy description: >- List of references to the associated PasswordPolicy objects. @@ -196,7 +201,7 @@ properties: type: string description: >- Specifies the type of system being managed e.g. Active Directory, Workday, etc.. - If you are creating a Delimited File source, you must set the `provisionasCsv` query parameter to `true`. + If you are creating a delimited file source, you must set the `provisionasCsv` query parameter to `true`. example: "OpenLDAP - Direct" connector: type: string @@ -205,12 +210,12 @@ properties: connectorClass: type: string description: >- - The fully qualified name of the Java class that implements the connector interface. + Fully qualified name of the Java class that implements the connector interface. example: "sailpoint.connector.LDAPConnector" connectorAttributes: type: object description: >- - Connector specific configuration; will differ from type to type. + Connector specific configuration. This configuration will differ from type to type. example: healthCheckTimeout: 30 authSearchAttributes: [ @@ -227,83 +232,96 @@ properties: authoritative: type: boolean description: >- - When true indicates the source is referenced by an IdentityProfile. + When this is true, it indicates that the source is referenced by an identity profile. default: false example: false managementWorkgroup: - description: Reference to Management Workgroup for this Source + description: Reference to management workgroup for the source. type: object + nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - GOVERNANCE_GROUP example: GOVERNANCE_GROUP id: type: string - description: ID of the management workgroup + description: Management workgroup ID. example: 2c91808568c529c60168cca6f90c2222 name: type: string - description: Human-readable display name of the management workgroup + description: Management workgroup's human-readable display name. example: My Management Workgroup healthy: type: boolean description: >- - When true indicates a healthy source - default: false + When this is true, it indicates that the source is healthy. + default: false example: true status: type: string + enum: + - SOURCE_STATE_ERROR_ACCOUNT_FILE_IMPORT + - SOURCE_STATE_ERROR_CLUSTER + - SOURCE_STATE_ERROR_SOURCE + - SOURCE_STATE_ERROR_VA + - SOURCE_STATE_FAILURE_CLUSTER + - SOURCE_STATE_FAILURE_SOURCE + - SOURCE_STATE_HEALTHY + - SOURCE_STATE_UNCHECKED_CLUSTER + - SOURCE_STATE_UNCHECKED_CLUSTER_NO_SOURCES + - SOURCE_STATE_UNCHECKED_SOURCE + - SOURCE_STATE_UNCHECKED_SOURCE_NO_ACCOUNTS description: >- - A status identifier, giving specific information on why a source is healthy or not + Status identifier that gives specific information about why a source is or isn't healthy. example: SOURCE_STATE_HEALTHY since: type: string description: >- - Timestamp showing when a source health check was last performed - example: "2021-09-28T15:48:29.3801666300Z" + Timestamp that shows when a source health check was last performed. + example: 2021-09-28T15:48:29.3801666300Z connectorId: type: string - description: The id of connector - example: "active-directory" + description: Connector ID + example: active-directory connectorName: type: string - description: The name of the connector that was chosen on source creation - example: "Active Directory" + description: Name of the connector that was chosen during source creation. + example: Active Directory connectionType: type: string - description: The type of connection (direct or file) - example: "file" + description: Type of connection (direct or file). + example: file connectorImplementationId: type: string - description: The connector implementation id + description: Connector implementation ID. example: "delimited-file" created: type: string - description: The date-time when the source was created + description: Date-time when the source was created format: date-time example: 2022-02-08T14:50:03.827Z modified: type: string - description: The date-time when the source was last modified + description: Date-time when the source was last modified. format: date-time example: 2024-01-23T18:08:50.897Z credentialProviderEnabled: - type: boolean - description: >- - Enables credential provider for this source. If credentialProvider is turned on - then source can use credential provider(s) to fetch credentials. - default: false - example: false + type: boolean + description: >- + If this is true, it enables a credential provider for the source. If credentialProvider is turned on, + then the source can use credential provider(s) to fetch credentials. + default: false + example: false category: type: string nullable: true default: null - description: The category of source (e.g. null, CredentialProvider) - example: "CredentialProvider" + description: Source category (e.g. null, CredentialProvider). + example: CredentialProvider required: - name - owner - - connector + - connector \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/SpConfigObject.yaml b/static/api-specs/idn/beta/schemas/SpConfigObject.yaml index 3d799e8b0..672bb9cac 100644 --- a/static/api-specs/idn/beta/schemas/SpConfigObject.yaml +++ b/static/api-specs/idn/beta/schemas/SpConfigObject.yaml @@ -57,3 +57,11 @@ properties: description: >- If true, this type of object will be JWS signed and cannot be modified before import. example: false + legacyObject: + type: boolean + default: false + example: false + onePerTenant: + type: boolean + default: false + example: false \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/Subscription.yaml b/static/api-specs/idn/beta/schemas/Subscription.yaml index 7515cea28..dc79be0d4 100644 --- a/static/api-specs/idn/beta/schemas/Subscription.yaml +++ b/static/api-specs/idn/beta/schemas/Subscription.yaml @@ -6,7 +6,6 @@ required: - name - triggerName - enabled - - responseDeadline properties: id: type: string @@ -23,7 +22,7 @@ properties: triggerId: type: string description: ID of trigger subscribed to. - example: "idn:access-requested" + example: "idn:access-request-post-approval" triggerName: type: string description: Trigger name of trigger subscribed to. @@ -55,4 +54,4 @@ properties: example: '$[?($.identityId == "201327fda1c44704ac01181e963d463c")]' externalDocs: description: JSONPath filter documentation - url: https://developer.sailpoint.com/idn/docs/event-triggers/filtering-events + url: https://developer.sailpoint.com/idn/docs/event-triggers/filtering-events \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/Target.yaml b/static/api-specs/idn/beta/schemas/Target.yaml new file mode 100644 index 000000000..82fc19d05 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/Target.yaml @@ -0,0 +1,20 @@ +type: object +nullable: true +properties: + id: + description: Target ID + type: string + example: c6dc37bf508149b28ce5b7d90ca4bbf9 + type: + description: Target type + type: string + nullable: true + enum: + - APPLICATION + - IDENTITY + - null + example: APPLICATION + name: + description: Target name + type: string + example: Active Directory [source] \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/TaskDefinitionSummary.yaml b/static/api-specs/idn/beta/schemas/TaskDefinitionSummary.yaml index 76b095e50..2da3bc9e6 100644 --- a/static/api-specs/idn/beta/schemas/TaskDefinitionSummary.yaml +++ b/static/api-specs/idn/beta/schemas/TaskDefinitionSummary.yaml @@ -11,24 +11,25 @@ properties: id: description: System-generated unique ID of the TaskDefinition type: string - example: id12345 + example: 2c91808475b4334b0175e1dff64b63c5 uniqueName: description: Name of the TaskDefinition type: string - example: Big Task + example: Cloud Account Aggregation description: description: Description of the TaskDefinition type: string - example: A Really Big Task + example: Aggregates from the specified application. parentName: description: Name of the parent of the TaskDefinition type: string - example: Parent Task + example: Cloud Account Aggregation executor: description: Executor of the TaskDefinition + nullable: true type: string - example: Big Task + example: sailpoint.task.ServiceTaskExecutor arguments: description: Formal parameters of the TaskDefinition, without values type: object - additionalProperties: true + additionalProperties: true \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/TaskStatus.yaml b/static/api-specs/idn/beta/schemas/TaskStatus.yaml index 538797a85..71a0c384b 100644 --- a/static/api-specs/idn/beta/schemas/TaskStatus.yaml +++ b/static/api-specs/idn/beta/schemas/TaskStatus.yaml @@ -40,12 +40,15 @@ properties: example: A Really Big Task parentName: description: Name of the parent of the task this TaskStatus represents + nullable: true type: string example: Parent Task launcher: description: Service to execute the task this TaskStatus represents type: string example: sweep + target: + $ref: './Target.yaml' created: description: Creation date of the task this TaskStatus represents type: string @@ -58,24 +61,28 @@ properties: example: '2020-07-11T21:23:15.000Z' launched: description: Launch date of the task this TaskStatus represents + nullable: true type: string format: date-time example: '2020-07-11T21:23:15.000Z' completed: description: Completion date of the task this TaskStatus represents + nullable: true type: string format: date-time example: '2020-07-11T21:23:15.000Z' completionStatus: description: Completion status of the task this TaskStatus represents type: string + nullable: true enum: - - Success - - Warning - - Error - - Terminated - - TempError - example: Success + - SUCCESS + - WARNING + - ERROR + - TERMINATED + - TEMPERROR + - null + example: SUCCESS messages: description: Messages associated with the task this TaskStatus represents type: array @@ -93,9 +100,12 @@ properties: example: {"identityCount": 0} progress: description: Current progress of the task this TaskStatus represents + nullable: true type: string example: 'Started' percentComplete: description: Current percentage completion of the task this TaskStatus represents type: integer example: 100 + taskDefinitionSummary: + $ref: './TaskDefinitionSummary.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/TaskStatusMessage.yaml b/static/api-specs/idn/beta/schemas/TaskStatusMessage.yaml index b0e7a66db..ac74858b2 100644 --- a/static/api-specs/idn/beta/schemas/TaskStatusMessage.yaml +++ b/static/api-specs/idn/beta/schemas/TaskStatusMessage.yaml @@ -23,7 +23,8 @@ properties: example: akey parameters: description: Message parameters for internationalization + nullable: true type: array items: type: object - example: [{ "name": "value"}] + example: [{ "name": "value"}] \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/TemplateDto.yaml b/static/api-specs/idn/beta/schemas/TemplateDto.yaml index f1ac47501..b4922e076 100644 --- a/static/api-specs/idn/beta/schemas/TemplateDto.yaml +++ b/static/api-specs/idn/beta/schemas/TemplateDto.yaml @@ -72,6 +72,12 @@ properties: description: The time when this template was last modified. This is auto-generated. example: "2020-01-01T00:00:00.000000Z" + slackTemplate: + type: string + nullable: true + teamsTemplate: + type: string + nullable: true required: - key - medium diff --git a/static/api-specs/idn/beta/schemas/TemplateDtoDefault.yaml b/static/api-specs/idn/beta/schemas/TemplateDtoDefault.yaml index 41ae8c205..80b715a49 100644 --- a/static/api-specs/idn/beta/schemas/TemplateDtoDefault.yaml +++ b/static/api-specs/idn/beta/schemas/TemplateDtoDefault.yaml @@ -61,4 +61,7 @@ properties: "Daily digest - sent if number of outstanding tasks for task owner > 0" description: The description of the default template nullable: true - + slackTemplate: + $ref: ../schemas/TemplateSlack.yaml + teamsTemplate: + $ref: ../schemas/TemplateTeams.yaml \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/TemplateSlack.yaml b/static/api-specs/idn/beta/schemas/TemplateSlack.yaml new file mode 100644 index 000000000..347a9de6e --- /dev/null +++ b/static/api-specs/idn/beta/schemas/TemplateSlack.yaml @@ -0,0 +1,63 @@ +type: object +nullable: true +properties: + key: + type: string + nullable: true + text: + type: string + blocks: + type: string + nullable: true + attachments: + type: string + notificationType: + type: string + nullable: true + approvalId: + type: string + nullable: true + requestId: + type: string + nullable: true + requestedById: + type: string + nullable: true + isSubscription: + type: boolean + nullable: true + autoApprovalData: + type: object + nullable: true + properties: + isAutoApproved: + type: string + nullable: true + itemId: + type: string + nullable: true + itemType: + type: string + nullable: true + autoApprovalMessageJSON: + type: string + nullable: true + autoApprovalTitle: + type: string + nullable: true + customFields: + type: object + nullable: true + properties: + requestType: + type: string + nullable: true + containsDeny: + type: string + nullable: true + campaignId: + type: string + nullable: true + campaignStatus: + type: string + nullable: true \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/TemplateTeams.yaml b/static/api-specs/idn/beta/schemas/TemplateTeams.yaml new file mode 100644 index 000000000..dad72479a --- /dev/null +++ b/static/api-specs/idn/beta/schemas/TemplateTeams.yaml @@ -0,0 +1,64 @@ +type: object +nullable: true +properties: + key: + type: string + nullable: true + title: + type: string + nullable: true + text: + type: string + messageJSON: + type: string + nullable: true + isSubscription: + type: boolean + nullable: true + approvalId: + type: string + nullable: true + requestId: + type: string + nullable: true + requestedById: + type: string + nullable: true + notificationType: + type: string + nullable: true + autoApprovalData: + type: object + nullable: true + properties: + isAutoApproved: + type: string + nullable: true + itemId: + type: string + nullable: true + itemType: + type: string + nullable: true + autoApprovalMessageJSON: + type: string + nullable: true + autoApprovalTitle: + type: string + nullable: true + customFields: + type: object + nullable: true + properties: + requestType: + type: string + nullable: true + containsDeny: + type: string + nullable: true + campaignId: + type: string + nullable: true + campaignStatus: + type: string + nullable: true \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/Transform.yaml b/static/api-specs/idn/beta/schemas/Transform.yaml index 74cfb7fb6..e306172fd 100644 --- a/static/api-specs/idn/beta/schemas/Transform.yaml +++ b/static/api-specs/idn/beta/schemas/Transform.yaml @@ -92,4 +92,4 @@ properties: - $ref: '../../v3/schemas/transforms/Substring.yaml' - $ref: '../../v3/schemas/transforms/Trim.yaml' - $ref: '../../v3/schemas/transforms/Upper.yaml' - - $ref: '../../v3/schemas/transforms/UUIDGenerator.yaml' + - $ref: '../../v3/schemas/transforms/UUIDGenerator.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml b/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml index adbd9114e..0bc3a360a 100644 --- a/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml +++ b/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml @@ -12,6 +12,11 @@ properties: type: string description: The connector script name example: "servicenow" + className: + type: string + description: The connector class name. + nullable: true + example: "sailpoint.connector.OpenConnectorAdapter" features: type: array description: The list of features supported by the connector diff --git a/static/api-specs/idn/beta/schemas/Value.yaml b/static/api-specs/idn/beta/schemas/Value.yaml index 514d0721c..91498aa51 100644 --- a/static/api-specs/idn/beta/schemas/Value.yaml +++ b/static/api-specs/idn/beta/schemas/Value.yaml @@ -1,10 +1,12 @@ type: object +nullable: true properties: type: type: string + nullable: true description: The type of attribute value example: "STRING" value: type: string description: The attribute value - example: "Austin" + example: "Austin" \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml b/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml index 002c60748..77d1054e5 100644 --- a/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml +++ b/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml @@ -15,7 +15,25 @@ properties: example: MANAGER nullable: true ownerRef: - allOf: - - $ref: '../../v3/schemas/OwnerDto.yaml' - - nullable: true + type: object + description: The owner of the violation assignment config. + nullable: true + properties: + type: + type: string + description: Owner type. + enum: + - IDENTITY + - GOVERNANCE_GROUP + - MANAGER + - null + example: IDENTITY + id: + type: string + description: Owner's ID. + example: 2c9180a46faadee4016fb4e018c20639 + name: + type: string + description: Owner's name. + example: Support diff --git a/static/api-specs/idn/beta/schemas/VisibilityCriteria.yaml b/static/api-specs/idn/beta/schemas/VisibilityCriteria.yaml index 583adcc0d..d4de745c6 100644 --- a/static/api-specs/idn/beta/schemas/VisibilityCriteria.yaml +++ b/static/api-specs/idn/beta/schemas/VisibilityCriteria.yaml @@ -1,4 +1,5 @@ type: object +nullable: true properties: expression: - $ref: './Expression.yaml' + $ref: './Expression.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/WorkItems.yaml b/static/api-specs/idn/beta/schemas/WorkItems.yaml index 3dd2c5a1b..3ef7703f2 100644 --- a/static/api-specs/idn/beta/schemas/WorkItems.yaml +++ b/static/api-specs/idn/beta/schemas/WorkItems.yaml @@ -6,14 +6,17 @@ properties: example: 2c9180835d2e5168015d32f890ca1581 requesterId: type: string + nullable: true description: ID of the requester example: 2c9180835d2e5168015d32f890ca1581 requesterDisplayName: type: string + nullable: true description: The displayname of the requester example: John Smith ownerId: type: string + nullable: true description: The ID of the owner example: 2c9180835d2e5168015d32f890ca1581 ownerName: @@ -26,6 +29,7 @@ properties: example: '2017-07-11T18:45:37.098Z' modified: type: string + nullable: true format: 'date-time' example: '2018-06-25T20:22:28.104Z' description: @@ -37,19 +41,28 @@ properties: type: $ref: '../../v3/schemas/WorkItemType.yaml' remediationItems: - $ref: './RemediationItemDetails.yaml' + nullable: true + type: array + items: + $ref: './RemediationItemDetails.yaml' approvalItems: - $ref: './ApprovalItemDetails.yaml' + nullable: true + type: array + items: + $ref: './ApprovalItemDetails.yaml' name: type: string + nullable: true description: The work item name example: Account Create completed: type: string + nullable: true format: 'date-time' example: '2018-10-19T13:49:37.385Z' numItems: type: integer + nullable: true description: The number of items in the work item example: 19 errors: @@ -57,5 +70,5 @@ properties: items: type: string example: ["The work item ID that was specified was not found."] - - + form: + $ref: './FormDetails.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/Workflow.yaml b/static/api-specs/idn/beta/schemas/Workflow.yaml index 5e0b01787..9a3cea2b0 100644 --- a/static/api-specs/idn/beta/schemas/Workflow.yaml +++ b/static/api-specs/idn/beta/schemas/Workflow.yaml @@ -5,6 +5,13 @@ allOf: type: string description: Workflow ID. This is a UUID generated upon creation. example: d201c5e9-d37b-4aff-af14-66414f39d569 + modified: + type: string + format: date-time + description: The date and time the workflow was modified. + example: 2023-12-05T15:18:27.699132301Z + modifiedBy: + $ref: './WorkflowModifiedBy.yaml' executionCount: type: integer format: int32 diff --git a/static/api-specs/idn/beta/schemas/WorkflowBody.yaml b/static/api-specs/idn/beta/schemas/WorkflowBody.yaml index 81205e635..517454f48 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowBody.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowBody.yaml @@ -5,6 +5,7 @@ properties: description: The name of the workflow example: "Send Email" owner: + type: object description: The identity that owns the workflow. The owner's permissions in IDN will determine what actions the workflow is allowed to perform. Ownership can be changed by updating the owner in a PUT or PATCH request. properties: type: @@ -34,3 +35,4 @@ properties: example: false trigger: $ref: './WorkflowTrigger.yaml' + description: Workflow Trigger. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/WorkflowExecution.yaml b/static/api-specs/idn/beta/schemas/WorkflowExecution.yaml index 439b00609..99a2d747b 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowExecution.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowExecution.yaml @@ -2,33 +2,33 @@ type: object properties: id: type: string - description: The workflow execution ID + description: Workflow execution ID. example: b393f4e2-4785-4d7f-ab27-3a6b8ded4c81 workflowId: type: string - description: The workflow ID + description: Workflow ID. example: d201c5d9-d37b-4a2f-af14-66414f39d568 requestId: type: string - description: This backend ID tracks a workflow request in the system. You can provide this ID in a customer support ticket for debugging purposes. + description: Backend ID that tracks a workflow request in the system. Provide this ID in a customer support ticket for debugging purposes. example: 41e12a74fa7b4a6a98ae47887b64acdb startTime: type: string format: date-time - description: The date/time the workflow started + description: Date/time when the workflow started. example: "2022-02-07T20:13:29.356648026Z" closeTime: type: string format: date-time - description: The date/time the workflow ended + description: Date/time when the workflow ended. example: "2022-02-07T20:13:31.682410165Z" status: - description: The workflow execution status + description: Workflow execution status. type: string enum: - "Completed" - "Failed" - "Canceled" - - "Running" + - "Executing" example: "Completed" diff --git a/static/api-specs/idn/beta/schemas/WorkflowLibraryAction.yaml b/static/api-specs/idn/beta/schemas/WorkflowLibraryAction.yaml index 0664038e4..15625cbf9 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowLibraryAction.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowLibraryAction.yaml @@ -18,10 +18,28 @@ properties: description: Action Description example: "Generates a certification campaign." formFields: + nullable: true type: array description: One or more inputs that the action accepts items: $ref: './WorkflowLibraryFormFields.yaml' + exampleOutput: + oneOf: + - type: object + description: Example output + - type: array + items: + type: object + deprecated: + type: boolean + deprecatedBy: + type: string + format: date-time + versionNumber: + type: integer + description: Version number + isSimulationEnabled: + type: boolean isDynamicSchema: type: boolean description: Determines whether the dynamic output schema is returned in place of the action's output schema. The dynamic schema lists non-static properties, like properties of a workflow form where each form has different fields. These will be provided dynamically based on available form fields. @@ -141,4 +159,4 @@ properties: }, "title": "sp:create-campaign", "type": "object" - } + } \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/WorkflowLibraryFormFields.yaml b/static/api-specs/idn/beta/schemas/WorkflowLibraryFormFields.yaml index eda889dac..b04540ba1 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowLibraryFormFields.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowLibraryFormFields.yaml @@ -1,5 +1,9 @@ type: object properties: + description: + type: string + description: Description of the form field + example: First value to compare helpText: type: string description: Describes the form field in the UI @@ -18,6 +22,7 @@ properties: example: false type: description: The type of the form field + type: string nullable: true enum: - text @@ -33,6 +38,7 @@ properties: - multiType - duration - toggle + - formPicker - identityPicker - governanceGroupPicker - string @@ -42,4 +48,6 @@ properties: - keyValuePairs - emailPicker - advancedToggle - example: text + - variableCreator + - htmlEditor + example: text \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/WorkflowLibraryOperator.yaml b/static/api-specs/idn/beta/schemas/WorkflowLibraryOperator.yaml index 34bc08cb3..79250aab6 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowLibraryOperator.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowLibraryOperator.yaml @@ -17,8 +17,20 @@ properties: type: string description: Description of the operator example: Compare two boolean values and decide what happens based on the result. + isDynamicSchema: + type: boolean + description: Determines whether the dynamic output schema is returned in place of the action's output schema. The dynamic schema lists non-static properties, like properties of a workflow form where each form has different fields. These will be provided dynamically based on available form fields. + example: false + deprecated: + type: boolean + deprecatedBy: + type: string + format: date-time + isSimulationEnabled: + type: boolean formFields: type: array + nullable: true description: One or more inputs that the operator accepts items: $ref: './WorkflowLibraryFormFields.yaml' diff --git a/static/api-specs/idn/beta/schemas/WorkflowLibraryTrigger.yaml b/static/api-specs/idn/beta/schemas/WorkflowLibraryTrigger.yaml index 02059b0f4..5d9b7069c 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowLibraryTrigger.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowLibraryTrigger.yaml @@ -7,11 +7,22 @@ properties: example: "idn:identity-attributes-changed" type: description: Trigger type + type: string enum: - EVENT - SCHEDULED - EXTERNAL example: EVENT + deprecated: + type: boolean + deprecatedBy: + type: string + format: date-time + isSimulationEnabled: + type: boolean + outputSchema: + type: object + description: Example output schema name: type: string description: Trigger Name @@ -70,4 +81,4 @@ properties: description: One or more inputs that the trigger accepts example: [] items: - $ref: './WorkflowLibraryFormFields.yaml' + $ref: './WorkflowLibraryFormFields.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/WorkflowModifiedBy.yaml b/static/api-specs/idn/beta/schemas/WorkflowModifiedBy.yaml new file mode 100644 index 000000000..9bf06a123 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/WorkflowModifiedBy.yaml @@ -0,0 +1,15 @@ +type: object +properties: + type: + type: string + enum: + - IDENTITY + example: IDENTITY + id: + type: string + description: Identity ID + example: 2c9180a46faadee4016fb4e018c20639 + name: + type: string + description: Human-readable display name of identity. + example: Thomas Edison diff --git a/static/api-specs/idn/beta/schemas/WorkflowTrigger.yaml b/static/api-specs/idn/beta/schemas/WorkflowTrigger.yaml index 5995eb656..228f385df 100644 --- a/static/api-specs/idn/beta/schemas/WorkflowTrigger.yaml +++ b/static/api-specs/idn/beta/schemas/WorkflowTrigger.yaml @@ -12,9 +12,12 @@ properties: - SCHEDULED example: EVENT description: The trigger type + displayName: + type: string + nullable: true attributes: oneOf: - $ref: './workflows/trigger-attributes/EventAttributes.yaml' - $ref: './workflows/trigger-attributes/ExternalAttributes.yaml' - $ref: './workflows/trigger-attributes/ScheduledAttributes.yaml' - description: Workflow Trigger Attributes. + description: Workflow Trigger Attributes. \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/forms/FormDefinitionSelfImportExportDto.yaml b/static/api-specs/idn/beta/schemas/forms/FormDefinitionSelfImportExportDto.yaml new file mode 100644 index 000000000..c4434a272 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/forms/FormDefinitionSelfImportExportDto.yaml @@ -0,0 +1,17 @@ +type: object +description: Self block for imported/exported object. +properties: + type: + type: string + description: Imported/exported object's DTO type. + enum: + - FORM_DEFINITION + example: FORM_DEFINITION + id: + type: string + description: Imported/exported object's ID. + example: 2c9180835d191a86015d28455b4b232a + name: + type: string + description: Imported/exported object's display name. + example: Temporary User Level Permissions - Requester \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/forms/FormElement.yaml b/static/api-specs/idn/beta/schemas/forms/FormElement.yaml index c2f0dd48f..6e3aeb8a8 100644 --- a/static/api-specs/idn/beta/schemas/forms/FormElement.yaml +++ b/static/api-specs/idn/beta/schemas/forms/FormElement.yaml @@ -16,7 +16,9 @@ properties: SELECT FormElementTypeSelect DATE FormElementTypeDate SECTION FormElementTypeSection - COLUMNS FormElementTypeColumns + COLUMN_SET FormElementTypeColumns + IMAGE FormElementTypeImage + DESCRIPTION FormElementTypeDescription enum: - TEXT - TOGGLE @@ -27,7 +29,9 @@ properties: - SELECT - DATE - SECTION - - COLUMNS + - COLUMN_SET + - IMAGE + - DESCRIPTION example: TEXT type: string x-go-name: ElementType @@ -48,13 +52,16 @@ properties: SELECT FormElementTypeSelect DATE FormElementTypeDate SECTION FormElementTypeSection - COLUMNS FormElementTypeColumnsn + COLUMNS FormElementTypeColumns key: description: Technical key. example: department type: string x-go-name: Key validations: - $ref: './FormElementValidationsSet.yaml' + nullable: true + type: array + items: + $ref: './FormElementValidationsSet.yaml' type: object x-go-package: github.com/sailpoint/sp-forms/domain \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/forms/FormElementValidationsSet.yaml b/static/api-specs/idn/beta/schemas/forms/FormElementValidationsSet.yaml index 5bdc8101c..a5a5f9d6d 100644 --- a/static/api-specs/idn/beta/schemas/forms/FormElementValidationsSet.yaml +++ b/static/api-specs/idn/beta/schemas/forms/FormElementValidationsSet.yaml @@ -1,4 +1,20 @@ description: Set of FormElementValidation items. example: [ { "validationType": "REQUIRED" } ] type: object +properties: + validationType: + type: string + enum: + - REQUIRED + - MIN_LENGTH + - MAX_LENGTH + - REGEX + - DATE + - MAX_DATE + - MIN_DATE + - LESS_THAN_DATE + - PHONE + - EMAIL + - DATA_SOURCE + - TEXTAREA x-go-package: github.com/sailpoint/sp-forms/domain \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/forms/FormInstanceResponse.yaml b/static/api-specs/idn/beta/schemas/forms/FormInstanceResponse.yaml index d9871b39b..88072572b 100644 --- a/static/api-specs/idn/beta/schemas/forms/FormInstanceResponse.yaml +++ b/static/api-specs/idn/beta/schemas/forms/FormInstanceResponse.yaml @@ -27,7 +27,7 @@ properties: x-go-name: FormData formDefinitionId: description: FormDefinitionID is the id of the form definition that created this form - example: 00000000-0000-0000-0000-000000000000 + example: "49841cb8-00a5-4fbd-9888-8bbb28d48331" type: string x-go-name: FormDefinitionID formElements: @@ -44,14 +44,15 @@ properties: x-go-name: FormErrors formInput: additionalProperties: { } + nullable: true description: FormInput is an object of form input labels to value example: input1: Sales type: object x-go-name: FormInput id: - description: FormInstanceID is a unique guid identifying this form instance - example: 00000000-0000-0000-0000-000000000000 + description: Unique guid identifying this form instance + example: 06a2d961-07fa-44d1-8d0a-2f6470e30fd2 type: string x-go-name: FormInstanceID modified: diff --git a/static/api-specs/idn/beta/schemas/forms/FormOwner.yaml b/static/api-specs/idn/beta/schemas/forms/FormOwner.yaml index 13154a2e6..efd5b42c5 100644 --- a/static/api-specs/idn/beta/schemas/forms/FormOwner.yaml +++ b/static/api-specs/idn/beta/schemas/forms/FormOwner.yaml @@ -11,8 +11,12 @@ properties: x-go-name: Type id: description: Unique identifier of the form's owner. - example: 00000000-0000-0000-0000-000000000000 + example: 2c9180867624cbd7017642d8c8c81f67 type: string x-go-name: ID + name: + description: Name of the form's owner. + example: Grant Smith + type: string type: object x-go-package: github.com/sailpoint/sp-forms/domain \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/forms/FormUsedBy.yaml b/static/api-specs/idn/beta/schemas/forms/FormUsedBy.yaml index 66ae7eb64..784b3111e 100644 --- a/static/api-specs/idn/beta/schemas/forms/FormUsedBy.yaml +++ b/static/api-specs/idn/beta/schemas/forms/FormUsedBy.yaml @@ -4,9 +4,11 @@ properties: FormUsedByType value. WORKFLOW FormUsedByTypeWorkflow SOURCE FormUsedByTypeSource + MySailPoint FormUsedByType enum: - WORKFLOW - SOURCE + - MySailPoint example: WORKFLOW type: string x-go-enum-desc: |- @@ -15,8 +17,12 @@ properties: x-go-name: Type id: description: Unique identifier of the system using the form. - example: 00000000-0000-0000-0000-000000000000 + example: "61940a92-5484-42bc-bc10-b9982b218cdf" type: string x-go-name: ID + name: + description: Name of the system using the form. + example: "Access Request Form" + type: string type: object x-go-package: github.com/sailpoint/sp-forms/domain \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/forms/ListFormDefinitionsByTenantResponse.yaml b/static/api-specs/idn/beta/schemas/forms/ListFormDefinitionsByTenantResponse.yaml index 2141273c3..e5360d05b 100644 --- a/static/api-specs/idn/beta/schemas/forms/ListFormDefinitionsByTenantResponse.yaml +++ b/static/api-specs/idn/beta/schemas/forms/ListFormDefinitionsByTenantResponse.yaml @@ -4,12 +4,9 @@ properties: example: 1 format: int64 type: integer - x-go-name: Count results: description: List of FormDefinitionResponse items. items: $ref: './FormDefinitionResponse.yaml' type: array - x-go-name: Results -type: object -x-go-package: github.com/sailpoint/sp-forms/domain \ No newline at end of file +type: object \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/EventAttributes.yaml b/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/EventAttributes.yaml index 70c663712..c6ed51f36 100644 --- a/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/EventAttributes.yaml +++ b/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/EventAttributes.yaml @@ -1,6 +1,7 @@ title: Event Trigger Attributes type: object description: Attributes related to an IdentityNow ETS event +additionalProperties: false required: - id properties: @@ -8,7 +9,10 @@ properties: type: string description: The unique ID of the trigger example: "idn:identity-attributes-changed" - filter.$: + "filter.$": type: string description: JSON path expression that will limit which events the trigger will fire on example: "$.changes[?(@.attribute == 'manager')]" + description: + type: string + description: Description of the event trigger \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ExternalAttributes.yaml b/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ExternalAttributes.yaml index c66be6c7e..d083c5ad1 100644 --- a/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ExternalAttributes.yaml +++ b/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ExternalAttributes.yaml @@ -1,8 +1,7 @@ title: External Trigger Attributes type: object description: Attributes related to an external trigger -required: -- name +additionalProperties: false properties: name: type: string @@ -10,5 +9,13 @@ properties: example: "search-and-notify" description: type: string - description: Additonal context about the external trigger - example: Run a search and notify the results \ No newline at end of file + description: Additional context about the external trigger + example: Run a search and notify the results + clientId: + type: string + description: OAuth Client ID to authenticate with this trigger + example: "87e239b2-b85b-4bde-b9a7-55bf304ddcdc" + url: + type: string + description: URL to invoke this workflow + example: "https://tenant.api.identitynow.com/beta/workflows/execute/external/c79e0079-562c-4df5-aa73-60a9e25c916d" \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ScheduledAttributes.yaml b/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ScheduledAttributes.yaml index 990de7f4f..853d1a489 100644 --- a/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ScheduledAttributes.yaml +++ b/static/api-specs/idn/beta/schemas/workflows/trigger-attributes/ScheduledAttributes.yaml @@ -1,13 +1,35 @@ title: Scheduled Trigger Attributes type: object description: Attributes related to a scheduled trigger +additionalProperties: false required: -- cronString +- frequency properties: + frequency: + type: string + description: Frequency of execution + enum: + - daily + - weekly + - monthly + - yearly + - cronSchedule + timeZone: + type: string + description: Time zone identifier + example: "America/Chicago" cronString: type: string - description: A valid CRON expression - externalDocs: - description: CRON expression editor - url: https://crontab.guru/ - example: "0 * */3 */5 *" \ No newline at end of file + example: "0 9 * * 1" + weeklyDays: + type: array + items: + type: string + example: Monday + description: Scheduled days of the week for execution + weeklyTimes: + type: array + items: + type: string + example: Monday + description: Scheduled execution times \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/workgroups/WorkgroupDto.yaml b/static/api-specs/idn/beta/schemas/workgroups/WorkgroupDto.yaml index 25b872d57..4b56d9353 100644 --- a/static/api-specs/idn/beta/schemas/workgroups/WorkgroupDto.yaml +++ b/static/api-specs/idn/beta/schemas/workgroups/WorkgroupDto.yaml @@ -41,3 +41,11 @@ properties: example: 1641498673000 description: Number of connections in the governance group. readOnly: true + created: + type: string + format: date-time + example: "2022-01-06T19:51:13Z" + modified: + type: string + format: date-time + example: "2022-01-06T19:51:13Z" \ No newline at end of file diff --git a/static/api-specs/idn/sailpoint-api.beta.yaml b/static/api-specs/idn/sailpoint-api.beta.yaml index 7c897f2df..85641c126 100644 --- a/static/api-specs/idn/sailpoint-api.beta.yaml +++ b/static/api-specs/idn/sailpoint-api.beta.yaml @@ -72,23 +72,6 @@ tags: - Multiple Account Options: Define the logic Identity Security Cloud uses to provision access to an identity with multiple accounts on the source. Refer to [Managing Access Profiles](https://documentation.sailpoint.com/saas/help/access/access-profiles.html) for more information about access profiles. - - name: Access Requests - description: | - Use this API to implement and customize access request functionality. - With this functionality in place, users can request access to applications, entitlements, or roles, and managers can request that team members' access be revoked. - This allows users to get access to the tools they need quickly and securely, and it allows managers to take away access to those tools. - - Identity Security Cloud's Access Request service allows end users to request access that requires approval before it can be granted to users and enables qualified users to review those requests and approve or deny them. - - In the Request Center in Identity Security Cloud, users can view available applications, roles, and entitlements and request access to them. - If the requested tools requires approval, the requests appear as 'Pending' under the My Requests tab until the required approver approves, rejects, or cancels them. - - Users can use My Requests to track and/or cancel the requests. - - In My Team on the Identity Security Cloud Home, managers can submit requests to revoke their team members' access. - They can use the My Requests tab under Request Center to track and/or cancel the requests. - - Refer to [Requesting Access](https://documentation.sailpoint.com/saas/user-help/requests/requesting_access.html) for more information about access requests. - name: Access Request Approvals description: | Use this API to implement and customize access request approval functionality. @@ -114,35 +97,23 @@ tags: With this functionality in place, access request reviewers can see relevant details about the requested access item and associated source activity. This allows reviewers to see how many of the identities who share a manager with the access requester have this same type of access and how many of them have had activity in the related source. This additional context about whether the access has been granted before and how often it has been used can help those approving access requests make more informed decisions. - - name: Accounts + - name: Access Requests description: | - Use this API to implement and customize account functionality. - With this functionality in place, administrators can manage users' access across sources in Identity Security Cloud. + Use this API to implement and customize access request functionality. + With this functionality in place, users can request access to applications, entitlements, or roles, and managers can request that team members' access be revoked. + This allows users to get access to the tools they need quickly and securely, and it allows managers to take away access to those tools. - In Identity Security Cloud, an account refers to a user's account on a supported source. - This typically includes a unique identifier for the user, a unique password, a set of permissions associated with the source and a set of attributes. Identity Security Cloud loads accounts through the creation of sources in Identity Security Cloud. + Identity Security Cloud's Access Request service allows end users to request access that requires approval before it can be granted to users and enables qualified users to review those requests and approve or deny them. - Administrators can correlate users' identities with the users' accounts on the different sources they use. - This allows Identity Security Cloud to govern the access of identities and all their correlated accounts securely and cohesively. + In the Request Center in Identity Security Cloud, users can view available applications, roles, and entitlements and request access to them. + If the requested tools requires approval, the requests appear as 'Pending' under the My Requests tab until the required approver approves, rejects, or cancels them. - To view the accounts on a source and their correlated identities, administrators can use the Connections drop-down menu, select Sources, select the relevant source, and select its Account tab. + Users can use My Requests to track and/or cancel the requests. - To view and edit source account statuses for an identity in Identity Security Cloud, administrators can use the Identities drop-down menu, select Identity List, select the relevant identity, and select its Accounts tab. - Administrators can toggle an account's Actions to aggregate the account, enable/disable it, unlock it, or remove it from the identity. + In My Team on the Identity Security Cloud Home, managers can submit requests to revoke their team members' access. + They can use the My Requests tab under Request Center to track and/or cancel the requests. - Accounts can have the following statuses: - - - Enabled: The account is enabled. The user can access it. - - - Disabled: The account is disabled, and the user cannot access it, but the identity is not disabled in Identity Security Cloud. This can occur when an administrator disables the account or when the user's lifecycle state changes. - - - Locked: The account is locked. This may occur when someone has entered an incorrect password for the account too many times. - - - Pending: The account is currently updating. This status typically lasts seconds. - - Administrators can select the source account to view its attributes, entitlements, and the last time the account's password was changed. - - Refer to [Managing User Accounts](https://documentation.sailpoint.com/saas/help/common/users/user_access.html#managing-user-accounts) for more information about accounts. + Refer to [Requesting Access](https://documentation.sailpoint.com/saas/user-help/requests/requesting_access.html) for more information about access requests. - name: Account Activities description: | Use this API to implement account activity tracking functionality. @@ -195,28 +166,43 @@ tags: Use this API to implement account usage insight functionality. With this functionality in place, administrators can gather information and insights about how their tenants' source accounts are being used. This allows organizations to get the information they need to start optimizing and securing source account usage. + - name: Accounts + description: | + Use this API to implement and customize account functionality. + With this functionality in place, administrators can manage users' access across sources in Identity Security Cloud. + + In Identity Security Cloud, an account refers to a user's account on a supported source. + This typically includes a unique identifier for the user, a unique password, a set of permissions associated with the source and a set of attributes. Identity Security Cloud loads accounts through the creation of sources in Identity Security Cloud. + + Administrators can correlate users' identities with the users' accounts on the different sources they use. + This allows Identity Security Cloud to govern the access of identities and all their correlated accounts securely and cohesively. + + To view the accounts on a source and their correlated identities, administrators can use the Connections drop-down menu, select Sources, select the relevant source, and select its Account tab. + + To view and edit source account statuses for an identity in Identity Security Cloud, administrators can use the Identities drop-down menu, select Identity List, select the relevant identity, and select its Accounts tab. + Administrators can toggle an account's Actions to aggregate the account, enable/disable it, unlock it, or remove it from the identity. + + Accounts can have the following statuses: + + - Enabled: The account is enabled. The user can access it. + + - Disabled: The account is disabled, and the user cannot access it, but the identity is not disabled in Identity Security Cloud. This can occur when an administrator disables the account or when the user's lifecycle state changes. + + - Locked: The account is locked. This may occur when someone has entered an incorrect password for the account too many times. + + - Pending: The account is currently updating. This status typically lasts seconds. + + Administrators can select the source account to view its attributes, entitlements, and the last time the account's password was changed. + + Refer to [Managing User Accounts](https://documentation.sailpoint.com/saas/help/common/users/user_access.html#managing-user-accounts) for more information about accounts. + - name: Application Discovery + description: | + Use this API to discover applications within your Okta connector and receive connector recommendations by manually uploading application names. - name: Auth Profile description: | Auth Profile - Represents authentication configuration for an Identity Profile. This object gets created when an Identity Profile is created. APIs can be used to retrieve and update Auth Profiles. - - name: Certifications - description: | - Use this API to implement certification functionality. - This API provides specific functionality that improves an organization's ability to manage its certification process. - - A certification refers to Identity Security Cloud's mechanism for reviewing a user's access to entitlements (sets of permissions) and approving or removing that access. - These certifications serve as a way of showing that a user's access has been reviewed and approved. - Multiple certifications by different reviewers are often required to approve a user's access. - A set of multiple certifications is called a certification campaign. - - For example, an organization may use a Manager Certification as a way of showing that a user's access has been reviewed and approved by their manager, or if the certification is part of a campaign, that the user's access has been reviewed and approved by multiple managers. - Once this certification has been completed, Identity Security Cloud would provision all the access the user needs, nothing more. - - This API enables administrators and reviewers to get useful information about certifications at a high level, such as the reviewers involved, and at a more granular level, such as the permissions affected by changes to entitlements within those certifications. - It also provides the useful ability to reassign identities and items within certifications to other reviewers, rather than [reassigning the entire certifications themselves](https://developer.sailpoint.com/idn/api/beta/submit-reassign-certs-async/). - - Refer to [Managing User Accounts](https://documentation.sailpoint.com/saas/help/common/users/user_access.html#managing-user-accounts) for more information about accounts. - name: Certification Campaigns description: | Use this API to implement certification campaign functionality. @@ -272,7 +258,7 @@ tags: Those reviewers can view any of the certifications they either need to review (active) or have already reviewed (completed). When a certification campaign is in progress, certification reviewers see the listed active certifications whose involved identities they can review. - Reviewers can then make decisions to grant or revoke access, as well as reassign the ceritifcation to another reviewer. If the reviewer chooses this option, they must provide a reason for reassignment in the form of a comment. + Reviewers can then make decisions to grant or revoke access, as well as reassign the certification to another reviewer. If the reviewer chooses this option, they must provide a reason for reassignment in the form of a comment. Once a reviewer has made decisions on all the certification's involved access items, he or she must "Sign Off" to complete the review process. Doing so converts the certification into read-only status, preventing any further changes to the review decisions and deleting the work item (task) from the reviewer's list of work items. @@ -284,6 +270,24 @@ tags: The end of a certification campaign is determined by its deadline, its completion status, or by an administrator's decision. For more information about certifications and certification campaigns, refer to [Certifications](https://documentation.sailpoint.com/saas/user-help/certifications.html). + - name: Certifications + description: | + Use this API to implement certification functionality. + This API provides specific functionality that improves an organization's ability to manage its certification process. + + A certification refers to Identity Security Cloud's mechanism for reviewing a user's access to entitlements (sets of permissions) and approving or removing that access. + These certifications serve as a way of showing that a user's access has been reviewed and approved. + Multiple certifications by different reviewers are often required to approve a user's access. + A set of multiple certifications is called a certification campaign. + + For example, an organization may use a Manager Certification as a way of showing that a user's access has been reviewed and approved by their manager, or if the certification is part of a campaign, that the user's access has been reviewed and approved by multiple managers. + Once this certification has been completed, Identity Security Cloud would provision all the access the user needs, nothing more. + + This API enables administrators and reviewers to get useful information about certifications at a high level, such as the reviewers involved, and at a more granular level, such as the permissions affected by changes to entitlements within those certifications. + It also provides the useful ability to reassign identities and items within certifications to other reviewers, rather than [reassigning the entire certifications themselves](https://developer.sailpoint.com/idn/api/beta/submit-reassign-certs-async/). + + Refer to [Managing User Accounts](https://documentation.sailpoint.com/saas/help/common/users/user_access.html#managing-user-accounts) for more information about accounts. + - name: Connector Rule Management - name: Connectors description: | Use this API to implement connector functionality. @@ -300,7 +304,6 @@ tags: Refer to [SaaS Connectivity](https://developer.sailpoint.com/docs/connectivity/saas-connectivity) for more information about the SaaS custom connectors that do not need VAs (virtual appliances) to communicate with their sources. Refer to [Managing Sources](https://documentation.sailpoint.com/saas/help/sources/managing_sources.html) for more information about using connectors in Identity Security Cloud. - - name: Connector Rule Management - name: Custom Forms description: | Use this API to build and manage custom forms. @@ -324,9 +327,6 @@ tags: For example, an administrator can use the pageId forget-username:user-email to set the custom text for the case when users forget their usernames and must enter their emails. Refer to [Creating Custom Instruction Text](https://documentation.sailpoint.com/saas/help/pwd/pwd_reset.html#creating-custom-instruction-text) for more information about creating custom password instructions. - - name: Discovered Applications - description: | - Use this API to retrieve all the available discovered apps for a given tenant id. - name: Entitlements description: | Use this API to implement and customize entitlement functionality. @@ -470,12 +470,6 @@ tags: description: Read and write operations for managing client data and statuses - name: Managed Clusters description: Operations for accessing and managing client Clusters, including Log Configuration - - name: Manual Discover Applications - description: | - Use this API to manually upload application names to be correlated to an ISC connector. - - name: Manual Discover Applications Template - description: | - Use this API to download the CSV template to send to the application discovery service. - name: MFA Configuration description: Configure and test multifactor authentication (MFA) methods - name: MFA Controller @@ -679,6 +673,7 @@ tags: Use this API to implement requestable object functionality. With this functionality in place, administrators can determine which access items can be requested with the [Access Request APIs](https://developer.sailpoint.com/docs/api/beta/access-requests/), along with their statuses. This can be helpful for administrators who are implementing and customizing access request functionality as a way of checking which items are requestable as they are created, assigned, and made available. + - name: Role Insights - name: Roles description: | Use this API to implement and customize role functionality. @@ -718,7 +713,6 @@ tags: Do not configure a role to be requestable without establishing a secure access request approval process for that role first. Refer to [Working with Roles](https://documentation.sailpoint.com/saas/help/access/roles.html) for more information about roles. - - name: Role Insights - name: Search Attribute Configuration - name: Segments description: | @@ -765,6 +759,15 @@ tags: - [ServiceNow Service Desk](https://documentation.sailpoint.com/connectors/servicenow/sdim/help/integrating_servicenow_sdim/intro.html) - [Zendesk Service Desk](https://documentation.sailpoint.com/connectors/zendesk/help/integrating_zendesk_sd/introduction.html) + - name: SIM Integrations + description: | + Use this API to administer IdentityNow's Service Integration Module, or SIM integration with ServiceNow, so that it converts IdentityNow provisioning actions into tickets in ServiceNow. + + ServiceNow is a software platform that supports IT service management and automates common business processes for requesting and fulfilling service requests across a business enterprise. + + You must have an IdentityNow ServiceNow ServiceDesk license to use this integration. Contact your Customer Success Manager for more information. + + Service Desk integration for IdentityNow and in deprecation - not available for new implementation, as of July 21st, 2021. As per SailPoint’s [support policy](https://community.sailpoint.com/t5/Connector-Directory/SailPoint-Support-Policy-for-Connectivity/ta-p/79422), all existing SailPoint IdentityNow customers using this legacy integration will be supported until July 2022. - name: SOD Policies description: | Use this API to implement and manage "separation of duties" (SOD) policies. @@ -813,6 +816,11 @@ tags: This second option is a good way to prevent SOD violations from triggering at all. Refer to [Handling Policy Violations](https://documentation.sailpoint.com/saas/help/sod/policy-violations.html) for more information about SOD policy violations. + - name: Source Usages + description: | + Use this API to implement source usage insight functionality. + With this functionality in place, administrators can gather information and insights about how their tenants' sources are being used. + This allows organizations to get the information they need to start optimizing and securing source usage. - name: Sources description: | Use this API to implement and customize source functionality. @@ -872,11 +880,6 @@ tags: Well organized, mapped out connections between sources and Identity Security Cloud are essential to achieving comprehensive identity access governance across all the source systems organizations need. Refer to [Managing Sources](https://documentation.sailpoint.com/saas/help/sources/managing_sources.html) for more information about all the different things admins can do with sources once they are connected. - - name: Source Usages - description: | - Use this API to implement source usage insight functionality. - With this functionality in place, administrators can gather information and insights about how their tenants' sources are being used. - This allows organizations to get the information they need to start optimizing and securing source usage. - name: SP-Config description: Import and export configuration for some objects between tenants. - name: Suggested Entitlement Description @@ -990,9 +993,6 @@ tags: Use this API to manage metadata about your User Interface. For example you can set the iFrameWhitelist parameter to permit another domain to encapsulate IDN within an iframe or set the usernameEmptyText to change the placeholder text for Username on your tenant's login screen. - - name: Vendor Connector Mappings - description: | - Use this API to manage mappings between various SaaS vendors and Identity Security Cloud (ISC) connectors. - name: Work Items description: | Use this API to implement work item functionality. @@ -1273,7 +1273,7 @@ paths: /entitlements/{id}/access-model-metadata/{attributeKey}/values/{attributeValue}: $ref: './beta/paths/entitlement-access-model-metadata.yaml' /entitlements/aggregate/sources/{id}: - $ref: "./beta/paths/load-entitlements.yaml" + $ref: "./beta/paths/load-entitlements-by-sources.yaml" /generate-password-reset-token/digit: $ref: './beta/paths/password-reset-digit-token.yaml' /historical-identities: @@ -1310,6 +1310,10 @@ paths: $ref: './beta/paths/identities.yaml' /identities/{id}: $ref: './beta/paths/identity.yaml' + /identities/invite: + $ref: './beta/paths/identities-invite.yaml' + /identities/{id}/verification/account/send: + $ref: './beta/paths/identity-send-account-verification.yaml' /identities/process: $ref: './beta/paths/identities-process.yaml' /identities/{id}/reset: @@ -1584,6 +1588,12 @@ paths: $ref: './beta/paths/service-desk-integration-template.yaml' /service-desk-integrations/status-check-configuration: $ref: './beta/paths/service-desk-integration-configuration.yaml' + /sim-integrations/{id}: + $ref: './beta/paths/sim-integrations.yaml' + /sim-integrations/{id}/beforeProvisioningRule: + $ref: './beta/paths/sim-integrations-before-provisioning-rule.yaml' + /sim-integrations: + $ref: './beta/paths/sim-integrations-value-list.yaml' /sp-config/export: $ref: './beta/paths/sp-config-export.yaml' /sp-config/export/{id}: @@ -1640,6 +1650,12 @@ paths: $ref: './beta/paths/sources-entitlement-request-config.yaml' /sources/{id}/load-accounts: $ref: './beta/paths/load-accounts.yaml' + /sources/{id}/load-entitlements: + $ref: './beta/paths/load-entitlements.yaml' + /sources/{id}/load-uncorrelated-accounts: + $ref: './beta/paths/load-uncorrelated-accounts.yaml' + /sources/{id}/correlation-config: + $ref: './beta/paths/correlation-config.yaml' /task-status/{id}: $ref: "./beta/paths/task-status.yaml" /task-status: @@ -1714,7 +1730,7 @@ paths: $ref: './beta/paths/work-items-completed.yaml' /work-items/count: $ref: './beta/paths/work-items-count.yaml' - /work-items/count/completed: + /work-items/completed/count: $ref: './beta/paths/work-items-completed-count.yaml' /work-items/summary: $ref: './beta/paths/work-items-summary.yaml' @@ -1808,10 +1824,10 @@ paths: $ref: "./beta/paths/account-usages.yaml" /access-request-identity-metrics/{identityId}/requested-objects/{requestedObjectId}/type/{type}: $ref: "./beta/paths/access-request-identity-metrics.yaml" - /manual-discover-applications: - $ref: "./beta/paths/manual-discover-applications.yaml" /manual-discover-applications-template: $ref: "./beta/paths/manual-discover-applications-template.yaml" + /manual-discover-applications: + $ref: "./beta/paths/manual-discover-applications.yaml" /discovered-applications: $ref: "./beta/paths/discovered-applications.yaml" /vendor-connector-mappings: diff --git a/static/api-specs/idn/sailpoint-api.v3.yaml b/static/api-specs/idn/sailpoint-api.v3.yaml index 7d694dbb1..8647d1466 100644 --- a/static/api-specs/idn/sailpoint-api.v3.yaml +++ b/static/api-specs/idn/sailpoint-api.v3.yaml @@ -67,23 +67,6 @@ tags: - Multiple Account Options: Define the logic Identity Security Cloud uses to provision access to an identity with multiple accounts on the source. Refer to [Managing Access Profiles](https://documentation.sailpoint.com/saas/help/access/access-profiles.html) for more information about access profiles. - - name: Access Requests - description: | - Use this API to implement and customize access request functionality. - With this functionality in place, users can request access to applications, entitlements, or roles, and managers can request that team members' access be revoked. - This allows users to get access to the tools they need quickly and securely, and it allows managers to take away access to those tools. - - Identity Security Cloud's Access Request service allows end users to request access that requires approval before it can be granted to users and enables qualified users to review those requests and approve or deny them. - - In the Request Center in Identity Security Cloud, users can view available applications, roles, and entitlements and request access to them. - If the requested tools requires approval, the requests appear as 'Pending' under the My Requests tab until the required approver approves, rejects, or cancels them. - - Users can use My Requests to track and/or cancel the requests. - - In My Team on the Identity Security Cloud Home, managers can submit requests to revoke their team members' access. - They can use the My Requests tab under Request Center to track and/or cancel the requests. - - Refer to [Requesting Access](https://documentation.sailpoint.com/saas/user-help/requests/requesting_access.html) for more information about access requests. - name: Access Request Approvals description: | Use this API to implement and customize access request approval functionality. @@ -103,35 +86,23 @@ tags: The required approver can then view any completed access requests under the Reviewed tab. Refer to [Access Requests](https://documentation.sailpoint.com/saas/help/requests/index.html) for more information about access request approvals. - - name: Accounts + - name: Access Requests description: | - Use this API to implement and customize account functionality. - With this functionality in place, administrators can manage users' access across sources in Identity Security Cloud. + Use this API to implement and customize access request functionality. + With this functionality in place, users can request access to applications, entitlements, or roles, and managers can request that team members' access be revoked. + This allows users to get access to the tools they need quickly and securely, and it allows managers to take away access to those tools. - In Identity Security Cloud, an account refers to a user's account on a supported source. - This typically includes a unique identifier for the user, a unique password, a set of permissions associated with the source and a set of attributes. Identity Security Cloud loads accounts through the creation of sources in Identity Security Cloud. + Identity Security Cloud's Access Request service allows end users to request access that requires approval before it can be granted to users and enables qualified users to review those requests and approve or deny them. - Administrators can correlate users' identities with the users' accounts on the different sources they use. - This allows Identity Security Cloud to govern the access of identities and all their correlated accounts securely and cohesively. + In the Request Center in Identity Security Cloud, users can view available applications, roles, and entitlements and request access to them. + If the requested tools requires approval, the requests appear as 'Pending' under the My Requests tab until the required approver approves, rejects, or cancels them. - To view the accounts on a source and their correlated identities, administrators can use the Connections drop-down menu, select Sources, select the relevant source, and select its Account tab. + Users can use My Requests to track and/or cancel the requests. - To view and edit source account statuses for an identity in Identity Security Cloud, administrators can use the Identities drop-down menu, select Identity List, select the relevant identity, and select its Accounts tab. - Administrators can toggle an account's Actions to aggregate the account, enable/disable it, unlock it, or remove it from the identity. + In My Team on the Identity Security Cloud Home, managers can submit requests to revoke their team members' access. + They can use the My Requests tab under Request Center to track and/or cancel the requests. - Accounts can have the following statuses: - - - Enabled: The account is enabled. The user can access it. - - - Disabled: The account is disabled, and the user cannot access it, but the identity is not disabled in Identity Security Cloud. This can occur when an administrator disables the account or when the user's lifecycle state changes. - - - Locked: The account is locked. This may occur when someone has entered an incorrect password for the account too many times. - - - Pending: The account is currently updating. This status typically lasts seconds. - - Administrators can select the source account to view its attributes, entitlements, and the last time the account's password was changed. - - Refer to [Managing User Accounts](https://documentation.sailpoint.com/saas/help/common/users/user_access.html#managing-user-accounts) for more information about accounts. + Refer to [Requesting Access](https://documentation.sailpoint.com/saas/user-help/requests/requesting_access.html) for more information about access requests. - name: Account Activities description: | Use this API to implement account activity tracking functionality. @@ -172,46 +143,81 @@ tags: Use this API to implement account usage insight functionality. With this functionality in place, administrators can gather information and insights about how their tenants' source accounts are being used. This allows organizations to get the information they need to start optimizing and securing source account usage. + - name: Accounts + description: | + Use this API to implement and customize account functionality. + With this functionality in place, administrators can manage users' access across sources in Identity Security Cloud. + + In Identity Security Cloud, an account refers to a user's account on a supported source. + This typically includes a unique identifier for the user, a unique password, a set of permissions associated with the source and a set of attributes. Identity Security Cloud loads accounts through the creation of sources in Identity Security Cloud. + + Administrators can correlate users' identities with the users' accounts on the different sources they use. + This allows Identity Security Cloud to govern the access of identities and all their correlated accounts securely and cohesively. + + To view the accounts on a source and their correlated identities, administrators can use the Connections drop-down menu, select Sources, select the relevant source, and select its Account tab. + + To view and edit source account statuses for an identity in Identity Security Cloud, administrators can use the Identities drop-down menu, select Identity List, select the relevant identity, and select its Accounts tab. + Administrators can toggle an account's Actions to aggregate the account, enable/disable it, unlock it, or remove it from the identity. + + Accounts can have the following statuses: + + - Enabled: The account is enabled. The user can access it. + + - Disabled: The account is disabled, and the user cannot access it, but the identity is not disabled in Identity Security Cloud. This can occur when an administrator disables the account or when the user's lifecycle state changes. + + - Locked: The account is locked. This may occur when someone has entered an incorrect password for the account too many times. + + - Pending: The account is currently updating. This status typically lasts seconds. + + Administrators can select the source account to view its attributes, entitlements, and the last time the account's password was changed. + + Refer to [Managing User Accounts](https://documentation.sailpoint.com/saas/help/common/users/user_access.html#managing-user-accounts) for more information about accounts. + - name: Application Discovery + description: | + Use this API to discover applications within your Okta connector and receive connector recommendations by manually uploading application names. - name: Auth Users description: | Use this API to implement user authentication system functionality. With this functionality in place, users can get a user's authentication system details, including their capabilities, and modify those capabilities. The user's capabilities refer to their access to different systems, or authorization, within the tenant, like access to certifications (CERT_ADMIN) or reports (REPORT_ADMIN). These capabilities also determine a user's access to the different APIs. - This API provides users with a way to determine a user's access and make quick and easy changes to that access. + This API provides users with a way to determine a user's access and make quick and easy changes to that access. - name: Branding description: | Use this API to implement and customize branding functionality. With this functionality in place, administrators can get and manage existing branding items, and they can also create new branding items and configure them for use throughout Identity Security Cloud. The Branding APIs provide administrators with a way to customize branding items. This customization includes details like their colors, logos, and other information. - - name: Certifications - description: | - Use this API to implement certification functionality. - With this functionality in place, administrators and designated certification reviewers can review users' access certifications and decide whether to approve access, revoke it, or reassign the review to another reviewer. - Implementing certifications improves organizations' data security by reducing inappropriate access through a distributed review process and helping them satisfy audit and regulatory requirements. - - A certification refers to Identity Security Cloud's mechanism for reviewing a user's access to entitlements (sets of permissions) and approving or removing that access. - These serve as a way of showing that a user's access has been reviewed and approved. - Multiple certifications by different reviewers are often required to approve a user's access. - A set of multiple certifications is called a certification campaign. - - For example, an organization may use a Manager Certification as a way of showing that a user's access has been reviewed and approved by their manager, or if the certification is part of a campaign, that the user's access has been reviewed and approved by multiple managers. - Once this certification has been completed, Identity Security Cloud would provision all the access the user needs, nothing more. - - Organization administrators or certification administrators can designate other Identity Security Cloud users as certification reviewers. - Those reviewers can select the 'Certifications' tab to view any of the certifications they either need to review or have already reviewed under the 'Active' and 'Completed' tabs, respectively. - - When a certification campaign is in progress, certification reviewers will see certifications listed under 'Active,' where they can review the involved identities. - Under the 'Decision' column on the right, next to each access item, reviewers can select the checkmark to approve access, select the 'X' to revoke access, or they can toggle the 'More Options' menu to reassign the certification to another reviewer and provide a reason for reassignment in the form of a comment. - - Once a reviewer has made decisions on all the certification's involved access items, he or she must select 'Sign Off' to complete the review process. - Doing so converts the certification into read-only status, preventing any further changes to the review decisions and deleting the work item (task) from the reviewer's list of work items. - - Once all the reviewers have signed off, the certification campaign either completes or, if any reviewers decided to revoke access for any of the involved identities, it moves into a remediation phase. In the remediation phase, identities' entitlements are altered to remove any entitlements marked for revocation. - In this situation, the certification campaign completes once all the remediation requests are completed. - Refer to [Certifications](https://documentation.sailpoint.com/saas/user-help/certifications.html) for more information about certifications. + - name: Certification Campaign Filters + description: | + Use this API to implement the certification campaign filter functionality. These filters can be used to create a certification campaign that includes a subset of your entitlements or users to certify. + + For example, if for a certification campaign an organization wants to certify only specific users or entitlements, then those can be included/excluded on the basis of campaign filters. + + For more information about creating a campaign filter, refer to [Creating a Campaign Filter](https://documentation.sailpoint.com/saas/help/certs/campaign_filters.html#creating-a-campaign-filter) + + You can create campaign filters using any of the following criteria types: + + - Access Profile : This criteria type includes or excludes access profiles from a campaign. + + - Account Attribute : This criteria type includes or excludes certification items that match a specified value in an account attribute. + + - Entitlement : This criteria type includes or excludes entitlements from a campaign. + + - Identity : This criteria type includes or excludes specific identities from your campaign. + + - Identity Attribute : This criteria type includes or excludes identities based on whether they have an identity attribute that matches criteria you've chosen. + + - Role : This criteria type includes or excludes roles, as opposed to identities. + + - Source : This criteria type includes or excludes entitlements from a source you select. + + For more information about these criteria types, refer to [Types of Campaign Filters](https://documentation.sailpoint.com/saas/help/certs/campaign_filters.html#types-of-campaign-filters) + + Once the campaign filter is created, it can be linked while creating the campaign. The generated campaign will have the items to review as per the campaign filter. + + For example, An inclusion campaign filter is created with a source of Source 1, an operation of Equals, and an entitlement of Entitlement 1. When this filter is selected, only users who have Entitlement 1 are included in the campaign, and only Entitlement 1 is shown in the certification. - name: Certification Campaigns description: | Use this API to implement certification campaign functionality. @@ -267,7 +273,7 @@ tags: Those reviewers can view any of the certifications they either need to review (active) or have already reviewed (completed). When a certification campaign is in progress, certification reviewers see the listed active certifications whose involved identities they can review. - Reviewers can then make decisions to grant or revoke access, as well as reassign the ceritifcation to another reviewer. If the reviewer chooses this option, they must provide a reason for reassignment in the form of a comment. + Reviewers can then make decisions to grant or revoke access, as well as reassign the certification to another reviewer. If the reviewer chooses this option, they must provide a reason for reassignment in the form of a comment. Once a reviewer has made decisions on all the certification's involved access items, he or she must "Sign Off" to complete the review process. Doing so converts the certification into read-only status, preventing any further changes to the review decisions and deleting the work item (task) from the reviewer's list of work items. @@ -279,35 +285,6 @@ tags: The end of a certification campaign is determined by its deadline, its completion status, or by an administrator's decision. For more information about certifications and certification campaigns, refer to [Certifications](https://documentation.sailpoint.com/saas/user-help/certifications.html). - - name: Certification Campaign Filters - description: | - Use this API to implement the certification campaign filter functionality. These filters can be used to create a certification campaign that includes a subset of your entitlements or users to certify. - - For example, if for a certification campaign an organization wants to certify only specific users or entitlements, then those can be included/excluded on the basis of campaign filters. - - For more information about creating a campaign filter, refer to [Creating a Campaign Filter](https://documentation.sailpoint.com/saas/help/certs/campaign_filters.html#creating-a-campaign-filter) - - You can create campaign filters using any of the following criteria types: - - - Access Profile : This criteria type includes or excludes access profiles from a campaign. - - - Account Attribute : This criteria type includes or excludes certification items that match a specified value in an account attribute. - - - Entitlement : This criteria type includes or excludes entitlements from a campaign. - - - Identity : This criteria type includes or excludes specific identities from your campaign. - - - Identity Attribute : This criteria type includes or excludes identities based on whether they have an identity attribute that matches criteria you've chosen. - - - Role : This criteria type includes or excludes roles, as opposed to identities. - - - Source : This criteria type includes or excludes entitlements from a source you select. - - For more information about these criteria types, refer to [Types of Campaign Filters](https://documentation.sailpoint.com/saas/help/certs/campaign_filters.html#types-of-campaign-filters) - - Once the campaign filter is created, it can be linked while creating the campaign. The generated campaign will have the items to review as per the campaign filter. - - For example, An inclusion campaign filter is created with a source of Source 1, an operation of Equals, and an entitlement of Entitlement 1. When this filter is selected, only users who have Entitlement 1 are included in the campaign, and only Entitlement 1 is shown in the certification. - name: Certification Summaries description: | Use this API to implement certification summary functionality. @@ -324,6 +301,31 @@ tags: Certification summaries provide information about identity certification campaigns such as the identities involved, the number of decisions made, and the access changed. For example, an administrator or designated certification reviewer can examine the Manager Certification campaign to get an overview of how many entitlement decisions are made in that campaign as opposed to role decisions, which identities would be affected by changes to the campaign, and how those identities' access would be affected. + - name: Certifications + description: | + Use this API to implement certification functionality. + With this functionality in place, administrators and designated certification reviewers can review users' access certifications and decide whether to approve access, revoke it, or reassign the review to another reviewer. + Implementing certifications improves organizations' data security by reducing inappropriate access through a distributed review process and helping them satisfy audit and regulatory requirements. + + A certification refers to Identity Security Cloud's mechanism for reviewing a user's access to entitlements (sets of permissions) and approving or removing that access. + These serve as a way of showing that a user's access has been reviewed and approved. + Multiple certifications by different reviewers are often required to approve a user's access. + A set of multiple certifications is called a certification campaign. + + For example, an organization may use a Manager Certification as a way of showing that a user's access has been reviewed and approved by their manager, or if the certification is part of a campaign, that the user's access has been reviewed and approved by multiple managers. + Once this certification has been completed, Identity Security Cloud would provision all the access the user needs, nothing more. + + Organization administrators or certification administrators can designate other Identity Security Cloud users as certification reviewers. + Those reviewers can select the 'Certifications' tab to view any of the certifications they either need to review or have already reviewed under the 'Active' and 'Completed' tabs, respectively. + + When a certification campaign is in progress, certification reviewers will see certifications listed under 'Active,' where they can review the involved identities. + Under the 'Decision' column on the right, next to each access item, reviewers can select the checkmark to approve access, select the 'X' to revoke access, or they can toggle the 'More Options' menu to reassign the certification to another reviewer and provide a reason for reassignment in the form of a comment. + + Once a reviewer has made decisions on all the certification's involved access items, he or she must select 'Sign Off' to complete the review process. + Doing so converts the certification into read-only status, preventing any further changes to the review decisions and deleting the work item (task) from the reviewer's list of work items. + + Once all the reviewers have signed off, the certification campaign either completes or, if any reviewers decided to revoke access for any of the involved identities, it moves into a remediation phase. In the remediation phase, identities' entitlements are altered to remove any entitlements marked for revocation. + In this situation, the certification campaign completes once all the remediation requests are completed. - name: Configuration Hub description: | Upload configurations and manage object mappings between tenants. @@ -818,6 +820,11 @@ tags: This second option is a good way to prevent SOD violations from triggering at all. Refer to [Handling Policy Violations](https://documentation.sailpoint.com/saas/help/sod/policy-violations.html) for more information about SOD policy violations. + - name: Source Usages + description: | + Use this API to implement source usage insight functionality. + With this functionality in place, administrators can gather information and insights about how their tenants' sources are being used. + This allows organizations to get the information they need to start optimizing and securing source usage. - name: Sources description: | Use this API to implement and customize source functionality. @@ -877,11 +884,6 @@ tags: Well organized, mapped out connections between sources and Identity Security Cloud are essential to achieving comprehensive identity access governance across all the source systems organizations need. Refer to [Managing Sources](https://documentation.sailpoint.com/saas/help/sources/managing_sources.html) for more information about all the different things admins can do with sources once they are connected. - - name: Source Usages - description: | - Use this API to implement source usage insight functionality. - With this functionality in place, administrators can gather information and insights about how their tenants' sources are being used. - This allows organizations to get the information they need to start optimizing and securing source usage. - name: Tagged Objects description: | Use this API to implement object tagging functionality. @@ -1007,12 +1009,22 @@ paths: $ref: "./v3/paths/accounts-id-disable.yaml" /accounts/{id}/unlock: $ref: "./v3/paths/accounts-id-unlock.yaml" + /accounts/search-attribute-config: + $ref: './v3/paths/searchAttributeConfig.yaml' + /accounts/search-attribute-config/{name}: + $ref: './v3/paths/searchAttributeConfig-get-patch-delete.yaml' /account-activities: $ref: "./v3/paths/account-activity-list.yaml" /account-activities/{id}: $ref: "./v3/paths/account-activity-get-one.yaml" /auth-org/network-config: $ref: "./v3/paths/auth-org-network-config.yaml" + /auth-org/lockout-config: + $ref: "./v3/paths/auth-org-lockout-config.yaml" + /auth-org/service-provider-config: + $ref: "./v3/paths/auth-org-service-provider-config.yaml" + /auth-org/session-config: + $ref: "./v3/paths/auth-org-session-config.yaml" /auth-users/{id}: $ref: "./v3/paths/auth-user.yaml" /brandings: @@ -1096,9 +1108,9 @@ paths: /configuration-hub/backups/uploads/{id}: $ref: './v3/paths/configuration-hub/backup-uploads-id.yaml' /connectors/{scriptName}: + $ref: './v3/paths/connector.yaml' + /connectors: $ref: './v3/paths/connectors.yaml' - /connectors/{scriptName}/list: - $ref: './v3/paths/connectors-list.yaml' /connectors/{scriptName}/source-config: $ref: './v3/paths/connectors-source-config.yaml' /connectors/{scriptName}/translations/{locale}: @@ -1107,8 +1119,6 @@ paths: $ref: './v3/paths/connectors-source-template.yaml' /connectors/{scriptName}/correlation-config: $ref: './v3/paths/connectors-correlation-config.yaml' - /connectors: - $ref: './v3/paths/connectors-create-custom-connector.yaml' /identities/{identity-id}/set-lifecycle-state: $ref: "./v3/paths/identity-set-lifecycle-state.yaml" /identity-profiles/{identity-profile-id}/lifecycle-states: @@ -1401,6 +1411,14 @@ paths: $ref: "./v3/paths/source-usages.yaml" /account-usages/{accountId}/summaries: $ref: "./v3/paths/account-usages.yaml" + /manual-discover-applications-template: + $ref: "./v3/paths/manual-discover-applications-template.yaml" + /manual-discover-applications: + $ref: "./v3/paths/manual-discover-applications.yaml" + /discovered-applications: + $ref: "./v3/paths/discovered-applications.yaml" + /vendor-connector-mappings: + $ref: "./v3/paths/vendor-connector-mappings.yaml" security: - UserContextAuth: [] diff --git a/static/api-specs/idn/v3/paths/access-profile-entitlements.yaml b/static/api-specs/idn/v3/paths/access-profile-entitlements.yaml index 51665ac45..931ac5214 100644 --- a/static/api-specs/idn/v3/paths/access-profile-entitlements.yaml +++ b/static/api-specs/idn/v3/paths/access-profile-entitlements.yaml @@ -4,16 +4,17 @@ get: - Access Profiles summary: List Access Profile's Entitlements description: >- - This API lists the Entitlements associated with a given Access Profile + Use this API to get a list of an access profile's entitlements. + A token with API, ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. In + addition, a token with SOURCE_SUBADMIN authority must have access to the source associated with the specified + access profile. - A token with API, ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to invoke this API. In - addition, a token with SOURCE_SUBADMIN authority must have access to the Source associated with the given - Access Profile + >**Note:** When you filter for access profiles that have the '+' symbol in their names, the response is blank. parameters: - name: id in: path - description: ID of the containing Access Profile + description: ID of the access profile containing the entitlements. required: true schema: type: string @@ -54,6 +55,9 @@ get: **source.id**: *eq, in* + + + Filtering is not supported for access profiles and entitlements that have the '+' symbol in their names. example: attribute eq "memberOf" required: false - in: query @@ -70,7 +74,7 @@ get: required: false responses: '200': - description: List of Entitlements + description: List of entitlements. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/access-profiles.yaml b/static/api-specs/idn/v3/paths/access-profiles.yaml index 3de3fd691..bdb5c6585 100644 --- a/static/api-specs/idn/v3/paths/access-profiles.yaml +++ b/static/api-specs/idn/v3/paths/access-profiles.yaml @@ -4,11 +4,12 @@ get: - Access Profiles summary: List Access Profiles description: >- - This API returns a list of Access Profiles. - + Use this API to get a list of access profiles. A token with API, ORG_ADMIN, ROLE_ADMIN, ROLE_SUBADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. + + >**Note:** When you filter for access profiles that have the '+' symbol in their names, the response is blank. parameters: - in: query name: for-subadmin @@ -16,11 +17,11 @@ get: type: string description: >- If provided, filters the returned list according to what is visible to the indicated ROLE_SUBADMIN or - SOURCE_SUBADMIN Identity. The value of the parameter is either an Identity ID, or the special value **me**, - which is shorthand for the calling Identity's ID. + SOURCE_SUBADMIN identity. The value of the parameter is either an identity ID, or the special value **me**, + which is shorthand for the calling identity's ID. - A 400 Bad Request error is returned if the **for-subadmin** parameter is specified for an Identity that is not + A 400 Bad Request error is returned if the **for-subadmin** parameter is specified for an identity that is not a subadmin. example: 8c190e6787aa4ed9a90bd9d5344523fb required: false @@ -60,6 +61,9 @@ get: Composite operators supported: *and, or* + + + Filtering is not supported for access profiles and entitlements that have the '+' symbol in their names. example: name eq "SailPoint Support" required: false - in: query @@ -80,7 +84,7 @@ get: type: string format: comma-separated description: >- - If present and not empty, additionally filters Access Profiles to those which are assigned to the Segment(s) + If present and not empty, additionally filters access profiles to those which are assigned to the segment(s) with the specified IDs. @@ -93,13 +97,13 @@ get: type: boolean default: true description: >- - Whether or not the response list should contain unsegmented Access Profiles. + Indicates whether the response list should contain unsegmented access profiles. If *for-segment-ids* is absent or empty, specifying *include-unsegmented* as false results in an error. example: false required: false responses: '200': - description: List of Access Profiles + description: List of access profiles. content: application/json: schema: @@ -122,16 +126,16 @@ post: operationId: createAccessProfile tags: - Access Profiles - summary: Create an Access Profile + summary: Create Access Profile description: >- - This API creates an Access Profile. + Use this API to create an access profile. A token with API, ORG_ADMIN, ROLE_ADMIN, ROLE_SUBADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. In addition, a token with only ROLE_SUBADMIN or SOURCE_SUBADMIN authority must be associated with the - Access Profile's Source. + access profile's Source. The maximum supported length for the description field is 2000 characters. - Longer descriptions will be preserved for existing access profiles, however, any new access profiles as well as any updates to existing descriptions will be limited to 2000 characters. + Longer descriptions will be preserved for existing access profiles. However, any new access profiles as well as any updates to existing descriptions are limited to 2000 characters. requestBody: required: true content: @@ -140,7 +144,7 @@ post: $ref: '../../v3/schemas/access/AccessProfile.yaml' responses: '201': - description: Access Profile created + description: Access profile created. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/access-request-approval-summary.yaml b/static/api-specs/idn/v3/paths/access-request-approval-summary.yaml index d144d71b5..ea3b21c82 100644 --- a/static/api-specs/idn/v3/paths/access-request-approval-summary.yaml +++ b/static/api-specs/idn/v3/paths/access-request-approval-summary.yaml @@ -2,12 +2,11 @@ get: operationId: getAccessRequestApprovalSummary security: - UserContextAuth: [ idn:access-request-approvals-summary:read ] - summary: Get the number of access-requests-approvals + summary: Get Access Requests Approvals Number tags: - Access Request Approvals description: >- - This endpoint returns the number of pending, approved and rejected access - requests approvals. See "owner-id" query parameter below for authorization + Use this API to return the number of pending, approved and rejected access requests approvals. See the "owner-id" query parameter for authorization information. info. parameters: - in: query @@ -15,7 +14,7 @@ get: schema: type: string description: >- - The id of the owner or approver identity of the approvals. If present, + The ID of the owner or approver identity of the approvals. If present, the value returns approval summary for the specified identity. * ORG_ADMIN users can call this with any identity ID value. * ORG_ADMIN user can also fetch all the approvals in the org, when @@ -29,8 +28,8 @@ get: schema: type: string description: >- - From date is the date and time from which the results will be shown. It - should be in a valid ISO-8601 format + This is the date and time the results will be shown from. It + must be in a valid ISO-8601 format. example: from-date=2020-03-19T19:59:11Z required: false responses: diff --git a/static/api-specs/idn/v3/paths/access-request-status.yaml b/static/api-specs/idn/v3/paths/access-request-status.yaml index 31e271dbd..eb0712c7e 100644 --- a/static/api-specs/idn/v3/paths/access-request-status.yaml +++ b/static/api-specs/idn/v3/paths/access-request-status.yaml @@ -6,9 +6,12 @@ get: - Access Requests summary: Access Request Status description: >- - The Access Request Status API returns a list of access request statuses + Use this API to return a list of access request statuses based on the specified query parameters. + If an access request was made for access that an identity already has, the API ignores the access request. + These ignored requests do not display in the list of access request statuses. + Any token with any authority can request their own status. A token with ORG_ADMIN authority is required to call this API to get a list of statuses for other users. @@ -19,7 +22,7 @@ get: type: string example: 2c9180877b2b6ea4017b2c545f971429 description: >- - Filter the results by the identity for which the requests were made. + Filter the results by the identity the requests were made for. *me* indicates the current user. Mutually exclusive with *regarding-identity*. required: false @@ -29,7 +32,7 @@ get: type: string example: 2c9180877b2b6ea4017b2c545f971429 description: >- - Filter the results by the identity that made the requests. *me* + Filter the results by the identity twho made the requests. *me* indicates the current user. Mutually exclusive with *regarding-identity*. required: false @@ -39,7 +42,7 @@ get: type: string example: 2c9180877b2b6ea4017b2c545f971429 description: >- - Filter the results by the specified identity which is either the + Filter the results by the specified identity who is either the requester or target of the requests. *me* indicates the current user. Mutually exclusive with *requested-for* and *requested-by*. required: false @@ -49,14 +52,14 @@ get: type: string example: 2c9180877b2b6ea4017b2c545f971429 description: >- - Filter the results by the specified identity which is the + Filter the results by the specified identity who is the owner of the Identity Request Work Item. *me* indicates the current user. required: false - in: query name: count description: >- - If *true* it will populate the *X-Total-Count* response header with the - number of results that would be returned if *limit* and *offset* were + If this is true, the *X-Total-Count* response header populates with the + number of results that would be returned if limit and offset were ignored. required: false schema: @@ -115,7 +118,7 @@ get: required: false responses: "200": - description: List of requested item status. + description: List of requested item statuses. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/access-requests.yaml b/static/api-specs/idn/v3/paths/access-requests.yaml index ceaa137b8..bf0752e11 100644 --- a/static/api-specs/idn/v3/paths/access-requests.yaml +++ b/static/api-specs/idn/v3/paths/access-requests.yaml @@ -1,20 +1,22 @@ post: operationId: createAccessRequest security: - - UserContextAuth: [ idn:access-request:create ] - summary: Submit an Access Request + - UserContextAuth: [ idn:access-request:manage ] + summary: Submit Access Request tags: - Access Requests description: | - This submits the access request into IdentityNow, where it will follow any IdentityNow approval processes. + Use this API to submit an access request in Identity Security Cloud (ISC), where it follows any ISC approval processes. - Access requests are processed asynchronously by IdentityNow. A success response from this endpoint means the request - has been submitted to IDN and is queued for processing. Because this endpoint is asynchronous, it will not return an error - if you submit duplicate access requests in quick succession, or you submit an access request for access that is already in progress, approved, or rejected. - It is best practice to check for any existing access requests that reference the same access items before submitting a new access request. This can - be accomplished by using the [access request status](https://developer.sailpoint.com/idn/api/v3/list-access-request-status) or the [pending access request approvals](https://developer.sailpoint.com/idn/api/v3/list-pending-approvals) endpoints. You can also - use the [search API](https://developer.sailpoint.com/idn/api/v3/search) to check the existing access items that an identity has before submitting - an access request to ensure you are not requesting access that is already granted. + Access requests are processed asynchronously by ISC. A successful response from this endpoint means that the request + has been submitted to ISC and is queued for processing. Because this endpoint is asynchronous, it doesn't return an error + if you submit duplicate access requests in quick succession or submit an access request for access that is already in progress, approved, or rejected. + + It's best practice to check for any existing access requests that reference the same access items before submitting a new access request. This can + be accomplished by using the [List Access Request Status](https://developer.sailpoint.com/idn/api/v3/list-access-request-status) or the [Pending Access Request Approvals](https://developer.sailpoint.com/idn/api/v3/list-pending-approvals) APIs. You can also + use the [Search API](https://developer.sailpoint.com/idn/api/v3/search) to check the existing access items an identity has before submitting + an access request to ensure that you aren't requesting access that is already granted. If you use this API to request access that an identity already has, the API will ignore the request. + These ignored requests do not display when you use the [List Access Request Status](https://developer.sailpoint.com/idn/api/v3/list-access-request-status) API. There are two types of access request: @@ -29,13 +31,11 @@ post: * Can only be requested for a single identity at a time. * You cannot use an access request to revoke access from an identity if that access has been granted by role membership or by birthright provisioning. * Does not support self request. Only manager can request to revoke access for their directly managed employees. - * If a `removeDate` is specified, then the access will be removed on that date and time only for roles and access profiles. Entitlements are currently unsupported for `removeDate`. + * If a `removeDate` is specified, then the access will be removed on that date and time only for roles, access profiles and entitlements. * Roles, access profiles, and entitlements can be requested for revocation. * Revoke requests for entitlements are limited to 1 entitlement per access request currently. - * [Roles, Access Profiles] You can specify a `removeDate` if the access doesn't already have a sunset date. The `removeDate` must be a future date, in the UTC timezone. + * You can specify a `removeDate` if the access doesn't already have a sunset date. The `removeDate` must be a future date, in the UTC timezone. * Allows a manager to request to revoke access for direct employees. A token with ORG_ADMIN authority can also request to revoke access from anyone. - - >**Note:** There is no indication to the approver in the IdentityNow UI that the approval request is for a revoke action. Take this into consideration when calling this API. A token with API authority cannot be used to call this endpoint. diff --git a/static/api-specs/idn/v3/paths/account.yaml b/static/api-specs/idn/v3/paths/account.yaml index f517f1d36..182002666 100644 --- a/static/api-specs/idn/v3/paths/account.yaml +++ b/static/api-specs/idn/v3/paths/account.yaml @@ -42,16 +42,17 @@ patch: - Accounts summary: Update Account description: >- - This updates account details. + Use this API to update account details. A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. - This endpoint supports updating an account's correlation. The identityId and manuallyCorrelated fields can be - modified for any account. The attributes fields can be modified just for flat file accounts. - To re-assign an account from one identity to another, replace the current identityId with a new value. - If the account you're assigning was provisioned by IdentityNow, it's possible IdentityNow could create a new account + This API supports updating an account's correlation. You can modify only the `identityId` and `manuallyCorrelated` fields for any flat file account. + To reassign an account from one identity to another, replace the current `identityId` with a new value. + If the account you're assigning was provisioned by Identity Security Cloud (ISC), it's possible for ISC to create a new account for the previous identity as soon as the account is moved. If the account you're assigning is authoritative, - this will cause the previous identity to become uncorrelated and could even result in its deletion. - All accounts that are reassigned will be set to manuallyCorrelated: true unless otherwise specified + this causes the previous identity to become uncorrelated and can even result in its deletion. + All accounts that are reassigned will be set to `manuallyCorrelated: true` unless you specify otherwise. + + >**Note:** The `attributes` field can only be modified for flat file accounts. security: - UserContextAuth: [idn:accounts:manage] parameters: @@ -72,8 +73,8 @@ patch: schema: type: array items: - $ref: "../schemas/JsonPatchOperation.yaml" - example: + type: object + examples: Uncorrelate account: description: Remove account from Identity value: diff --git a/static/api-specs/idn/v3/paths/accounts.yaml b/static/api-specs/idn/v3/paths/accounts.yaml index f44b994d4..3499fe5c3 100644 --- a/static/api-specs/idn/v3/paths/accounts.yaml +++ b/static/api-specs/idn/v3/paths/accounts.yaml @@ -48,6 +48,12 @@ get: **entitlements**: *eq* + **origin**: *eq, in* + + + **manuallyCorrelated**: *eq* + + **identity.name**: *eq, in, sw* @@ -76,7 +82,7 @@ get: Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) - Sorting is supported for the following fields: **id, name, created, modified, sourceId, identityId, identity.id, nativeIdentity, uuid, manuallyCorrelated, entitlements, identity.name, identity.identityState, identity.correlated, source.displayableName, source.authoritative, source.connectionType** + Sorting is supported for the following fields: **id, name, created, modified, sourceId, identityId, identity.id, nativeIdentity, uuid, manuallyCorrelated, entitlements, origin, identity.name, identity.identityState, identity.correlated, source.displayableName, source.authoritative, source.connectionType** responses: "200": description: List of account objects diff --git a/static/api-specs/idn/v3/paths/approve-access-request-approval.yaml b/static/api-specs/idn/v3/paths/approve-access-request-approval.yaml index 5e583e931..7931ce578 100644 --- a/static/api-specs/idn/v3/paths/approve-access-request-approval.yaml +++ b/static/api-specs/idn/v3/paths/approve-access-request-approval.yaml @@ -1,21 +1,21 @@ post: operationId: approveAccessRequest - summary: Approves an access request approval. + summary: Approve Access Request Approval tags: - Access Request Approvals description: >- - This endpoint approves an access request approval. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. + Use this endpoint to approve an access request approval. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. parameters: - in: path name: approvalId schema: type: string required: true - description: The id of the approval. + description: Approval ID. example: 2c91808b7294bea301729568c68c002e requestBody: description: Reviewer's comment. - required: false + required: true content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/auth-org-lockout-config.yaml b/static/api-specs/idn/v3/paths/auth-org-lockout-config.yaml new file mode 100644 index 000000000..0864c91d1 --- /dev/null +++ b/static/api-specs/idn/v3/paths/auth-org-lockout-config.yaml @@ -0,0 +1,81 @@ +get: + operationId: getAuthOrgLockoutConfig + tags: + - Global Tenant Security Settings + summary: Get Auth Org Lockout Configuration. + description: >- + This API returns the details of an org's lockout auth configuration. + responses: + "200": + description: Lockout configuration for the tenant's auth org. + content: + application/json: + schema: + $ref: "../schemas/LockoutConfiguration.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [sp:auth-org:read] +patch: + operationId: patchAuthOrgLockoutConfig + tags: + - Global Tenant Security Settings + summary: Update Auth Org Lockout Configuration + description: >- + This API updates an existing lockout configuration for an org using PATCH + Requires security scope of: 'sp:auth-org:update' + requestBody: + required: true + description: >- + A list of auth org lockout configuration update operations according to + the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + + Ensures that the patched Lockout Config conforms to certain logical + guidelines, which are: + 1. maximumAttempts >= 1 && maximumAttempts <= 15 + 2. lockoutDuration >= 5 && lockoutDuration <= 60 + 3. lockoutWindow >= 5 && lockoutDuration <= 60 + content: + application/json-patch+json: + schema: + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" + example: + - op: "replace" + path: "/maximumAttempts" + value: 7, + - op: "add" + path: "/lockoutDuration" + value: 35 + responses: + "200": + description: Updated Auth Org lockout configuration. + content: + application/json: + schema: + $ref: "../schemas/LockoutConfiguration.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [] diff --git a/static/api-specs/idn/v3/paths/auth-org-service-provider-config.yaml b/static/api-specs/idn/v3/paths/auth-org-service-provider-config.yaml new file mode 100644 index 000000000..7a888385a --- /dev/null +++ b/static/api-specs/idn/v3/paths/auth-org-service-provider-config.yaml @@ -0,0 +1,133 @@ +get: + operationId: getAuthOrgServiceProviderConfig + tags: + - Global Tenant Security Settings + summary: Get Service Provider Configuration. + description: >- + This API returns the details of an org's service provider auth + configuration. + responses: + "200": + description: Service provider configuration for the tenant. + content: + application/json: + schema: + $ref: "../schemas/ServiceProviderConfiguration.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [] +patch: + operationId: patchAuthOrgServiceProviderConfig + tags: + - Global Tenant Security Settings + summary: Update Service Provider Configuration + description: >- + This API updates an existing service provider configuration for an org using + PATCH. + requestBody: + required: true + description: >- + A list of auth org service provider configuration update operations + according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) + standard. + + Note: /federationProtocolDetails/0 is IdpDetails + /federationProtocolDetails/1 is SpDetails + + Ensures that the patched ServiceProviderConfig conforms to certain logical + guidelines, which are: + 1. Do not add or remove any elements in the federation protocol details + in the service provider configuration. + 2. Do not modify, add, or delete the service provider details element in + the federation protocol details. + 3. If this is the first time the patched ServiceProviderConfig enables + Remote IDP sign-in, it must also include IDPDetails. + 4. If the patch enables Remote IDP sign in, the entityID in the + IDPDetails cannot be null. IDPDetails must include an entityID. + 5. Any JIT configuration update must be valid. + + Just in time configuration update must be valid when enabled. This + includes: + - A Source ID + - Source attribute mappings + - Source attribute maps have all the required key values (firstName, + lastName, email) + content: + application/json-patch+json: + schema: + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" + example: + - op: "replace" + path: "/enabled" + value: true, + - op: "add" + path: "/federationProtocolDetails/0/jitConfiguration" + value: + { + "enabled": true, + "sourceId": "2c9180857377ed2901739c12a2da5ac8", + "sourceAttributeMappings": + { + "firstName": "okta.firstName", + "lastName": "okta.lastName", + "email": "okta.email", + "employeeNumber": "okta.employeeNumber", + }, + } + responses: + "200": + description: Auth Org Service Provider configuration updated. + content: + application/json: + schema: + $ref: "../schemas/ServiceProviderConfiguration.yaml" + "400": + description: Client Error - Returned if the request body is invalid. + content: + application/json: + schema: + $ref: "../../v3/schemas/ErrorResponseDto.yaml" + examples: + 400.1 Bad Request Content: + description: Response for bad request content + value: + detailCode: 400.1 Bad Request Content + trackingId: e7eab60924f64aa284175b9fa3309599 + messages: + - locale: en + localeOrigin: REQUEST + text: firstName is required; accountName is required; + 400.1.3 Illegal value: + description: Response for Illegal value + value: + detailCode: 400.1.3 Illegal value + trackingId: e7eab60924f64aa284175b9fa3309599 + messages: + - locale: en + localeOrigin: REQUEST + text: JIT source id is invalid. + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [] diff --git a/static/api-specs/idn/v3/paths/auth-org-session-config.yaml b/static/api-specs/idn/v3/paths/auth-org-session-config.yaml new file mode 100644 index 000000000..60f34ee2f --- /dev/null +++ b/static/api-specs/idn/v3/paths/auth-org-session-config.yaml @@ -0,0 +1,80 @@ +get: + operationId: getAuthOrgSessionConfig + tags: + - Global Tenant Security Settings + summary: Get Auth Org Session Configuration. + description: >- + This API returns the details of an org's session auth configuration. + responses: + "200": + description: Session configuration for the tenant's auth org. + content: + application/json: + schema: + $ref: "../schemas/SessionConfiguration.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [] +patch: + operationId: patchAuthOrgSessionConfig + tags: + - Global Tenant Security Settings + summary: Update Auth Org Session Configuration + description: >- + This API updates an existing session configuration for an org using PATCH. + requestBody: + required: true + description: >- + A list of auth org session configuration update operations according to + the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + + Ensures that the patched Session Config conforms to certain logical + guidelines, which are: + 1. maxSessionTime >= 1 && maxSessionTime <= 10080 (1 week) + 2. maxIdleTime >= 1 && maxIdleTime <= 1440 (1 day) + 3. maxSessionTime must have a greater duration than maxIdleTime. + content: + application/json-patch+json: + schema: + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" + example: + - op: "replace" + path: "/rememberMe" + value: true, + - op: "add" + path: "/maxSessionTime" + value: 480 + responses: + "200": + description: Updated Auth Org session configuration. + content: + application/json: + schema: + $ref: "../schemas/SessionConfiguration.yaml" + "400": + $ref: "../../v3/responses/400.yaml" + "401": + $ref: "../../v3/responses/401.yaml" + "403": + $ref: "../../v3/responses/403.yaml" + "404": + $ref: "../../v3/responses/404.yaml" + "429": + $ref: "../../v3/responses/429.yaml" + "500": + $ref: "../../v3/responses/500.yaml" + security: + - UserContextAuth: [] diff --git a/static/api-specs/idn/v3/paths/branding.yaml b/static/api-specs/idn/v3/paths/branding.yaml index e7a23bfa1..8ed1e15be 100644 --- a/static/api-specs/idn/v3/paths/branding.yaml +++ b/static/api-specs/idn/v3/paths/branding.yaml @@ -8,7 +8,7 @@ get: A token with API, ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:branding:read] parameters: - in: path name: name @@ -60,7 +60,7 @@ put: schema: $ref: '../schemas/BrandingItemCreate.yaml' security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:branding:manage] responses: '200': description: Branding item updated @@ -90,7 +90,7 @@ delete: A token with API, ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:branding:manage] parameters: - in: path name: name diff --git a/static/api-specs/idn/v3/paths/brandings.yaml b/static/api-specs/idn/v3/paths/brandings.yaml index 41d19b4c5..6e701f2fe 100644 --- a/static/api-specs/idn/v3/paths/brandings.yaml +++ b/static/api-specs/idn/v3/paths/brandings.yaml @@ -9,7 +9,7 @@ get: A token with API, ORG_ADMIN authority is required to call this API. security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:branding:read] responses: '200': description: A list of branding items. @@ -45,7 +45,7 @@ post: schema: $ref: '../schemas/BrandingItemCreate.yaml' security: - - UserContextAuth: [ ] + - UserContextAuth: [idn:branding:manage] responses: '201': description: Branding item created diff --git a/static/api-specs/idn/v3/paths/bulk-add-tagged-objects.yaml b/static/api-specs/idn/v3/paths/bulk-add-tagged-objects.yaml index c61df43cb..e5af783d2 100644 --- a/static/api-specs/idn/v3/paths/bulk-add-tagged-objects.yaml +++ b/static/api-specs/idn/v3/paths/bulk-add-tagged-objects.yaml @@ -24,7 +24,9 @@ post: content: application/json: schema: - $ref: '../schemas/BulkTaggedObject.yaml' + type: array + items: + $ref: '../schemas/BulkTaggedObjectResponse.yaml' '400': $ref: '../../v3/responses/400.yaml' '401': diff --git a/static/api-specs/idn/v3/paths/campaign-activate.yaml b/static/api-specs/idn/v3/paths/campaign-activate.yaml index f110db213..c53b6f6e9 100644 --- a/static/api-specs/idn/v3/paths/campaign-activate.yaml +++ b/static/api-specs/idn/v3/paths/campaign-activate.yaml @@ -4,9 +4,9 @@ post: - Certification Campaigns summary: Activate a Campaign description: >- - Submits a job to activate the campaign with the given Id. The campaign must be staged. + Use this API to submit a job to activate the certified campaign with the specified ID. The campaign must be staged. - Requires roles of CERT_ADMIN and ORG_ADMIN + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [idn:campaign:update] requestBody: @@ -26,7 +26,7 @@ post: schema: type: string required: true - description: The campaign id + description: Campaign ID. example: ef38f94347e94562b5bb8424a56397d8 responses: '202': diff --git a/static/api-specs/idn/v3/paths/campaign-complete.yaml b/static/api-specs/idn/v3/paths/campaign-complete.yaml index b40480343..18bd8d46f 100644 --- a/static/api-specs/idn/v3/paths/campaign-complete.yaml +++ b/static/api-specs/idn/v3/paths/campaign-complete.yaml @@ -12,10 +12,10 @@ post: ::: - Completes a certification campaign. This is provided to admins so that they + Use this API to complete a certification campaign. This functionality is provided to admins so that they can complete a certification even if all items have not been completed. - Requires roles of CERT_ADMIN and ORG_ADMIN + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [idn:campaign:update] requestBody: @@ -33,7 +33,7 @@ post: schema: type: string required: true - description: The campaign id + description: Campaign ID. example: ef38f94347e94562b5bb8424a56397d8 responses: '202': diff --git a/static/api-specs/idn/v3/paths/campaign-filters.yaml b/static/api-specs/idn/v3/paths/campaign-filters.yaml index 2e02f6fbb..5c95d7e96 100644 --- a/static/api-specs/idn/v3/paths/campaign-filters.yaml +++ b/static/api-specs/idn/v3/paths/campaign-filters.yaml @@ -2,9 +2,9 @@ post: operationId: createCampaignFilter tags: - Certification Campaign Filters - summary: Create a Campaign Filter + summary: Create Campaign Filter description: >- - Create a campaign Filter based on filter details and criteria. + Use this API to create a campaign filter based on filter details and criteria. security: - UserContextAuth: [ idn:campaign-filter:create ] requestBody: @@ -36,10 +36,7 @@ get: - Certification Campaign Filters summary: List Campaign Filters description: >- - Lists all Campaign Filters. Scope can be reduced via standard V3 query params. - - - All Campaign Filters matching the query params + Use this API to list all campaign filters. You can reduce scope with standard V3 query parameters. security: - UserContextAuth: [ idn:campaign-filter-list:read ] @@ -61,8 +58,7 @@ get: - in: query name: includeSystemFilters description: >- - If true, include system filters in the count and results, exclude them otherwise. If not provided any value for it - then by default it is true. + If this is true, the API includes system filters in the count and results. Otherwise it excludes them. If no value is provided, the default is true. required: false example: true schema: @@ -70,7 +66,7 @@ get: default: true responses: '200': - description: List of campaign filter objects + description: List of campaign filter objects. content: application/json: schema: @@ -78,12 +74,12 @@ get: properties: items: type: array - description: The list of campaign filters + description: List of campaign filters. items: $ref: '../schemas/CampaignFilterDetails.yaml' count: type: integer - description: The number of filters returned + description: Number of filters returned. example: 2 example: { "items": [ diff --git a/static/api-specs/idn/v3/paths/campaign-reports-configuration.yaml b/static/api-specs/idn/v3/paths/campaign-reports-configuration.yaml index 2e9f46e33..e22688a8b 100644 --- a/static/api-specs/idn/v3/paths/campaign-reports-configuration.yaml +++ b/static/api-specs/idn/v3/paths/campaign-reports-configuration.yaml @@ -4,15 +4,15 @@ get: - Certification Campaigns summary: Get Campaign Reports Configuration description: >- - Fetches configuration for campaign reports. Currently it includes only one element - identity attributes defined as custom report columns. + Use this API to fetch the configuration for certification campaign reports. The configuration includes only one element - identity attributes defined as custom report columns. - Requires roles of CERT_ADMIN and ORG_ADMIN. + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [ idn:campaign-reports-config:read ] responses: '200': - description: Campaign Report Configuration + description: Campaign report configuration. content: application/json: schema: @@ -33,22 +33,22 @@ put: - Certification Campaigns summary: Set Campaign Reports Configuration description: >- - Overwrites configuration for campaign reports. + Use this API to overwrite the configuration for campaign reports. - Requires roles CERT_ADMIN and ORG_ADMIN. + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [ idn:campaign-reports-config:write ] requestBody: required: true - description: Campaign Report Configuration + description: Campaign report configuration. content: application/json: schema: $ref: '../schemas/CampaignReportsConfig.yaml' responses: '200': - description: The persisted Campaign Report Configuration + description: The persisted campaign report configuration. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/campaign-reports.yaml b/static/api-specs/idn/v3/paths/campaign-reports.yaml index 0e84e2a47..7169d2d0b 100644 --- a/static/api-specs/idn/v3/paths/campaign-reports.yaml +++ b/static/api-specs/idn/v3/paths/campaign-reports.yaml @@ -4,9 +4,9 @@ get: - Certification Campaigns summary: Get Campaign Reports description: >- - Fetches all reports for a certification campaign by campaign ID. + Use this API to fetch all reports for a certification campaign by campaign ID. - Requires roles of CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN + Calling this endpoint requires roles of CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN. security: - UserContextAuth: [idn:campaign-report:read] parameters: @@ -16,7 +16,7 @@ get: type: string example: 2c91808571bcfcf80171c23e4b4221fc required: true - description: The ID of the campaign for which reports are being fetched. + description: ID of the campaign whose reports are being fetched. responses: '200': description: Array of campaign report objects. diff --git a/static/api-specs/idn/v3/paths/campaign-run-remediation-scan.yaml b/static/api-specs/idn/v3/paths/campaign-run-remediation-scan.yaml index 5022e14fe..ef130d4aa 100644 --- a/static/api-specs/idn/v3/paths/campaign-run-remediation-scan.yaml +++ b/static/api-specs/idn/v3/paths/campaign-run-remediation-scan.yaml @@ -4,9 +4,9 @@ post: - Certification Campaigns summary: Run Campaign Remediation Scan description: >- - Kicks off remediation scan task for a certification campaign. + Use this API to run a remediation scan task for a certification campaign. - Requires roles of CERT_ADMIN and ORG_ADMIN + Calling this endpoint requires roles of CERT_ADMIN and ORG_ADMIN. security: - UserContextAuth: [idn:campaign-report:run] parameters: @@ -16,7 +16,7 @@ post: type: string example: 2c91808571bcfcf80171c23e4b4221fc required: true - description: The ID of the campaign for which remediation scan is being run. + description: ID of the campaign the remediation scan is being run for. responses: '202': $ref: '../responses/202.yaml' diff --git a/static/api-specs/idn/v3/paths/campaign-run-report.yaml b/static/api-specs/idn/v3/paths/campaign-run-report.yaml index 58a1eea1f..c8f5377fc 100644 --- a/static/api-specs/idn/v3/paths/campaign-run-report.yaml +++ b/static/api-specs/idn/v3/paths/campaign-run-report.yaml @@ -4,9 +4,9 @@ post: - Certification Campaigns summary: Run Campaign Report description: >- - Runs a report for a certification campaign. + Use this API to run a report for a certification campaign. - Requires the following roles: CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN. + Calling this endpoint requires the following roles: CERT_ADMIN, DASHBOARD, ORG_ADMIN and REPORT_ADMIN. security: - UserContextAuth: [idn:campaign-report:run] parameters: @@ -16,13 +16,13 @@ post: type: string example: 2c91808571bcfcf80171c23e4b4221fc required: true - description: The ID of the campaign for which report is being run. + description: ID of the campaign the report is being run for. - in: path name: type schema: $ref: '../schemas/ReportType.yaml' required: true - description: The type of the report to run. + description: Type of the report to run. responses: '202': $ref: '../responses/202.yaml' diff --git a/static/api-specs/idn/v3/paths/campaign-template-generate.yaml b/static/api-specs/idn/v3/paths/campaign-template-generate.yaml index 4e0b57852..7b6c66fca 100644 --- a/static/api-specs/idn/v3/paths/campaign-template-generate.yaml +++ b/static/api-specs/idn/v3/paths/campaign-template-generate.yaml @@ -6,31 +6,31 @@ post: security: - UserContextAuth: [idn:campaign-template:run] description: >- - Generates a new campaign from a campaign template. + Use this API to generate a new certification campaign from a campaign template. The campaign object contained in the template has special formatting applied to its name and description - fields in order to determine the generated campaign's name/description. Placeholders in those fields are + fields that determine the generated campaign's name/description. Placeholders in those fields are formatted with the current date and time upon generation. - Placeholders consist of a percent sign followed by a letter indicating what should be inserted; for - example, "%Y" will insert the current year; a campaign template named "Campaign for %y" would generate a + Placeholders consist of a percent sign followed by a letter indicating what should be inserted. For + example, "%Y" inserts the current year, and a campaign template named "Campaign for %y" generates a campaign called "Campaign for 2020" (assuming the year at generation time is 2020). Valid placeholders are the date/time conversion suffix characters supported by [java.util.Formatter](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html). - Requires roles ORG_ADMIN. + Calling this endpoint requires the ORG_ADMIN role. parameters: - in: path name: id schema: type: string required: true - description: The ID of the campaign template to use for generation. + description: ID of the campaign template to use for generation. example: 2c9180835d191a86015d28455b4a2329 responses: '200': description: >- - Indicates a campaign was successfully generated from this template, and returns a reference to the + This response indicates that a campaign was successfully generated from this template, and the API returns a reference to the new campaign. content: application/json: diff --git a/static/api-specs/idn/v3/paths/campaign-template-schedule.yaml b/static/api-specs/idn/v3/paths/campaign-template-schedule.yaml index ca5ac6b1c..72b72325b 100644 --- a/static/api-specs/idn/v3/paths/campaign-template-schedule.yaml +++ b/static/api-specs/idn/v3/paths/campaign-template-schedule.yaml @@ -2,9 +2,9 @@ get: operationId: getCampaignTemplateSchedule tags: - Certification Campaigns - summary: Gets a Campaign Template's Schedule + summary: Get Campaign Template Schedule description: >- - Gets the schedule for a campaign template. Returns a 404 if there is no schedule set. + Use this API to get the schedule for a certification campaign template. The API returns a 404 if there is no schedule set. security: - UserContextAuth: [ idn:campaign-template:read ] parameters: @@ -13,12 +13,12 @@ get: schema: type: string required: true - description: The ID of the campaign template whose schedule is being fetched. + description: ID of the campaign template whose schedule is being fetched. example: "04bedce387bd47b2ae1f86eb0bb36dee" responses: '200': description: >- - The current schedule for the campaign template. See the PUT endpoint documentation for + Current schedule for the campaign template. See the [Set Campaign Template Schedule endpoint documentation](https://developer.sailpoint.com/docs/api/v3/set-campaign-template-schedule) for more examples. content: application/json: @@ -40,10 +40,9 @@ put: operationId: setCampaignTemplateSchedule tags: - Certification Campaigns - summary: Sets a Campaign Template's Schedule + summary: Set Campaign Template Schedule description: >- - Sets the schedule for a campaign template. If a schedule already exists, it will be overwritten with - the new one. + Use this API to set the schedule for a certification campaign template. If a schedule already exists, the API overwrites it with the new one. security: - UserContextAuth: [ idn:campaign-template:run ] parameters: @@ -52,7 +51,7 @@ put: schema: type: string required: true - description: The ID of the campaign template being scheduled. + description: ID of the campaign template being scheduled. example: "04bedce387bd47b2ae1f86eb0bb36dee" requestBody: content: @@ -145,9 +144,9 @@ delete: operationId: deleteCampaignTemplateSchedule tags: - Certification Campaigns - summary: Deletes a Campaign Template's Schedule + summary: Delete Campaign Template Schedule description: >- - Deletes the schedule for a campaign template. Returns a 404 if there is no schedule set. + Use this API to delete the schedule for a certification campaign template. The API returns a 404 if there is no schedule set. security: - UserContextAuth: [ idn:campaign-template:run ] parameters: @@ -156,7 +155,7 @@ delete: schema: type: string required: true - description: The ID of the campaign template whose schedule is being deleted. + description: ID of the campaign template whose schedule is being deleted. example: "04bedce387bd47b2ae1f86eb0bb36dee" responses: '204': diff --git a/static/api-specs/idn/v3/paths/campaign-template.yaml b/static/api-specs/idn/v3/paths/campaign-template.yaml index fd6b28b4a..b4b313469 100644 --- a/static/api-specs/idn/v3/paths/campaign-template.yaml +++ b/static/api-specs/idn/v3/paths/campaign-template.yaml @@ -3,7 +3,7 @@ patch: tags: - Certification Campaigns summary: Update a Campaign Template - description: Allows updating individual fields on a campaign template using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + description: Use this API to update individual fields on a certification campaign template, using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. security: - UserContextAuth: [ idn:campaign-template:update ] parameters: @@ -12,7 +12,7 @@ patch: schema: type: string required: true - description: The ID of the campaign template being modified. + description: ID of the campaign template being modified. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true @@ -40,7 +40,7 @@ patch: responses: '200': description: >- - Indicates the PATCH operation succeeded, and returns the template's new representation. + This response indicates that the PATCH operation succeeded, and the API returns the template's new representation. content: application/json: schema: @@ -71,7 +71,7 @@ get: tags: - Certification Campaigns summary: Get a Campaign Template - description: Fetches a campaign template by ID. + description: Use this API to fetch a certification campaign template by ID. security: - UserContextAuth: [ idn:campaign-template:read ] parameters: @@ -80,11 +80,11 @@ get: schema: type: string required: true - description: The desired campaign template's ID. + description: Requested campaign template's ID. example: 2c9180835d191a86015d28455b4a2329 responses: '200': - description: The data for the campaign matching the given ID. + description: Data for the campaign matching the given ID. content: application/json: schema: @@ -115,7 +115,7 @@ delete: tags: - Certification Campaigns summary: Delete a Campaign Template - description: Deletes a campaign template by ID. + description: Use this API to delete a certification campaign template by ID. security: - UserContextAuth: [ idn:campaign-template:delete ] parameters: @@ -124,7 +124,7 @@ delete: schema: type: string required: true - description: The ID of the campaign template being deleted. + description: ID of the campaign template being deleted. example: 2c9180835d191a86015d28455b4a2329 responses: '204': diff --git a/static/api-specs/idn/v3/paths/campaign-templates.yaml b/static/api-specs/idn/v3/paths/campaign-templates.yaml index babefaa83..ffd23a896 100644 --- a/static/api-specs/idn/v3/paths/campaign-templates.yaml +++ b/static/api-specs/idn/v3/paths/campaign-templates.yaml @@ -4,7 +4,7 @@ post: - Certification Campaigns summary: Create a Campaign Template description: >- - Create a campaign Template based on campaign. + Use this API to create a certification campaign template based on campaign. security: - UserContextAuth: [ idn:campaign-template:create ] requestBody: @@ -49,15 +49,14 @@ post: '500': $ref: '../responses/500.yaml' get: - operationId: listCampaignTemplates + operationId: getCampaignTemplates tags: - Certification Campaigns summary: List Campaign Templates description: >- - Lists all CampaignTemplates. Scope can be reduced via standard V3 query params. - - - All CampaignTemplates matching the query params + Use this API to get a list of all campaign templates. Scope can be reduced through standard V3 query params. + + The API returns all campaign templates matching the query parameters. security: - UserContextAuth: [ idn:campaign-template-list:read ] @@ -95,7 +94,7 @@ get: example: name eq "manager template" responses: '200': - description: List of campaign template objects + description: List of campaign template objects. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/campaign.yaml b/static/api-specs/idn/v3/paths/campaign.yaml index 9b78ec442..ca8520a0d 100644 --- a/static/api-specs/idn/v3/paths/campaign.yaml +++ b/static/api-specs/idn/v3/paths/campaign.yaml @@ -2,27 +2,40 @@ get: operationId: getCampaign tags: - Certification Campaigns - summary: Get a campaign + summary: Get Campaign description: >- - Retrieves information for an existing campaign using the campaign's ID. Authorized callers must be a - reviewer for this campaign, an ORG_ADMIN, or a CERT_ADMIN. + Use this API to get information for an existing certification campaign by the campaign's ID. + Authorized callers must be reviewers for this campaign, ORG_ADMINs, or a CERT_ADMINs. security: - - UserContextAuth: [] + - UserContextAuth: [idn:campaign:read, idn:campaign:manage] parameters: - in: path name: id schema: type: string required: true - description: The ID of the campaign to be retrieved + description: ID of the campaign to be retrieved. example: 2c91808571bcfcf80171c23e4b4221fc + - in: query + name: detail + schema: + type: string + enum: [SLIM, FULL] + required: false + description: >- + Determines whether slim, or increased level of detail is provided for each campaign in the returned list. + Slim is the default behavior. + example: FULL responses: '200': - description: A campaign object + description: Requested campaign object. content: application/json: schema: - $ref: '../schemas/SlimCampaign.yaml' + oneOf: + - $ref: '../schemas/SlimCampaign.yaml' + - $ref: '../schemas/Campaign.yaml' + # $ref: '../schemas/SlimCampaign.yaml' examples: Manager: $ref: '../schemas/campaign/examples/SlimCampaignManager.yaml' @@ -49,7 +62,7 @@ patch: tags: - Certification Campaigns summary: Update a Campaign - description: Allows updating individual fields on a campaign using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + description: Use this API to update individual fields on a certification campaign, using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. security: - UserContextAuth: [idn:campaign:update,idn:campaign:read] parameters: @@ -58,7 +71,7 @@ patch: schema: type: string required: true - description: The ID of the campaign template being modified. + description: ID of the campaign template being modified. example: 2c91808571bcfcf80171c23e4b4221fc requestBody: required: true @@ -66,7 +79,7 @@ patch: A list of campaign update operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. The fields that can be patched differ based on the status of the campaign. - In the *STAGED* status, the following fields can be patched: + When the campaign is in the *STAGED* status, you can patch these fields: * name * description * recommendationsEnabled @@ -74,7 +87,7 @@ patch: * emailNotificationEnabled * autoRevokeAllowed - In the *ACTIVE* status, the following fields can be patched: + When the campaign is in the *ACTIVE* status, you can patch these fields: * deadline content: application/json-patch+json: @@ -92,7 +105,7 @@ patch: responses: '200': description: >- - Indicates the PATCH operation succeeded, and returns the campaign's new representation. + This response indicates that the PATCH operation succeeded, and the API returns the campaign's new representation. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/campaigns-delete.yaml b/static/api-specs/idn/v3/paths/campaigns-delete.yaml index e5e0f8d27..840c4292d 100644 --- a/static/api-specs/idn/v3/paths/campaigns-delete.yaml +++ b/static/api-specs/idn/v3/paths/campaigns-delete.yaml @@ -2,14 +2,14 @@ post: operationId: deleteCampaigns tags: - Certification Campaigns - summary: Deletes Campaigns + summary: Delete Campaigns description: >- - Deletes campaigns whose Ids are specified in the provided list of campaign Ids. - Authorized callers must be an ORG_ADMIN or a CERT_ADMIN. + Use this API to delete certification campaigns whose IDs are specified in the provided list of campaign IDs. + Authorized callers must be ORG_ADMINs or CERT_ADMINs. security: - UserContextAuth: [idn:campaign:delete] requestBody: - description: The ids of the campaigns to delete. + description: IDs of the campaigns to delete. required: true content: application/json: diff --git a/static/api-specs/idn/v3/paths/campaigns.yaml b/static/api-specs/idn/v3/paths/campaigns.yaml index 5f7c62deb..4cf8be73d 100644 --- a/static/api-specs/idn/v3/paths/campaigns.yaml +++ b/static/api-specs/idn/v3/paths/campaigns.yaml @@ -4,10 +4,9 @@ get: - Certification Campaigns summary: List Campaigns description: >- - Gets campaigns and returns them in a list. Can provide increased level of detail for each campaign if provided - the correct query. + Use this API to get a list of campaigns. This API can provide increased level of detail for each campaign for the correct provided query. security: - - UserContextAuth: [idn:campaign-list:read] + - UserContextAuth: [idn:campaign:read, idn:campaign:manage] parameters: - in: query name: detail @@ -65,7 +64,6 @@ get: oneOf: - $ref: '../schemas/SlimCampaign.yaml' - $ref: '../schemas/Campaign.yaml' - examples: Slim Campaign: $ref: '../schemas/campaign/examples/SlimCampaigns.yaml' @@ -86,7 +84,7 @@ post: tags: - Certification Campaigns summary: Create a campaign - description: Creates a new Certification Campaign with the information provided in the request body. + description: Use this API to create a certification campaign with the information provided in the request body. security: - UserContextAuth: [idn:campaign:create] requestBody: @@ -106,7 +104,7 @@ post: $ref: '../schemas/campaign/examples/CreateCampaignRoleComposition.yaml' responses: '200': - description: Indicates that the campaign requested was successfully created and returns its representation. + description: This response indicates that the requested campaign was successfully created, and the API returns its representation. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/connector.yaml b/static/api-specs/idn/v3/paths/connector.yaml new file mode 100644 index 000000000..f9206871c --- /dev/null +++ b/static/api-specs/idn/v3/paths/connector.yaml @@ -0,0 +1,142 @@ +get: + tags: + - Connectors + operationId: getConnector + summary: Gets connector by script name + description: >- + Fetches a connector that using its script name. + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - name: scriptName + in: path + description: The scriptName value of the connector. Scriptname is the unique id generated at connector creation. + required: true + style: simple + explode: false + schema: + type: string + example: aScriptName + - in: query + name: locale + schema: + type: string + enum: [ de, no, fi, sv, ru, pt, ko, zh-TW, en, it, fr, zh-CN, hu, es, cs, ja, pl, da, nl ] + example: de + description: >- + The locale to apply to the config. If no viable locale is given, it will default to "en" + responses: + '200': + description: A Connector Dto object + content: + application/json: + schema: + $ref: '../schemas/ConnectorDetail.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [ idn:connector-config:read ] +delete: + tags: + - Connectors + operationId: deleteCustomConnector + summary: Deletes connector by script name + description: >- + Delete a custom connector that using its script name. + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - name: scriptName + in: path + description: The scriptName value of the connector. Scriptname is the unique id generated at connector creation. + required: true + style: simple + explode: false + schema: + type: string + example: aScriptName + responses: + '204': + $ref: '../../v3/responses/204.yaml' + description: The custom connector was successfully deleted. + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [ idn:connector-config:delete ] +patch: + tags: + - Connectors + operationId: updateConnector + summary: Update connector by script name + description: >- + Patch a custom connector that using its script name. + + A token with ORG_ADMIN authority is required to call this API. + The following fields are patchable: + * connectorMetadata + * applicationXml + * correlationConfigXml + * sourceConfigXml + parameters: + - name: scriptName + in: path + description: The scriptName value of the connector. Scriptname is the unique id generated at connector creation. + required: true + style: simple + explode: false + schema: + type: string + example: aScriptName + requestBody: + required: true + description: >- + A list of connector detail update operations according to + the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + content: + application/json-patch+json: + schema: + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" + responses: + '200': + description: A updated Connector Dto object + content: + application/json: + schema: + $ref: '../schemas/ConnectorDetail.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + security: + - UserContextAuth: [ idn:connector-config:update ] + diff --git a/static/api-specs/idn/v3/paths/connectors-create-custom-connector.yaml b/static/api-specs/idn/v3/paths/connectors-create-custom-connector.yaml deleted file mode 100644 index f9e143b58..000000000 --- a/static/api-specs/idn/v3/paths/connectors-create-custom-connector.yaml +++ /dev/null @@ -1,37 +0,0 @@ -post: - tags: - - Connectors - operationId: createCustomConnector - summary: Create custom connector - description: >- - Create custom connector. - - A token with ORG_ADMIN authority is required to call this API. - requestBody: - required: true - content: - application/json: - schema: - $ref: '../schemas/V3CreateConnectorDto.yaml' - responses: - '200': - description: A Connector Dto object - content: - application/json: - schema: - $ref: '../schemas/V3ConnectorDto.yaml' - '400': - $ref: '../../v3/responses/400.yaml' - '401': - $ref: '../../v3/responses/401.yaml' - '403': - $ref: '../../v3/responses/403.yaml' - '404': - $ref: '../../v3/responses/404.yaml' - '429': - $ref: '../../v3/responses/429.yaml' - '500': - $ref: '../../v3/responses/500.yaml' - security: - - UserContextAuth: [ idn:connector-config:create ] - diff --git a/static/api-specs/idn/v3/paths/connectors-list.yaml b/static/api-specs/idn/v3/paths/connectors-list.yaml deleted file mode 100644 index 5da16b176..000000000 --- a/static/api-specs/idn/v3/paths/connectors-list.yaml +++ /dev/null @@ -1,73 +0,0 @@ -get: - tags: - - Connectors - operationId: getConnectorList - summary: Gets connector list - description: >- - Fetches list of connectors that have 'RELEASED' status using filtering and pagination. - - A token with ORG_ADMIN authority is required to call this API. - parameters: - - in: query - name: filters - schema: - type: string - description: >- - Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) - - - Filtering is supported for the following fields and operators: - - - **name**: *sw, co* - - - **type**: *sw, co, eq* - - - **directConnect**: *eq* - - - **category**: *eq* - - - **features**: *ca* - - - **labels**: *ca* - - example: directConnect eq "true" - - $ref: '../../v3/parameters/limit.yaml' - - $ref: '../../v3/parameters/offset.yaml' - - $ref: '../../v3/parameters/count.yaml' - - in: query - name: locale - schema: - type: string - enum: [de, no, fi, sv, ru, pt, ko, zh-TW, en, it, fr, zh-CN, hu, es, cs, ja, pl, da, nl] - example: de - description: >- - The locale to apply to the config. If no viable locale is given, it will default to "en" - responses: - '200': - description: A Connector Dto object - content: - application/json: - schema: - type: array - items: - $ref: '../schemas/V3ConnectorDto.yaml' - '400': - $ref: '../../v3/responses/400.yaml' - '401': - $ref: '../../v3/responses/401.yaml' - '403': - $ref: '../../v3/responses/403.yaml' - '404': - $ref: '../../v3/responses/404.yaml' - '429': - $ref: '../../v3/responses/429.yaml' - '500': - $ref: '../../v3/responses/500.yaml' - security: - - UserContextAuth: [ idn:connector-source-config:read ] diff --git a/static/api-specs/idn/v3/paths/connectors.yaml b/static/api-specs/idn/v3/paths/connectors.yaml index d9cf61bb0..2c9eba063 100644 --- a/static/api-specs/idn/v3/paths/connectors.yaml +++ b/static/api-specs/idn/v3/paths/connectors.yaml @@ -1,26 +1,50 @@ get: tags: - Connectors - operationId: getConnector + operationId: getConnectorList + summary: Gets connector list description: >- - Fetches a connector that using its script name. - + Fetches list of connectors that have 'RELEASED' status using filtering and pagination. + A token with ORG_ADMIN authority is required to call this API. parameters: - - name: scriptName - in: path - description: The scriptName value of the connector. Scriptname is the unique id generated at connector creation. - required: true - style: simple - explode: false + - in: query + name: filters schema: type: string - example: aScriptName + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **name**: *sw, co* + + + **type**: *sw, co, eq* + + + **directConnect**: *eq* + + + **category**: *eq* + + + **features**: *ca* + + + **labels**: *ca* + + example: directConnect eq "true" + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/offset.yaml' + - $ref: '../../v3/parameters/count.yaml' - in: query name: locale schema: type: string - enum: [ de, no, fi, sv, ru, pt, ko, zh-TW, en, it, fr, zh-CN, hu, es, cs, ja, pl, da, nl ] + enum: [de, no, fi, sv, ru, pt, ko, zh-TW, en, it, fr, zh-CN, hu, es, cs, ja, pl, da, nl] example: de description: >- The locale to apply to the config. If no viable locale is given, it will default to "en" @@ -30,7 +54,9 @@ get: content: application/json: schema: - $ref: '../schemas/ConnectorDetail.yaml' + type: array + items: + $ref: '../schemas/V3ConnectorDto.yaml' '400': $ref: '../../v3/responses/400.yaml' '401': @@ -44,84 +70,29 @@ get: '500': $ref: '../../v3/responses/500.yaml' security: - - UserContextAuth: [ idn:connector-config:read ] -delete: + - UserContextAuth: [ idn:connector-source-config:read ] +post: tags: - Connectors - operationId: deleteCustomConnector + operationId: createCustomConnector + summary: Create custom connector description: >- - Delete a custom connector that using its script name. - + Create custom connector. + A token with ORG_ADMIN authority is required to call this API. - parameters: - - name: scriptName - in: path - description: The scriptName value of the connector. Scriptname is the unique id generated at connector creation. - required: true - style: simple - explode: false - schema: - type: string - example: aScriptName - responses: - '204': - $ref: '../../v3/responses/204.yaml' - description: The custom connector was successfully deleted. - '400': - $ref: '../../v3/responses/400.yaml' - '401': - $ref: '../../v3/responses/401.yaml' - '403': - $ref: '../../v3/responses/403.yaml' - '404': - $ref: '../../v3/responses/404.yaml' - '429': - $ref: '../../v3/responses/429.yaml' - '500': - $ref: '../../v3/responses/500.yaml' - security: - - UserContextAuth: [ idn:connector-config:delete ] -patch: - tags: - - Connectors - operationId: updateConnector - description: >- - Patch a custom connector that using its script name. - - A token with ORG_ADMIN authority is required to call this API. - The following fields are patchable: - * connectorMetadata - * applicationXml - * correlationConfigXml - * sourceConfigXml - parameters: - - name: scriptName - in: path - description: The scriptName value of the connector. Scriptname is the unique id generated at connector creation. - required: true - style: simple - explode: false - schema: - type: string - example: aScriptName requestBody: required: true - description: >- - A list of connector detail update operations according to - the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. content: - application/json-patch+json: + application/json: schema: - type: array - items: - $ref: "../schemas/JsonPatchOperation.yaml" + $ref: '../schemas/V3CreateConnectorDto.yaml' responses: '200': - description: A updated Connector Dto object + description: A Connector Dto object content: application/json: schema: - $ref: '../schemas/ConnectorDetail.yaml' + $ref: '../schemas/V3ConnectorDto.yaml' '400': $ref: '../../v3/responses/400.yaml' '401': @@ -135,5 +106,6 @@ patch: '500': $ref: '../../v3/responses/500.yaml' security: - - UserContextAuth: [ idn:connector-config:update ] + - UserContextAuth: [ idn:connector-config:create ] + diff --git a/static/api-specs/idn/v3/paths/discovered-applications.yaml b/static/api-specs/idn/v3/paths/discovered-applications.yaml new file mode 100644 index 000000000..5a3332f76 --- /dev/null +++ b/static/api-specs/idn/v3/paths/discovered-applications.yaml @@ -0,0 +1,61 @@ +get: + operationId: getDiscoveredApplications + tags: + - Application Discovery + summary: Retrieve discovered applications for tenant + description: > + Fetches a list of applications that have been identified within the environment. This includes details such as application names, discovery dates, potential correlated saas_vendors and related suggested connectors. + security: + - UserContextAuth: + - 'idn:application-discovery:read' + parameters: + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/offset.yaml' + - in: query + name: filter + schema: + type: string + description: > + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **name**: *eq, sw, co* + + + **description**: *eq, sw, co* + example: name eq "Okta" and description co "Okta" + required: false + style: form + - in: query + name: sorters + schema: + type: string + format: comma-separated + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **name, description, discoveredAt, discoverySource** + example: name + responses: + '200': + description: Successfully retrieved list of discovered applications. + content: + application/json: + schema: + type: array + items: + $ref: '../../beta/schemas/DiscoveredApplications.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/v3/paths/forward-access-request-approval.yaml b/static/api-specs/idn/v3/paths/forward-access-request-approval.yaml index 2b734367a..1d2dd630b 100644 --- a/static/api-specs/idn/v3/paths/forward-access-request-approval.yaml +++ b/static/api-specs/idn/v3/paths/forward-access-request-approval.yaml @@ -1,10 +1,10 @@ post: operationId: forwardAccessRequest - summary: Forwards an access request approval. + summary: Forward Access Request Approval tags: - Access Request Approvals description: >- - This endpoint forwards an access request approval to a new owner. + Use this API to forward an access request approval to a new owner. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. Only the owner of the approval and ORG_ADMIN users are allowed to perform this action. parameters: - in: path @@ -12,7 +12,7 @@ post: schema: type: string required: true - description: The id of the approval. + description: Approval ID. example: 2c91808b7294bea301729568c68c002e requestBody: description: Information about the forwarded approval. diff --git a/static/api-specs/idn/v3/paths/identity-certifications.yaml b/static/api-specs/idn/v3/paths/identity-certifications.yaml index 3883aef51..b2f05f528 100644 --- a/static/api-specs/idn/v3/paths/identity-certifications.yaml +++ b/static/api-specs/idn/v3/paths/identity-certifications.yaml @@ -2,11 +2,11 @@ get: operationId: listIdentityCertifications tags: - Certifications - summary: Identity Campaign Certifications by IDs + summary: List Identity Campaign Certifications description: >- - This API returns a list of identity campaign certifications that satisfy the given query parameters. Any + Use this API to get a list of identity campaign certifications for the specified query parameters. Any authenticated token can call this API, but only certifications you are authorized to review will be returned. This - API does not support requests for certifications assigned to Governance Groups. + API does not support requests for certifications assigned to governance groups. parameters: - in: query name: reviewer-identity @@ -14,7 +14,7 @@ get: type: string example: me description: >- - The ID of reviewer identity. *me* indicates the current user. + Reviewer's identity. *me* indicates the current user. required: false - $ref: '../parameters/limit.yaml' - $ref: '../parameters/offset.yaml' @@ -56,7 +56,7 @@ get: Sorting is supported for the following fields: **name, due, signed** responses: '200': - description: List of identity campaign certifications + description: List of identity campaign certifications. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/identity-profile-lifecycle-state.yaml b/static/api-specs/idn/v3/paths/identity-profile-lifecycle-state.yaml index 003f1be25..26dcb2fa3 100644 --- a/static/api-specs/idn/v3/paths/identity-profile-lifecycle-state.yaml +++ b/static/api-specs/idn/v3/paths/identity-profile-lifecycle-state.yaml @@ -2,9 +2,9 @@ get: operationId: getLifecycleState tags: - Lifecycle States - summary: Retrieves Lifecycle State + summary: Get Lifecycle State description: >- - This endpoint retrieves a Lifecycle State. + Use this endpoint to get a lifecycle state by its ID and its associated identity profile ID. A token with ORG_ADMIN or API authority is required to call this API. security: @@ -12,14 +12,14 @@ get: parameters: - in: path name: identity-profile-id - description: Identity Profile ID + description: Identity profile ID. required: true schema: type: string example: 2b838de9-db9b-abcf-e646-d4f274ad4238 - in: path name: lifecycle-state-id - description: Lifecycle State ID + description: Lifecycle state ID. required: true schema: type: string @@ -49,7 +49,7 @@ patch: - Lifecycle States summary: Update Lifecycle State description: >- - This endpoint updates individual Lifecycle State fields using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. + Use this endpoint to update individual lifecycle state fields, using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. A token with ORG_ADMIN or API authority is required to call this API. security: @@ -57,14 +57,14 @@ patch: parameters: - in: path name: identity-profile-id - description: Identity Profile ID + description: Identity profile ID. required: true schema: type: string example: 2b838de9-db9b-abcf-e646-d4f274ad4238 - in: path name: lifecycle-state-id - description: Lifecycle State ID + description: Lifecycle state ID. required: true schema: type: string @@ -135,9 +135,9 @@ delete: operationId: deleteLifecycleState tags: - Lifecycle States - summary: Delete Lifecycle State by ID + summary: Delete Lifecycle State description: >- - This endpoint deletes the Lifecycle State using its ID. + Use this endpoint to delete the lifecycle state by its ID. A token with API, or ORG_ADMIN authority is required to call this API. security: @@ -145,14 +145,14 @@ delete: parameters: - in: path name: identity-profile-id - description: Identity Profile ID + description: Identity profile ID. required: true schema: type: string example: 2b838de9-db9b-abcf-e646-d4f274ad4238 - in: path name: lifecycle-state-id - description: Lifecycle State ID + description: Lifecycle state ID. required: true schema: type: string diff --git a/static/api-specs/idn/v3/paths/identity-profile-lifecycle-states.yaml b/static/api-specs/idn/v3/paths/identity-profile-lifecycle-states.yaml index df26c3275..72678561e 100644 --- a/static/api-specs/idn/v3/paths/identity-profile-lifecycle-states.yaml +++ b/static/api-specs/idn/v3/paths/identity-profile-lifecycle-states.yaml @@ -1,10 +1,10 @@ get: - operationId: listLifecycleStates + operationId: getLifecycleStates tags: - Lifecycle States summary: Lists LifecycleStates description: >- - This end-point lists all the LifecycleStates associated with IdentityProfiles. + Use this endpoint to list all lifecycle states by their associated identity profiles. A token with API, or ORG_ADMIN authority is required to call this API. security: @@ -12,11 +12,11 @@ get: parameters: - in: path name: identity-profile-id - description: The IdentityProfile id + description: Identity profile ID. required: true schema: type: string - example: ef38f94347e94562b5bb8424a56397d8 + example: 2b838de9-db9b-abcf-e646-d4f274ad4238 - $ref: '../parameters/limit.yaml' - $ref: '../parameters/offset.yaml' - $ref: '../parameters/count.yaml' @@ -34,7 +34,7 @@ get: Sorting is supported for the following fields: **created, modified** responses: '200': - description: List of LifecycleState objects + description: List of LifecycleState objects. content: application/json: schema: @@ -57,7 +57,7 @@ post: - Lifecycle States summary: Create Lifecycle State description: >- - This API creates a new Lifecycle State. + Use this endpoint to create a lifecycle state. A token with ORG_ADMIN or API authority is required to call this API. security: @@ -65,13 +65,13 @@ post: parameters: - in: path name: identity-profile-id - description: Identity Profile ID + description: Identity profile ID. required: true schema: type: string - example: ef38f94347e94562b5bb8424a56397d8 + example: 2b838de9-db9b-abcf-e646-d4f274ad4238 requestBody: - description: Lifecycle State + description: Lifecycle state to be created. required: true content: application/json: diff --git a/static/api-specs/idn/v3/paths/identity-set-lifecycle-state.yaml b/static/api-specs/idn/v3/paths/identity-set-lifecycle-state.yaml index 7c9f9c20d..c65ad656d 100644 --- a/static/api-specs/idn/v3/paths/identity-set-lifecycle-state.yaml +++ b/static/api-specs/idn/v3/paths/identity-set-lifecycle-state.yaml @@ -4,16 +4,16 @@ post: - Lifecycle States summary: Set Lifecycle State description: >- - This endpoint will set/update an identity's lifecycle state to the one provided and updates the corresponding identity profile. + Use this API to set/update an identity's lifecycle state to the one provided and update the corresponding identity profile. - A token with ORG_ADMIN or API authority is required to call this API. + A token with ORG_ADMIN or API authority and the appropriate user context is required to call this API. security: - UserContextAuth: [idn:identity-lifecycle-state:update] parameters: - in: path name: identity-id description: >- - The ID of the identity to update. + ID of the identity to update. required: true example: 2c9180857893f1290178944561990364 schema: @@ -27,7 +27,7 @@ post: properties: lifecycleStateId: type: string - description: The ID of the lifecycle state to set. + description: ID of the lifecycle state to set. example: 2c9180877a86e408017a8c19fefe046c responses: '200': @@ -40,7 +40,7 @@ post: accountActivityId: type: string example: 2c9180837ab5b716017ab7c6c9ef1e20 - description: The ID of the IdentityRequest object that is generated when the workflow launches. To follow the IdentityRequest, you can provide this ID with a [Get Account Activity request](https://developer.sailpoint.com/docs/api/v3/get-account-activity/). The response will contain relevant information about the IdentityRequest, such as its status. + description: ID of the IdentityRequest object that is generated when the workflow launches. To follow the IdentityRequest, you can provide this ID with a [Get Account Activity request](https://developer.sailpoint.com/docs/api/v3/get-account-activity/). The response will contain relevant information about the IdentityRequest, such as its status. '400': $ref: '../responses/400.yaml' '401': diff --git a/static/api-specs/idn/v3/paths/managed-client.yaml b/static/api-specs/idn/v3/paths/managed-client.yaml index d3a8b7011..f12212e17 100644 --- a/static/api-specs/idn/v3/paths/managed-client.yaml +++ b/static/api-specs/idn/v3/paths/managed-client.yaml @@ -8,11 +8,11 @@ get: parameters: - name: id in: path - description: The Managed Client ID + description: Managed Client ID. required: true + example: 4440278c-0ce2-41ee-a0a9-f5cfd5e8d3b7 schema: type: string - example: aClientId responses: "200": description: Responds with a Managed Client @@ -47,15 +47,17 @@ patch: schema: type: string required: true - description: The Managed Client ID - example: aClientId + description: Managed Client ID. + example: 4440278c-0ce2-41ee-a0a9-f5cfd5e8d3b7 requestBody: required: true - description: The JSONPatch payload used to update the schema. + description: The JSONPatch payload used to update the object. content: application/json-patch+json: schema: - $ref: '../schemas/JsonPatch.yaml' + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" responses: "200": description: The updated Managed Client @@ -90,8 +92,8 @@ delete: schema: type: string required: true - description: The Managed Client ID - example: aClientId + description: Managed Client ID. + example: 4440278c-0ce2-41ee-a0a9-f5cfd5e8d3b7 responses: '204': $ref: '../../v3/responses/204.yaml' diff --git a/static/api-specs/idn/v3/paths/managed-cluster.yaml b/static/api-specs/idn/v3/paths/managed-cluster.yaml index 973b37627..e2e92be84 100644 --- a/static/api-specs/idn/v3/paths/managed-cluster.yaml +++ b/static/api-specs/idn/v3/paths/managed-cluster.yaml @@ -7,13 +7,13 @@ get: parameters: - name: id in: path - description: ID of the ManagedCluster to get + description: ManagedCluster ID. required: true + example: 2c9180897de347a2017de8859e8c5039 style: simple explode: false schema: type: string - example: aClusterId responses: "200": description: Responds with ManagedCluster having the given ID. @@ -48,15 +48,17 @@ patch: schema: type: string required: true - description: The Managed Cluster ID - example: aClusterId + description: Managed Cluster ID. + example: 2c9180897de347a2017de8859e8c5039 requestBody: required: true - description: The JSONPatch payload used to update the schema. + description: The JSONPatch payload used to update the object. content: application/json-patch+json: schema: - $ref: '../schemas/JsonPatch.yaml' + type: array + items: + $ref: "../schemas/JsonPatchOperation.yaml" responses: "200": description: The updated Managed Cluster @@ -91,8 +93,8 @@ delete: schema: type: string required: true - description: The Managed Cluster ID - example: aClusterId + description: Managed Cluster ID. + example: 2c9180897de347a2017de8859e8c5039 - in: query name: removeClients schema: diff --git a/static/api-specs/idn/v3/paths/manual-discover-applications-template.yaml b/static/api-specs/idn/v3/paths/manual-discover-applications-template.yaml new file mode 100644 index 000000000..c8cdab5c5 --- /dev/null +++ b/static/api-specs/idn/v3/paths/manual-discover-applications-template.yaml @@ -0,0 +1,34 @@ +get: + summary: CSV template download for discovery + tags: + - Application Discovery + description: > + This endpoint allows the user to download an example CSV file with two columns `application_name` and `description`. + The CSV file contains a single row with the values 'Example Application' and 'Example Description'. + + + The downloaded template is specifically designed for use with the `/manual-discover-applications` endpoint. + security: + - UserContextAuth: + - 'idn:application-discovery:read' + operationId: getManualDiscoverApplicationsCsvTemplate + responses: + '200': + description: A CSV file download was successful. + content: + text/csv: + schema: + $ref: '../../v3/schemas/ManualDiscoverApplicationsTemplate.yaml' + example: | + application_name,description + Example Application,Example Description + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/v3/paths/manual-discover-applications.yaml b/static/api-specs/idn/v3/paths/manual-discover-applications.yaml new file mode 100644 index 000000000..d40a6a670 --- /dev/null +++ b/static/api-specs/idn/v3/paths/manual-discover-applications.yaml @@ -0,0 +1,34 @@ +post: + summary: CSV Upload to discover applications + tags: + - Application Discovery + description: >- + This endpoint supports uploading a CSV file with application data for manual correlation to specific IDN connectors. + + If a suitable IDN connector is unavailable, the system will recommend generic connectors instead. + security: + - UserContextAuth: + - 'idn:application-discovery:write' + operationId: sendManualDiscoverApplicationsCsvTemplate + requestBody: + content: + multipart/form-data: + schema: + $ref: '../schemas/ManualDiscoverApplications.yaml' + responses: + '200': + description: The CSV has been successfully processed. + '400': + $ref: '../../v3/responses/400.yaml' + description: > + Bad request - There was an error with the CSV format or validation + failed (e.g., `application_name` missing). Error message should be + provided in response. + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/v3/paths/reject-access-request-approval.yaml b/static/api-specs/idn/v3/paths/reject-access-request-approval.yaml index 58381df07..aa6f585b1 100644 --- a/static/api-specs/idn/v3/paths/reject-access-request-approval.yaml +++ b/static/api-specs/idn/v3/paths/reject-access-request-approval.yaml @@ -1,21 +1,21 @@ post: operationId: rejectAccessRequest - summary: Rejects an access request approval. + summary: Reject Access Request Approval tags: - Access Request Approvals description: >- - This endpoint rejects an access request approval. Only the owner of the approval and admin users are allowed to perform this action. + Use this API to reject an access request approval. Only the owner of the approval and admin users are allowed to perform this action. parameters: - in: path name: approvalId schema: type: string required: true - description: The id of the approval. + description: Approval ID. example: 2c91808b7294bea301729568c68c002e requestBody: description: Reviewer's comment. - required: false + required: true content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/role.yaml b/static/api-specs/idn/v3/paths/role.yaml index d0cce05d4..75013e516 100644 --- a/static/api-specs/idn/v3/paths/role.yaml +++ b/static/api-specs/idn/v3/paths/role.yaml @@ -46,25 +46,40 @@ patch: description: >- This API updates an existing role using [JSON Patch](https://tools.ietf.org/html/rfc6902) syntax. + The following fields are patchable: + + * name + * description + * enabled + * owner + * accessProfiles + * membership + * requestable + * accessRequestConfig + * revokeRequestConfig + * segments + A token with API, ORG_ADMIN, ROLE_ADMIN, or ROLE_SUBADMIN authority is required to call this API. In addition, a token with ROLE_SUBADMIN authority may only call this API if all access profiles included in the role are associated to Sources with management workgroups of which the ROLE_SUBADMIN is a member. + The maximum supported length for the description field is 2000 characters. Longer descriptions will be preserved for existing roles, however, any new roles as well as any updates to existing descriptions will be limited to 2000 characters. + When you use this API to modify a role's membership identities, you can only modify up to a limit of 500 membership identities at a time. parameters: - name: id @@ -210,6 +225,7 @@ delete: description: >- This API deletes a Role by its ID. + A token with API, ORG_ADMIN, ROLE_ADMIN, or ROLE_SUBADMIN authority is required to call this API. In addition, a token with ROLE_SUBADMIN authority may only call this API if all Access Profiles included in the Role are associated to Sources with management workgroups of which the ROLE_SUBADMIN is a member. diff --git a/static/api-specs/idn/v3/paths/roles.yaml b/static/api-specs/idn/v3/paths/roles.yaml index 6224950fd..c787658bd 100644 --- a/static/api-specs/idn/v3/paths/roles.yaml +++ b/static/api-specs/idn/v3/paths/roles.yaml @@ -77,7 +77,6 @@ get: If segmentation is currently unavailable, specifying this parameter results in an error. - example: 0b5c9f25-83c6-4762-9073-e38f7bb2ae26,2e8d8180-24bc-4d21-91c6-7affdb473b0d required: false - in: query @@ -119,12 +118,15 @@ post: description: >- This API creates a role. + You must have a token with API, ORG_ADMIN, ROLE_ADMIN, or ROLE_SUBADMIN authority to call this API. + In addition, a ROLE_SUBADMIN may not create a role including an access profile if that access profile is associated with a source the ROLE_SUBADMIN is not associated with themselves. + The maximum supported length for the description field is 2000 characters. Longer descriptions will be preserved for existing roles. However, any new roles as well as any updates to existing descriptions will be limited to 2000 characters. requestBody: diff --git a/static/api-specs/idn/v3/paths/schemas.yaml b/static/api-specs/idn/v3/paths/schemas.yaml index eb13daeb0..7fbba34a0 100644 --- a/static/api-specs/idn/v3/paths/schemas.yaml +++ b/static/api-specs/idn/v3/paths/schemas.yaml @@ -1,31 +1,33 @@ get: - operationId: listSourceSchemas + operationId: getSourceSchemas tags: - Sources - summary: List Schemas on a Source + summary: List Schemas on Source description: | - Lists the Schemas that exist on the specified Source in IdentityNow. + Use this API to list the schemas that exist on the specified source in Identity Security Cloud (ISC). parameters: - in: path name: sourceId required: true schema: type: string - description: The Source ID. + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 - in: query name: include-types required: false schema: type: string + enum: + - group + - user description: >- - If set to 'group', then the account schema is filtered and only group schemas are returned. Only a - value of 'group' is recognized. + If this is set to `group`, the API filters the account schema and only returns only group schemas. If this is set to `user`, the API returns the account schema for the source. example: group responses: '200': - description: The Schemas were successfully retrieved. + description: The schemas were successfully retrieved. content: application/json: schema: @@ -48,16 +50,16 @@ post: operationId: createSourceSchema tags: - Sources - summary: Create Schema on a Source + summary: Create Schema on Source description: | - Creates a new Schema on the specified Source in IdentityNow. + Use this API to create a new schema on the specified source in Identity Security Cloud (ISC). parameters: - in: path name: sourceId required: true schema: type: string - description: The Source id. + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true @@ -67,7 +69,7 @@ post: $ref: '../schemas/Schema.yaml' responses: '201': - description: The Schema was successfully created on the specified Source. + description: The schema was successfully created on the specified source. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/searchAttributeConfig-get-patch-delete.yaml b/static/api-specs/idn/v3/paths/searchAttributeConfig-get-patch-delete.yaml new file mode 100644 index 000000000..f96bc40b6 --- /dev/null +++ b/static/api-specs/idn/v3/paths/searchAttributeConfig-get-patch-delete.yaml @@ -0,0 +1,136 @@ +get: + operationId: getSingleSearchAttributeConfig + security: + - UserContextAuth: [ idn:account-config:read ] + tags: + - Search Attribute Configuration + summary: Get specific attribute in IdentityNow. + description: >- + This API accepts an extended search attribute name and retrieves the corresponding extended attribute configuration. + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - name: name + in: path + description: Name of the extended search attribute configuration to retrieve. + required: true + schema: + type: string + example: "newMailAttribute" + responses: + '200': + description: Specific attribute configuration in IdentityNow. + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/SearchAttributeConfig.yaml' + '204': + $ref: '../../v3/responses/204.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + +delete: + operationId: deleteSearchAttributeConfig + security: + - UserContextAuth: [ idn:account-config:delete ] + tags: + - Search Attribute Configuration + summary: Delete search attribute in IdentityNow. + description: >- + This API accepts an extended search attribute name and deletes the corresponding extended attribute configuration. + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - name: name + in: path + description: Name of the extended search attribute configuration to delete. + required: true + schema: + type: string + example: "newMailAttribute" + responses: + '204': + $ref: '../../v3/responses/204.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + +patch: + operationId: patchSearchAttributeConfig + security: + - UserContextAuth: [ idn:account-config:create ] + tags: + - Search Attribute Configuration + summary: Update search attribute in IdentityNow. + description: >- + This API updates an existing Search Attribute Configuration. The following fields are patchable: + + **name**, **displayName**, **applicationAttributes** + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - name: name + in: path + description: Name of the Search Attribute Configuration to patch. + required: true + schema: + type: string + example: promotedMailAttribute + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: '../schemas/JsonPatchOperation.yaml' + example: + - op: "replace" + path: "/name" + value: "newAttributeName" + - op: "replace" + path: "/displayName" + value: "new attribute display name" + - op: "add" + path: "/applicationAttributes" + value: { "2c91808b79fd2422017a0b35d30f3968": "employeeNumber" } + required: true + responses: + '200': + description: Responds with the Search Attribute Configuration as updated. + content: + application/json: + schema: + $ref: '../schemas/SearchAttributeConfig.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/paths/searchAttributeConfig.yaml b/static/api-specs/idn/v3/paths/searchAttributeConfig.yaml new file mode 100644 index 000000000..15a5c61a8 --- /dev/null +++ b/static/api-specs/idn/v3/paths/searchAttributeConfig.yaml @@ -0,0 +1,72 @@ +post: + operationId: createSearchAttributeConfig + security: + - UserContextAuth: [ idn:account-config:create ] + tags: + - Search Attribute Configuration + summary: Configure/create search attributes in IdentityNow. + description: >- + This API accepts an attribute name, an attribute display name and a list of name/value pair associates of application IDs + to attribute names. It will then validate the inputs and configure/create and attribute promotion configuration in the Link ObjectConfig. + + A token with ORG_ADMIN authority is required to call this API. + requestBody: + required: true + content: + application/json: + schema: + $ref: '../schemas/SearchAttributeConfig.yaml' + example: { + "name": "newMailAttribute", + "displayName": "New Mail Attribute", + "applicationAttributes": { + "2c9180866166b5b0016167c32ef31a66": "mail", + "2c9180866166b5b0016167c32ef31a67": "mail" + } + } + responses: + '202': + $ref: '../../v3/responses/202.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + +get: + operationId: getSearchAttributeConfig + security: + - UserContextAuth: [ idn:account-config:read ] + tags: + - Search Attribute Configuration + summary: Retrieve attribute list in IdentityNow. + description: >- + This API retrieves a list of extended search attribute/application associates currently configured in IdentityNow. + + A token with ORG_ADMIN authority is required to call this API. + responses: + '200': + description: List of attribute configurations in IdentityNow. + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/SearchAttributeConfig.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/paths/sod-all-report-run.yaml b/static/api-specs/idn/v3/paths/sod-all-report-run.yaml index 5c1f5fdf5..5c38f5863 100644 --- a/static/api-specs/idn/v3/paths/sod-all-report-run.yaml +++ b/static/api-specs/idn/v3/paths/sod-all-report-run.yaml @@ -3,7 +3,7 @@ post: - UserContextAuth: [idn:sod-violation:write] operationId: startSodAllPoliciesForOrg tags: - - SOD Policy + - SOD Policies summary: Runs all policies for org description: >- Runs multi-policy report for the org. If a policy reports more than 5000 violations, the report mentions that the violation limit was exceeded for that policy. diff --git a/static/api-specs/idn/v3/paths/sod-all-report-status.yaml b/static/api-specs/idn/v3/paths/sod-all-report-status.yaml index 89cc03633..24681e2ab 100644 --- a/static/api-specs/idn/v3/paths/sod-all-report-status.yaml +++ b/static/api-specs/idn/v3/paths/sod-all-report-status.yaml @@ -3,7 +3,7 @@ get: - UserContextAuth: [idn:sod-violation:read] operationId: getSodAllReportRunStatus tags: - - SOD Policy + - SOD Policies summary: Get multi-report run task status description: >- This endpoint gets the status for a violation report for all policy run. diff --git a/static/api-specs/idn/v3/paths/sod-download-custom-report.yaml b/static/api-specs/idn/v3/paths/sod-download-custom-report.yaml index ea676363c..c4f2acc30 100644 --- a/static/api-specs/idn/v3/paths/sod-download-custom-report.yaml +++ b/static/api-specs/idn/v3/paths/sod-download-custom-report.yaml @@ -3,7 +3,7 @@ get: - UserContextAuth: [idn:sod-violation:read] operationId: getCustomViolationReport tags: - - SOD Policy + - SOD Policies summary: Download custom violation report description: >- This allows to download a specified named violation report for a given report reference. diff --git a/static/api-specs/idn/v3/paths/sod-download-default-report.yaml b/static/api-specs/idn/v3/paths/sod-download-default-report.yaml index 7904e8fb4..d29332f74 100644 --- a/static/api-specs/idn/v3/paths/sod-download-default-report.yaml +++ b/static/api-specs/idn/v3/paths/sod-download-default-report.yaml @@ -3,7 +3,7 @@ get: - UserContextAuth: [idn:sod-violation:read] operationId: getDefaultViolationReport tags: - - SOD Policy + - SOD Policies summary: Download violation report description: >- This allows to download a violation report for a given report reference. diff --git a/static/api-specs/idn/v3/paths/sod-policies.yaml b/static/api-specs/idn/v3/paths/sod-policies.yaml index 1c667239a..496235166 100644 --- a/static/api-specs/idn/v3/paths/sod-policies.yaml +++ b/static/api-specs/idn/v3/paths/sod-policies.yaml @@ -249,23 +249,33 @@ get: schema: type: string description: >- - Filter results using the standard syntax described in [V3 API Standard - Collection - Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) Filtering is supported for the following fields and operators: - **id**: *eq* + **id**: *eq, in* - **name**: *eq* + **name**: *eq, in* - **state**: *eq* + **state**: *eq, in* example: id eq "bc693f07e7b645539626c25954c58554" required: false + - in: query + name: sorters + required: false + schema: + type: string + format: comma-separated + example: id,name + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id, name, created, modified, description** responses: "200": description: List of all SOD policies. diff --git a/static/api-specs/idn/v3/paths/source.yaml b/static/api-specs/idn/v3/paths/source.yaml index 60bd541b4..0ddf9ad36 100644 --- a/static/api-specs/idn/v3/paths/source.yaml +++ b/static/api-specs/idn/v3/paths/source.yaml @@ -6,7 +6,7 @@ get: - Sources summary: Get Source by ID description: >- - This end-point gets a specific source in IdentityNow. + Use this API to get a source by a specified ID in Identity Security Cloud (ISC). A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. parameters: @@ -15,11 +15,11 @@ get: schema: type: string required: true - description: The Source id + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 responses: '200': - description: A Source object + description: Source object. content: application/json: schema: @@ -44,10 +44,9 @@ put: - Sources summary: Update Source (Full) description: | - This API updates a source in IdentityNow, using a full object representation. In other words, the existing Source - configuration is completely replaced. + Use this API to update a source in Identity Security Cloud (ISC), using a full object representation. This means that when you use this API, it completely replaces the existing source configuration. - Some fields are immutable and cannot be changed, such as: + These fields are immutable, so they cannot be changed: * id * type @@ -65,7 +64,7 @@ put: schema: type: string required: true - description: The Source id + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true @@ -76,8 +75,8 @@ put: responses: '200': description: >- - Updated Source object. Any passwords will only show the the encrypted cipher-text, as they are not decrypt-able - in IdentityNow cloud-based services, per IdentityNow security design. + Updated Source object. Any passwords will only show the the encrypted cipher-text so that they aren't decryptable + in Identity Security Cloud (ISC) cloud-based services, per ISC security design. content: application/json: schema: @@ -102,10 +101,10 @@ patch: - Sources summary: Update Source (Partial) description: | - This API partially updates a source in IdentityNow, using a list of patch operations according to the + Use this API to partially update a source in Identity Security Cloud (ISC), using a list of patch operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. - Some fields are immutable and cannot be changed, such as: + These fields are immutable, so they cannot be changed: * id * type @@ -125,13 +124,13 @@ patch: schema: type: string required: true - description: The Source id + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true description: >- A list of account update operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. - Any password changes are submitted as plain-text and encrypted upon receipt in IdentityNow. + Any password changes are submitted as plain-text and encrypted upon receipt in Identity Security Cloud (ISC). content: application/json-patch+json: schema: @@ -150,7 +149,7 @@ patch: } ] Edit the source cluster: - description: This example shows how to edit a source cluster by id. + description: This example shows how to edit a source cluster by ID. value: [ { @@ -175,8 +174,8 @@ patch: ] } ] - Change a source description and cluster in One Call: - description: This example shows how multiple fields may be updated with a single patch call. + Change a source description and cluster in one call: + description: This example shows how multiple fields may be updated with a single PATCH call. value: [ { @@ -191,7 +190,7 @@ patch: } ] Add a filter string to the connector: - description: This example shows how you can add a filter to incoming accounts during the account aggregation process. In the example below, any account that does not have an "m" or "d" in the id will be aggregated. + description: This example shows how you can add a filter to incoming accounts during the account aggregation process. In the example, any account that does not have an "m" or "d" in the ID will be aggregated. value: [ { @@ -201,7 +200,7 @@ patch: } ] Update connector attribute for specific operation type: - description: This example shows how you can update the 3rd object in the connection parameters operationType. This will change it from a standard group aggregation to a group aggregation on the "test" entitlement type. + description: This example shows how you can update the 3rd object in the connection parameter's `operationType`. This changes it from a standard group aggregation to a group aggregation on the "test" entitlement type. value: [ { @@ -210,11 +209,28 @@ patch: "value": "Group Aggregation-test" } ] + Enable notifications for new account provisioning on a source: + description: This example shows how you can configure and enable email notifications that will send when new accounts are provisioned on a source. + value: + [ + { + "op": "replace", + "path": "/connectorAttributes/accountCreateNotification", + "value": { + "notifyList": [ + "Distribution.list@demo.com" + ], + "notifyAccountOwner": true, + "enabled": true, + "notifyAccountOwnerAltEmail": false + } + } + ] responses: '200': description: >- - Updated Source object. Any passwords will only show the the encrypted cipher-text, as they are not decrypt-able - in IdentityNow cloud-based services, per IdentityNow security design. + Updated Source object. Any passwords will only show the the encrypted cipher-text so that they aren't decryptable + in Identity Security Cloud (ISC) cloud-based services, per ISC security design. content: application/json: schema: @@ -239,19 +255,19 @@ delete: - Sources summary: Delete Source by ID description: >- - This end-point deletes a specific source in IdentityNow. + Use this API to delete a specific source in Identity Security Cloud (ISC). + + The API removes all the accounts on the source first, and then it deletes the source. + You can retrieve the actual task execution status with this method: GET `/task-status/{id}` A token with ORG_ADMIN, SOURCE_ADMIN, or SOURCE_SUBADMIN authority is required to call this API. - - All of accounts on the source will be removed first, then the source will be deleted. - Actual status of task execution can be retrieved via method GET `/task-status/{id}` parameters: - in: path name: id schema: type: string required: true - description: The Source id + description: Source ID. example: 2c9180835d191a86015d28455b4a2329 responses: '202': @@ -262,22 +278,22 @@ delete: type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - TASK_RESULT example: TASK_RESULT id: type: string - description: ID of the task result + description: Task result ID. example: 2c91808779ecf55b0179f720942f181a name: type: string - description: Human-readable display name of the task result (should be null/empty) + description: Task result's human-readable display name (this should be null/empty). example: null examples: deleteSource: - summary: Response returned when deleting a source + summary: Response returned when a source is being deleted. value: {"type": "TASK_RESULT", "id": "2c91808779ecf55b0179f720942f181a", "name": null} '400': $ref: '../../v3/responses/400.yaml' diff --git a/static/api-specs/idn/v3/paths/vendor-connector-mappings.yaml b/static/api-specs/idn/v3/paths/vendor-connector-mappings.yaml new file mode 100644 index 000000000..d07e197e9 --- /dev/null +++ b/static/api-specs/idn/v3/paths/vendor-connector-mappings.yaml @@ -0,0 +1,143 @@ +get: + security: + - UserContextAuth: + - 'idn:application-discovery:read' + operationId: getVendorConnectorMappings + tags: + - Application Discovery + summary: List vendor connector mappings + description: > + Retrieves a list of mappings between SaaS vendors and IDN connectors, detailing the connections established for correlation. + responses: + '200': + description: Successfully retrieved list. + content: + application/json: + schema: + type: array + items: + $ref: '../../beta/schemas/VendorConnectorMapping.yaml' + example: + - id: "78733556-9ea3-4f59-bf69-e5cd92b011b4" + vendor: "Example Vendor" + connector: "Example Connector" + createdAt: "2024-03-13T12:56:19.391294Z" + createdBy: "admin" + updatedAt: + Time: "2024-03-14T12:56:19.391294Z" + Valid: true + updatedBy: + String: "user-67891" + Valid: true + deletedAt: + Time: "0001-01-01T00:00:00Z" + Valid: false + deletedBy: + String: "" + Valid: false + - id: "78733556-9ea3-4f59-bf69-e5cd92b011b5" + vendor: "Another Corporation" + connector: "Another Connector" + createdAt: "2024-04-13T11:46:19.391294Z" + createdBy: "admin" + updatedAt: + Time: "0001-01-01T00:00:00Z" + Valid: false + updatedBy: + String: "" + Valid: false + deletedAt: + Time: "0001-01-01T00:00:00Z" + Valid: false + deletedBy: + String: "" + Valid: false + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '405': + $ref: '../../v3/responses/405.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + +post: + security: + - UserContextAuth: + - 'idn:application-discovery:write' + operationId: createVendorConnectorMapping + tags: + - Vendor Connector Mappings + summary: Create a vendor connector mapping + description: > + Creates a new mapping between a SaaS vendor and an IDN connector to establish correlation paths. + requestBody: + required: true + content: + application/json: + schema: + $ref: '../../beta/schemas/VendorConnectorMapping.yaml' + responses: + '200': + description: Successfully created a new vendor connector mapping. + content: + application/json: + schema: + $ref: '../../beta/schemas/VendorConnectorMapping.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '405': + $ref: '../../v3/responses/405.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' + +delete: + security: + - UserContextAuth: + - 'idn:application-discovery:write' + operationId: deleteVendorConnectorMapping + tags: + - Vendor Connector Mappings + summary: Delete a vendor connector mapping + description: > + Soft deletes a mapping between a SaaS vendor and an IDN connector, removing the established correlation. + requestBody: + required: true + content: + application/json: + schema: + $ref: '../../beta/schemas/VendorConnectorMapping.yaml' + responses: + '200': + description: Successfully deleted the specified vendor connector mapping. + content: + application/json: + schema: + type: object + properties: + count: + type: integer + description: The number of vendor connector mappings successfully deleted. + example: 1 + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/paths/workflows/workflow-execution.yaml b/static/api-specs/idn/v3/paths/workflows/workflow-execution.yaml index 95f41fd99..efc3da6a6 100644 --- a/static/api-specs/idn/v3/paths/workflows/workflow-execution.yaml +++ b/static/api-specs/idn/v3/paths/workflows/workflow-execution.yaml @@ -2,15 +2,15 @@ get: operationId: getWorkflowExecution tags: - Workflows - summary: Get a Workflow Execution + summary: Get Workflow Execution description: >- - Get a single workflow execution. Workflow executions are available for up to 90 days before being archived. If you attempt to access a workflow execution that has been archived, you will receive a 404 Not Found. + Use this API to get a single workflow execution. Workflow executions are available for up to 90 days before being archived. If you attempt to access a workflow execution that has been archived, you will receive a "404 Not Found" response. security: - UserContextAuth: [sp:workflow:read] parameters: - name: id in: path - description: Id of the workflow execution + description: Workflow execution ID. required: true style: simple explode: false @@ -20,7 +20,7 @@ get: responses: '200': description: >- - The workflow execution + Workflow execution. content: application/json: schema: diff --git a/static/api-specs/idn/v3/paths/workflows/workflow-executions.yaml b/static/api-specs/idn/v3/paths/workflows/workflow-executions.yaml index 1a5faeb7d..d84dd5be2 100644 --- a/static/api-specs/idn/v3/paths/workflows/workflow-executions.yaml +++ b/static/api-specs/idn/v3/paths/workflows/workflow-executions.yaml @@ -1,10 +1,10 @@ get: - operationId: listWorkflowExecutions + operationId: getWorkflowExecutions tags: - Workflows summary: List Workflow Executions description: >- - This lists the executions for a given workflow. Workflow executions are available for up to 90 days before being archived. + Use this API to list a specified workflow's executions. Workflow executions are available for up to 90 days before being archived. By default, you can get a maximum of 250 executions. To get executions past the first 250 records, you can do the following: @@ -17,7 +17,7 @@ get: - Filter to find relevant workflow executions. For example, you can filter for failed workflow executions: `GET /workflows/:workflowID/executions?filters=status eq "Failed"` - - You can paginate through results with the `offset` parameter. + - Paginate through results with the `offset` parameter. For example, you can page through 50 executions per page and use that as a way to get to the records past the first 250. Refer to [Paginating Results](https://developer.sailpoint.com/idn/api/standard-collection-parameters#paginating-results) for more information about the query parameters you can use to achieve pagination. security: @@ -25,7 +25,7 @@ get: parameters: - name: id in: path - description: Id of the workflow + description: Workflow ID. required: true style: simple explode: false @@ -55,7 +55,7 @@ get: responses: '200': description: >- - List of workflow executions for the given workflow + List of workflow executions for the specified workflow. content: application/json: schema: diff --git a/static/api-specs/idn/v3/schemas/AccessRequestConfig.yaml b/static/api-specs/idn/v3/schemas/AccessRequestConfig.yaml index 2eed9835f..95722b52c 100644 --- a/static/api-specs/idn/v3/schemas/AccessRequestConfig.yaml +++ b/static/api-specs/idn/v3/schemas/AccessRequestConfig.yaml @@ -2,18 +2,20 @@ type : object properties: approvalsMustBeExternal: type: boolean - description: If true, then approvals must be processed by external system. + description: If this is true, approvals must be processed by an external system. Also, if this is true, it blocks Request Center access requests and returns an error for any user who isn't an org admin. + default: false example: true autoApprovalEnabled: type: boolean - description: If true and requester and reviewer are the same, then automatically approve the approval. + description: If this is true and the requester and reviewer are the same, the request is automatically approved. + default: false example: true requestOnBehalfOfConfig: $ref: './RequestOnBehalfOfConfig.yaml' - description: Request On Behalf Of Configuration. + description: Request On Behalf Of configuration. approvalReminderAndEscalationConfig: $ref: './ApprovalReminderAndEscalationConfig.yaml' - description: Approval Reminder and Escalation Configuration. + description: Approval reminder and escalation configuration. entitlementRequestConfig: $ref: './EntitlementRequestConfig.yaml' - description: Entitlement Request Configuration. \ No newline at end of file + description: Entitlement request configuration. \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/AccessRequestItem.yaml b/static/api-specs/idn/v3/schemas/AccessRequestItem.yaml index bfd79b0de..7b24f89f2 100644 --- a/static/api-specs/idn/v3/schemas/AccessRequestItem.yaml +++ b/static/api-specs/idn/v3/schemas/AccessRequestItem.yaml @@ -32,11 +32,10 @@ properties: removeDate: type: string description: | - The date the role or access profile is no longer assigned to the specified identity. Also known as the expiration date. + The date the role or access profile or entitlement is no longer assigned to the specified identity. Also known as the expiration date. * Specify a date in the future. * The current SLA for the deprovisioning is 24 hours. * This date can be modified to either extend or decrease the duration of access item assignments for the specified identity. You can change the expiration date for requests for yourself or direct reports, but you cannot remove an expiration date on an already approved item. If the access request has not been approved, you can cancel it and submit a new one without the expiration. If it has already been approved, then you have to revoke the access and then re-request without the expiration. - * Currently it is not supported for entitlements. format: 'date-time' example: '2020-07-11T21:23:15.000Z' required : ["id", "type"] diff --git a/static/api-specs/idn/v3/schemas/AccountActivityApprovalStatus.yaml b/static/api-specs/idn/v3/schemas/AccountActivityApprovalStatus.yaml new file mode 100644 index 000000000..72fd87c66 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/AccountActivityApprovalStatus.yaml @@ -0,0 +1,12 @@ +type: string +nullable: true +enum: + - FINISHED + - REJECTED + - RETURNED + - EXPIRED + - PENDING + - CANCELED + - null +example: PENDING +description: The state of an approval status \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/AccountActivityItem.yaml b/static/api-specs/idn/v3/schemas/AccountActivityItem.yaml index 2bc0d45dc..a6ced3456 100644 --- a/static/api-specs/idn/v3/schemas/AccountActivityItem.yaml +++ b/static/api-specs/idn/v3/schemas/AccountActivityItem.yaml @@ -15,7 +15,7 @@ properties: example: "2017-07-11T18:45:37.098Z" approvalStatus: allOf: - - $ref: "./WorkItemState.yaml" + - $ref: "./AccountActivityApprovalStatus.yaml" - nullable: true provisioningStatus: $ref: "./ProvisioningState.yaml" @@ -66,7 +66,7 @@ properties: nullable: true type: string description: - The date the role or access profile is no longer assigned to the specified + The date the role or access profile or entitlement is no longer assigned to the specified identity. format: "date-time" - example: "2020-07-11T00:00:00Z" + example: "2020-07-11T00:00:00Z" \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/ApprovalStatusDto.yaml b/static/api-specs/idn/v3/schemas/ApprovalStatusDto.yaml index c12450a25..dbe0e1094 100644 --- a/static/api-specs/idn/v3/schemas/ApprovalStatusDto.yaml +++ b/static/api-specs/idn/v3/schemas/ApprovalStatusDto.yaml @@ -54,7 +54,7 @@ properties: removeDate: type: string description: - The date the role or access profile is no longer assigned to the specified + The date the role or access profile or entitlement is no longer assigned to the specified identity. format: "date-time" example: "2020-07-11T00:00:00Z" diff --git a/static/api-specs/idn/v3/schemas/BulkTaggedObjectResponse.yaml b/static/api-specs/idn/v3/schemas/BulkTaggedObjectResponse.yaml new file mode 100644 index 000000000..6241d6b23 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/BulkTaggedObjectResponse.yaml @@ -0,0 +1,12 @@ +type: object +properties: + objectRefs: + type: array + items: + $ref: '../../v3/schemas/TaggedObjectDto.yaml' + tags: + type: array + items: + type: string + description: Label to be applied to an Object + example: [ "BU_FINANCE", "PCI" ] diff --git a/static/api-specs/idn/v3/schemas/CampaignFilterDetails.yaml b/static/api-specs/idn/v3/schemas/CampaignFilterDetails.yaml index 3e2bfe71d..d2a07868b 100644 --- a/static/api-specs/idn/v3/schemas/CampaignFilterDetails.yaml +++ b/static/api-specs/idn/v3/schemas/CampaignFilterDetails.yaml @@ -1,27 +1,23 @@ type: object description: Campaign Filter Details properties: - id: - type: string - description: Id of the campaign filter - example: e9f9a1397b842fd5a65842087040d3ac name: type: string - description: This is campaign filter's name. + description: Campaign filter name. example: Identity Attribute Campaign Filter description: type: string - description: This is campaign filter's description. - example: Campaign filter to certify data based on specified property of Identity Attribute. + description: Campaign filter description. + example: Campaign filter to certify data based on an identity attribute's specified property. owner: type: string - description: The owner of this filter. This field is automatically populated at creation time with the current user. + description: Owner of the filter. This field automatically populates at creation time with the current user. example: SailPoint Support nullable: true mode: description: >- - The mode/type of Filter, where it is of INCLUSION or EXCLUSION type. INCLUSION type will include the data in generated campaign - as per specified in criteria, whereas EXCLUSION type will exclude the the data in generated campaign as per specified in criteria. + Mode/type of filter, either the INCLUSION or EXCLUSION type. The INCLUSION type includes the data in generated campaigns + as per specified in the criteria, whereas the EXCLUSION type excludes the data in generated campaigns as per specified in criteria. enum: - "INCLUSION" - "EXCLUSION" @@ -40,12 +36,12 @@ properties: - nullable: true property: type: string - description: The specified key from the Type of criteria. + description: Specified key from the type of criteria. example: displayName nullable: true value: type: string - description: The value for the specified key from the Type of Criteria + description: Value for the specified key from the type of criteria. example: Allie nullable: true required: @@ -69,6 +65,5 @@ properties: ] required: - name - - description - owner - mode \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/CampaignTemplate.yaml b/static/api-specs/idn/v3/schemas/CampaignTemplate.yaml index fc61ef96c..96a77b11e 100644 --- a/static/api-specs/idn/v3/schemas/CampaignTemplate.yaml +++ b/static/api-specs/idn/v3/schemas/CampaignTemplate.yaml @@ -33,6 +33,7 @@ properties: default: false ownerRef: type : object + readOnly: true description: >- The owner of this template, and the owner of campaigns generated from this template via a schedule. This field is automatically populated at creation time with the current user. diff --git a/static/api-specs/idn/v3/schemas/CompletedApproval.yaml b/static/api-specs/idn/v3/schemas/CompletedApproval.yaml index da1468a5c..4fb1ea9ef 100644 --- a/static/api-specs/idn/v3/schemas/CompletedApproval.yaml +++ b/static/api-specs/idn/v3/schemas/CompletedApproval.yaml @@ -71,7 +71,7 @@ properties: description: The final state of the approval removeDate: type: string - description: The date the role or access profile is no longer assigned to the specified identity. + description: The date the role or access profile or entitlement is no longer assigned to the specified identity. format: 'date-time' example: '2020-07-11T00:00:00Z' nullable: true @@ -121,4 +121,5 @@ properties: requestedAppId: 2c91808f7892918f0178b78da4a305a1 requestedAccounts: type: string - nullable: true \ No newline at end of file + nullable: true + description: Information about the requested accounts \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/EmailNotificationOption.yaml b/static/api-specs/idn/v3/schemas/EmailNotificationOption.yaml index 056b7b02a..429fe9f1e 100644 --- a/static/api-specs/idn/v3/schemas/EmailNotificationOption.yaml +++ b/static/api-specs/idn/v3/schemas/EmailNotificationOption.yaml @@ -3,14 +3,17 @@ description: This is used for representing email configuration for a lifecycle s properties: notifyManagers: type: boolean + default: false example: true description: If true, then the manager is notified of the lifecycle state change. notifyAllAdmins: type: boolean + default: false example: true description: If true, then all the admins are notified of the lifecycle state change. notifySpecificUsers: type: boolean + default: false example: true description: If true, then the users specified in "emailAddressList" below are notified of lifecycle state change. emailAddressList: diff --git a/static/api-specs/idn/v3/schemas/EntitlementRequestConfig.yaml b/static/api-specs/idn/v3/schemas/EntitlementRequestConfig.yaml index 05c458f60..96bec964e 100644 --- a/static/api-specs/idn/v3/schemas/EntitlementRequestConfig.yaml +++ b/static/api-specs/idn/v3/schemas/EntitlementRequestConfig.yaml @@ -2,16 +2,17 @@ type : object properties: allowEntitlementRequest: type: boolean - description: Flag for allowing entitlement request. + description: If this is true, entitlement requests are allowed. + default: false example: true requestCommentsRequired: type: boolean - description: Flag for requiring comments while submitting an entitlement request. + description: If this is true, comments are required to submit entitlement requests. default: false example: false deniedCommentsRequired: type: boolean - description: Flag for requiring comments while rejecting an entitlement request. + description: If this is true, comments are required to reject entitlement requests. default: false example: false grantRequestApprovalSchemes: @@ -19,7 +20,7 @@ properties: description: | Approval schemes for granting entitlement request. This can be empty if no approval is needed. Multiple schemes must be comma-separated. The valid schemes are "entitlementOwner", "sourceOwner", "manager" and "workgroup:{id}". - Multiple workgroups (governance groups) can be used. + You can use multiple governance groups (workgroups). default: sourceOwner nullable: true example: diff --git a/static/api-specs/idn/v3/schemas/FederationProtocolDetails.yaml b/static/api-specs/idn/v3/schemas/FederationProtocolDetails.yaml new file mode 100644 index 000000000..869800a9a --- /dev/null +++ b/static/api-specs/idn/v3/schemas/FederationProtocolDetails.yaml @@ -0,0 +1,13 @@ +type: object +properties: + role: + type: string + description: Federation protocol role + example: SAML_IDP + enum: + - SAML_IDP + - SAML_SP + entityId: + type: string + description: An entity ID is a globally unique name for a SAML entity, either an Identity Provider (IDP) or a Service Provider (SP). + example: http://www.okta.com/exkdaruy8Ln5Ry7C54x6 diff --git a/static/api-specs/idn/v3/schemas/IdentityReferenceWithNameAndEmail.yaml b/static/api-specs/idn/v3/schemas/IdentityReferenceWithNameAndEmail.yaml index df31eb6cb..87d3cc74c 100644 --- a/static/api-specs/idn/v3/schemas/IdentityReferenceWithNameAndEmail.yaml +++ b/static/api-specs/idn/v3/schemas/IdentityReferenceWithNameAndEmail.yaml @@ -3,18 +3,18 @@ nullable: true properties: type: type: string - description: The type can only be IDENTITY. This is read-only + description: The type can only be IDENTITY. This is read-only. example: IDENTITY id: type: string - description: Identity id. + description: Identity ID. example: 5168015d32f890ca15812c9180835d2e name: type: string - description: Human-readable display name of identity. This is read-only + description: Identity's human-readable display name. This is read-only. example: "Alison Ferguso" email: type: string - description: Email address of identity. This is read-only + description: Identity's email address. This is read-only. example: "alison.ferguso@identitysoon.com" diff --git a/static/api-specs/idn/v3/schemas/IdentitySummary.yaml b/static/api-specs/idn/v3/schemas/IdentitySummary.yaml index b98ccef1a..d33032c5c 100644 --- a/static/api-specs/idn/v3/schemas/IdentitySummary.yaml +++ b/static/api-specs/idn/v3/schemas/IdentitySummary.yaml @@ -18,3 +18,4 @@ properties: type: boolean description: Indicates if all access items for this summary have been decided on example: true + default: false diff --git a/static/api-specs/idn/v3/schemas/IdpDetails.yaml b/static/api-specs/idn/v3/schemas/IdpDetails.yaml new file mode 100644 index 000000000..e7b9337c4 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/IdpDetails.yaml @@ -0,0 +1,58 @@ +allOf: + - $ref: './FederationProtocolDetails.yaml' + - type: object + description: Specification of Identity Provider Details section of Service Provider Config + properties: + binding: + type: string + description: Defines the binding used for the SAML flow. Used with IDP configurations. + example: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST + authContext: + type: string + description: Specifies the SAML authentication method to use. Used with IDP configurations. + example: urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport + logoutUrl: + type: string + description: The IDP logout URL. Used with IDP configurations. + example: https://dev-206445.oktapreview.com/login/signout + includeAuthContext: + type: boolean + description: Determines if the configured AuthnContext should be used or the default. Used with IDP configurations. + default: false + example: false + nameId: + type: string + description: The name id format to use. Used with IDP configurations. + example: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress + jitConfiguration: + $ref: './JITConfiguration.yaml' + cert: + type: string + description: The Base64-encoded certificate used by the IDP. Used with IDP configurations. + example: -----BEGIN CERTIFICATE-----****-----END CERTIFICATE----- + loginUrlPost: + type: string + description: The IDP POST URL, used with IDP HTTP-POST bindings for IDP-initiated logins. Used with IDP configurations. + example: https://dev-157216.okta.com/app/sailpointdev157216_cdovsaml_1/exkdaruy8Ln5Ry7C54x6/sso/saml + loginUrlRedirect: + type: string + description: The IDP Redirect URL. Used with IDP configurations. + example: https://dev-157216.okta.com/app/sailpointdev157216_cdovsaml_1/exkdaruy8Ln5Ry7C54x6/sso/saml + mappingAttribute: + type: string + description: Return the saml Id for the given user, based on the IDN as SP settings of the org. Used with IDP configurations. + example: email + role: + type: string + description: Federation protocol role + example: SAML_IDP + enum: + - SAML_IDP + certificateExpirationDate: + type: string + description: The expiration date extracted from the certificate. + example: Fri Mar 08 08:54:24 UTC 2013 + certificateName: + type: string + description: The name extracted from the certificate. + example: OU=Conext, O=Surfnet, L=Utrecht, ST=Utrecht, C=NL diff --git a/static/api-specs/idn/v3/schemas/JITConfiguration.yaml b/static/api-specs/idn/v3/schemas/JITConfiguration.yaml new file mode 100644 index 000000000..98ac276f8 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/JITConfiguration.yaml @@ -0,0 +1,21 @@ +type: object +properties: + enabled: + type: boolean + description: The indicator for just-in-time provisioning enabled + default: false + example: false + sourceId: + type: string + description: the sourceId that mapped to just-in-time provisioning configuration + example: 2c9180857377ed2901739c12a2da5ac8 + sourceAttributeMappings: + type: object + description: A mapping of identity profile attribute names to SAML assertion attribute names + additionalProperties: + type: string + description: a mapping of JIT source attributes to the SAML assertion attribute + example: + firstName: okta.firstName + lastName: okta.lastName + email: okta.email diff --git a/static/api-specs/idn/v3/schemas/LifecycleState.yaml b/static/api-specs/idn/v3/schemas/LifecycleState.yaml index 47c90fbf0..c54f33cd3 100644 --- a/static/api-specs/idn/v3/schemas/LifecycleState.yaml +++ b/static/api-specs/idn/v3/schemas/LifecycleState.yaml @@ -6,16 +6,17 @@ allOf: properties: enabled: type: boolean + default: false example: true - description: Whether the lifecycle state is enabled or disabled. + description: Indicates whether the lifecycle state is enabled or disabled. technicalName: type: string example: "Technical Name" - description: The technical name for lifecycle state. This is for internal use. + description: The lifecycle state's technical name. This is for internal use. description: type: string example: "Lifecycle description" - description: Lifecycle state description. + description: Lifecycle state's description. identityCount: type: integer format: int32 @@ -35,3 +36,9 @@ allOf: uniqueItems: true example: ["2c918084660f45d6016617daa9210584", "2c918084660f45d6016617daa9210500"] description: List of unique access-profile IDs that are associated with the lifecycle state. + identityState: + type: string + nullable: true + example: null + description: The lifecycle state's associated identity state. This field is generally 'null'. + diff --git a/static/api-specs/idn/v3/schemas/LockoutConfiguration.yaml b/static/api-specs/idn/v3/schemas/LockoutConfiguration.yaml new file mode 100644 index 000000000..36be1a451 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/LockoutConfiguration.yaml @@ -0,0 +1,17 @@ +type: object +properties: + maximumAttempts: + type: integer + format: int32 + description: The maximum attempts allowed before lockout occurs. + example: 5 + lockoutDuration: + type: integer + format: int32 + description: The total time in minutes a user will be locked out. + example: 15 + lockoutWindow: + type: integer + format: int32 + description: A rolling window where authentication attempts in a series count towards the maximum before lockout occurs. + example: 5 diff --git a/static/api-specs/idn/v3/schemas/ManualDiscoverApplications.yaml b/static/api-specs/idn/v3/schemas/ManualDiscoverApplications.yaml new file mode 100644 index 000000000..73f8908f6 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/ManualDiscoverApplications.yaml @@ -0,0 +1,12 @@ +type: object +properties: + file: + type: string + format: binary + description: The CSV file to upload containing `application_name` and `description` columns. Each row represents an application to be discovered. + example: |- + application_name,description + "Sample App","This is a sample description for Sample App." + "Another App","Description for Another App." +required: + - file diff --git a/static/api-specs/idn/v3/schemas/ManualDiscoverApplicationsTemplate.yaml b/static/api-specs/idn/v3/schemas/ManualDiscoverApplicationsTemplate.yaml new file mode 100644 index 000000000..2d454420d --- /dev/null +++ b/static/api-specs/idn/v3/schemas/ManualDiscoverApplicationsTemplate.yaml @@ -0,0 +1,10 @@ +type: object +properties: + application_name: + type: string + description: Name of the application. + example: "Example Application" + description: + type: string + description: Description of the application. + example: "Example Description" diff --git a/static/api-specs/idn/v3/schemas/PasswordPolicyV3Dto.yaml b/static/api-specs/idn/v3/schemas/PasswordPolicyV3Dto.yaml index d91e06914..5471adaf7 100644 --- a/static/api-specs/idn/v3/schemas/PasswordPolicyV3Dto.yaml +++ b/static/api-specs/idn/v3/schemas/PasswordPolicyV3Dto.yaml @@ -6,19 +6,21 @@ properties: example: 2c91808e7d976f3b017d9f5ceae440c8 description: type: string + nullable: true description: Description for current password policy. example: Information about the Password Policy name: type: string description: The name of the password policy. example: PasswordPolicy Example - dateCrated: + dateCreated: type: string format: 'date-time' description: Date the Password Policy was created. example: 1639056206564 lastUpdated: type: string + nullable: true format: 'date-time' description: Date the Password Policy was updated. example: 1939056206564 @@ -137,9 +139,15 @@ properties: description: Defines whether this policy validate against account name or not. This field is false by default. example: true default: false + created: + type: string + nullable: true + modified: + type: string + nullable: true sourceIds: type: array description: List of sources IDs managed by this password policy. items: type: string - example: ["2c91808382ffee0b01830de154f14034", "2f98808382ffee0b01830de154f12134"] + example: ["2c91808382ffee0b01830de154f14034", "2f98808382ffee0b01830de154f12134"] \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/PendingApproval.yaml b/static/api-specs/idn/v3/schemas/PendingApproval.yaml index fd3d04205..ee3fd1e9c 100644 --- a/static/api-specs/idn/v3/schemas/PendingApproval.yaml +++ b/static/api-specs/idn/v3/schemas/PendingApproval.yaml @@ -79,7 +79,7 @@ properties: description: Action that is performed on this approval, and system has not finished performing that action yet. removeDate: type: string - description: The date the role or access profile is no longer assigned to the specified identity. + description: The date the role or access profile or entitlement is no longer assigned to the specified identity. format: 'date-time' example: '2020-07-11T00:00:00Z' removeDateUpdateRequested: diff --git a/static/api-specs/idn/v3/schemas/RequestOnBehalfOfConfig.yaml b/static/api-specs/idn/v3/schemas/RequestOnBehalfOfConfig.yaml index 1ceaf48f2..1bdac601f 100644 --- a/static/api-specs/idn/v3/schemas/RequestOnBehalfOfConfig.yaml +++ b/static/api-specs/idn/v3/schemas/RequestOnBehalfOfConfig.yaml @@ -2,9 +2,11 @@ type : object properties: allowRequestOnBehalfOfAnyoneByAnyone: type: boolean - description: If anyone can request access for anyone. + description: If this is true, anyone can request access for anyone. + default: false example: true allowRequestOnBehalfOfEmployeeByManager: type: boolean - description: If a manager can request access for his/her direct reports. + description: If this is true, a manager can request access for his or her direct reports. + default: false example: true diff --git a/static/api-specs/idn/v3/schemas/RequestedItemStatus.yaml b/static/api-specs/idn/v3/schemas/RequestedItemStatus.yaml index e70e628bf..002436426 100644 --- a/static/api-specs/idn/v3/schemas/RequestedItemStatus.yaml +++ b/static/api-specs/idn/v3/schemas/RequestedItemStatus.yaml @@ -58,12 +58,23 @@ properties: requester: $ref: './AccessItemRequester.yaml' requestedFor: - type: array - description: Identities access was requested for. - items: - $ref: './AccessItemRequestedFor.yaml' - minItems: 1 - maxItems: 10 + type: object + description: Identity access was requested for. + properties: + type: + type: string + enum: + - IDENTITY + description: Type of the object to which this reference applies + example: IDENTITY + id: + type: string + description: ID of the object to which this reference applies + example: 2c9180835d191a86015d28455b4b232a + name: + type: string + description: Human-readable display name of the object to which this reference applies + example: William Wilson requesterComment: allOf: - $ref: './CommentDto.yaml' @@ -119,4 +130,4 @@ properties: { "key1": "value1", "key2": "value2" - } + } \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/SearchAttributeConfig.yaml b/static/api-specs/idn/v3/schemas/SearchAttributeConfig.yaml new file mode 100644 index 000000000..9dec033e6 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/SearchAttributeConfig.yaml @@ -0,0 +1,17 @@ +type: object +properties: + name: + type: string + description: Name of the new attribute + example: newMailAttribute + displayName: + type: string + description: The display name of the new attribute + example: New Mail Attribute + applicationAttributes: + type: object + description: Map of application id and their associated attribute. + example: { + "2c91808b79fd2422017a0b35d30f3968": "employeeNumber", + "2c91808b79fd2422017a0b36008f396b": "employeeNumber" + } diff --git a/static/api-specs/idn/v3/schemas/ServiceProviderConfiguration.yaml b/static/api-specs/idn/v3/schemas/ServiceProviderConfiguration.yaml new file mode 100644 index 000000000..cd2107220 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/ServiceProviderConfiguration.yaml @@ -0,0 +1,67 @@ +description: >- + Represents the IdentityNow as Service Provider Configuration + allowing customers to log into IDN via an Identity Provider +type: object +properties: + enabled: + description: This determines whether or not the SAML authentication flow is enabled for an org + type: boolean + example: true + default: false + bypassIdp: + description: >- + This allows basic login with the parameter prompt=true. + This is often toggled on when debugging SAML authentication setup. + When false, only org admins with MFA-enabled can bypass the IDP. + type: boolean + example: true + default: false + samlConfigurationValid: + description: This indicates whether or not the SAML configuration is valid. + type: boolean + example: true + default: false + federationProtocolDetails: + description: >- + A list of the abstract implementations of the Federation Protocol details. + Typically, this will include on SpDetails object and one IdpDetails object + used in tandem to define a SAML integration between a customer's identity + provider and a customer's SailPoint instance (i.e., the service provider). + type: array + items: + oneOf: + - $ref: 'IdpDetails.yaml' + - $ref: 'SpDetails.yaml' + example: [ + { + "role": "SAML_IDP", + "entityId": "http://www.okta.com/exktq4o24bmQA4fr60h7", + "cert": "MIIDpDCCAoygAwIBAgIGAYhZ+b29MA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0yMDY0NDUxHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjMwNTI2MjEzMDU5WhcNMzMwNTI2MjEzMTU5WjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMjA2NDQ1MRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwvi1+WbF2ceGlLCrLl5PrG1lpj04IsrHX6OE666ObC2WFh+Nxvpxy+Vmzon9c9+akhK3bTv+9ifEoVc6tA1qWuCfXISAn9g81JqI68I1PGUbe6eF8pmOA18rjOrt7x94k4QukpR3+I8DfPJ+TynatltB51laLb8H4jchMafA4rDTjV/ZiYPxV0LMEIbprVyGuvBEhiEWha3wwVdDuJq996okX36YNS8PcGH+5CJ8c3YWZp/wrspgJmfCooMXeV+6zBpZfXqPpMWlUo0gcZqDOFgy3r4vkXehJdVYRlInMfDv04Lvy8VI1YAZClG/duO/6o9YVUFLjD9s+mQfhgaF5wIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQB1CTrA/pTHkarbhMHsdSFAjVoYWwdAfrssG99rIjwwr/CW9tavTC3keaoUmUeddcnLY4V/TfL07+xgQGHCBR88cnzG9h6rC9qWxt6C3nug3YDVQfkdCDgnW9A8QEvLeq/KVLoRccpJNEENb2Y5ESUXHi1+PtjkFBtvfSgZ4eEhVggirL0bJdWVm700hCnjb2iCGSbSX7WflfPi0GSmjht983caG9OwZDnDzNFt8qGWCxo4bNSThT00JnWEN/6f1BWNOt9YDrxqEyNclqhLL+RDqFsPBFIrQlsoXzqpWqCL8oS9UMNxbGATK2v3d5ueE9+SswBAFBhirCuqZw19Ri2W", + "loginUrlPost": "https://dev-206445.oktapreview.com/app/tivolidev206445_acmeidntest_1/exktq4o24bmQA4fr60h7/sso/saml", + "loginUrlRedirect": "https://dev-206445.oktapreview.com/app/tivolidev206445_acmeidntest_1/exktq4o24bmQA4fr60h7/sso/saml", + "logoutUrl": "https://dev-206445.oktapreview.com/login/signout", + "nameId": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "authnContext": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", + "includeAuthnContext": true, + "mappingAttribute": "email", + "jitConfiguration": { + "enabled": true, + "sourceId": "2c9180897427f3a501745042afc83144", + "sourceAttributeMappings": { + "firstName": "okta.firstName", + "lastName": "okta.lastName", + "email": "okta.email" + } + }, + "certificateExpirationDate": "Thu May 26 21:31:59 GMT 2033", + "certificateName": "EMAILADDRESS=info@okta.com, CN=dev-206445, OU=SSOProvider, O=Okta, L=San Francisco, ST=California, C=US" + }, + { + "role": "SAML_SP", + "entityId": "https://acme.identitysoon.com/sp", + "alias": "acme-sp", + "callbackUrl": "https://acme.test-login.sailpoint.com/saml/SSO/alias/acme-sp", + "legacyAcsUrl": "https://megapod-useast1-sso.identitysoon.com/sso/Consumer/metaAlias/acme/sp" + } + ] diff --git a/static/api-specs/idn/v3/schemas/SessionConfiguration.yaml b/static/api-specs/idn/v3/schemas/SessionConfiguration.yaml new file mode 100644 index 000000000..0a9104f80 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/SessionConfiguration.yaml @@ -0,0 +1,17 @@ +type: object +properties: + maxIdleTime: + type: integer + format: int32 + description: The maximum time in minutes a session can be idle. + example: 15 + rememberMe: + type: boolean + description: Denotes if 'remember me' is enabled. + default: false + example: true + maxSessionTime: + type: integer + format: int32 + description: The maximum allowable session time in minutes. + example: 45 diff --git a/static/api-specs/idn/v3/schemas/SodPolicy.yaml b/static/api-specs/idn/v3/schemas/SodPolicy.yaml index a402accd8..2ece25f65 100644 --- a/static/api-specs/idn/v3/schemas/SodPolicy.yaml +++ b/static/api-specs/idn/v3/schemas/SodPolicy.yaml @@ -27,7 +27,24 @@ properties: example: "This policy ensures compliance of xyz" nullable: true ownerRef: - $ref: '../../v3/schemas/OwnerDto.yaml' + type: object + description: The owner of the SOD policy. + properties: + type: + type: string + description: Owner type. + enum: + - IDENTITY + - GOVERNANCE_GROUP + example: IDENTITY + id: + type: string + description: Owner's ID. + example: 2c9180a46faadee4016fb4e018c20639 + name: + type: string + description: Owner's name. + example: Support externalPolicyReference: type: string description: Optional External Policy Reference diff --git a/static/api-specs/idn/v3/schemas/Source.yaml b/static/api-specs/idn/v3/schemas/Source.yaml index 7bdd7ba14..36e1dc3a3 100644 --- a/static/api-specs/idn/v3/schemas/Source.yaml +++ b/static/api-specs/idn/v3/schemas/Source.yaml @@ -3,36 +3,36 @@ properties: id: type: string readOnly: true - description: the id of the Source - example: "2c91808568c529c60168cca6f90c1324" + description: Source ID. + example: 2c91808568c529c60168cca6f90c1324 name: type: string - description: Human-readable name of the source + description: Source's human-readable name. example: My Source description: type: string - description: Human-readable description of the source - example: "This is the corporate directory." + description: Source's human-readable description. + example: This is the corporate directory. owner: - description: Reference to an owning Identity Object + description: Reference to identity object who owns the source. type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - IDENTITY example: IDENTITY id: type: string - description: ID of the identity + description: Owner identity's ID. example: 2c91808568c529c60168cca6f90c1313 name: type: string - description: Human-readable display name of the identity + description: Owner identity's human-readable display name. example: MyName cluster: - description: Reference to the associated Cluster + description: Reference to the source's associated cluster. type: object nullable: true required: @@ -41,105 +41,104 @@ properties: - type properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - CLUSTER example: CLUSTER id: type: string - description: ID of the cluster + description: Cluster ID. example: 2c9180866166b5b0016167c32ef31a66 name: type: string - description: Human-readable display name of the cluster + description: Cluster's human-readable display name. example: Corporate Cluster accountCorrelationConfig: - description: Reference to an Account Correlation Config object + description: Reference to account correlation config object. type: object nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - ACCOUNT_CORRELATION_CONFIG example: ACCOUNT_CORRELATION_CONFIG id: type: string - description: ID of the account correlation config + description: Account correlation config ID. example: 2c9180855d191c59015d28583727245a name: type: string - description: Human-readable display name of the account correlation config + description: Account correlation config's human-readable display name. example: Directory [source-62867] Account Correlation accountCorrelationRule: description: >- - Reference to a Rule that can do COMPLEX correlation, should only be used when accountCorrelationConfig can't - be used. + Reference to a rule that can do COMPLEX correlation. Only use this rule when you can't use accountCorrelationConfig. type: object nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - RULE example: RULE id: type: string - description: ID of the rule + description: Rule ID. example: 2c918085708c274401708c2a8a760001 name: type: string - description: Human-readable display name of the rule + description: Rule's human-readable display name. example: Example Rule managerCorrelationMapping: allOf: - $ref: '../../v3/schemas/ManagerCorrelationMapping.yaml' - nullable: true description: | - Filter Object used during manager correlation to match incoming manager values to an existing manager's - Account/Identity + Filter object used during manager correlation to match incoming manager values to an existing manager's + account/identity. managerCorrelationRule: description: >- - Reference to the ManagerCorrelationRule, only used when a simple filter isn't sufficient. + Reference to the ManagerCorrelationRule. Only use this rule when a simple filter isn't sufficient. type: object nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - RULE example: RULE id: type: string - description: ID of the rule + description: Rule ID. example: 2c918085708c274401708c2a8a760001 name: type: string - description: Human-readable display name of the rule + description: Rule's human-readable display name. example: Example Rule beforeProvisioningRule: description: >- - Rule that runs on the CCG and allows for customization of provisioning plans before the connector is called. + Rule that runs on the CCG and allows for customization of provisioning plans before the API calls the connector. type: object nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - RULE example: RULE id: type: string - description: ID of the rule + description: Rule ID. example: 2c918085708c274401708c2a8a760001 name: type: string - description: Human-readable display name of the rule + description: Rule's human-readable display name. example: Example Rule schemas: type: array @@ -147,21 +146,21 @@ properties: type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - CONNECTOR_SCHEMA example: CONNECTOR_SCHEMA id: type: string - description: ID of the schema + description: Schema ID. example: 2c91808568c529c60168cca6f90c1777 name: type: string - description: Human-readable display name of the schema + description: Schema's human-readable display name. example: MySchema description: >- - List of references to Schema objects + List of references to schema objects. example: - type: "CONNECTOR_SCHEMA" id: "2c9180835d191a86015d28455b4b232a" @@ -176,18 +175,18 @@ properties: type: object properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - PASSWORD_POLICY example: PASSWORD_POLICY id: type: string - description: ID of the policy + description: Policy ID. example: 2c91808568c529c60168cca6f90c1777 name: type: string - description: Human-readable display name of the policy + description: Policy's human-readable display name. example: My Password Policy description: >- List of references to the associated PasswordPolicy objects. @@ -204,7 +203,7 @@ properties: type: string description: >- Specifies the type of system being managed e.g. Active Directory, Workday, etc.. - If you are creating a Delimited File source, you must set the `provisionasCsv` query parameter to `true`. + If you are creating a delimited file source, you must set the `provisionasCsv` query parameter to `true`. example: "OpenLDAP - Direct" connector: type: string @@ -213,12 +212,12 @@ properties: connectorClass: type: string description: >- - The fully qualified name of the Java class that implements the connector interface. + Fully qualified name of the Java class that implements the connector interface. example: "sailpoint.connector.LDAPConnector" connectorAttributes: type: object description: >- - Connector specific configuration; will differ from type to type. + Connector specific configuration. This configuration will differ from type to type. example: healthCheckTimeout: 30 authSearchAttributes: [ @@ -235,83 +234,94 @@ properties: authoritative: type: boolean description: >- - When true indicates the source is referenced by an IdentityProfile. + When this is true, it indicates that the source is referenced by an identity profile. default: false example: false managementWorkgroup: - description: Reference to Management Workgroup for this Source + description: Reference to management workgroup for the source. type: object nullable: true properties: type: - description: The type of object being referenced + description: Type of object being referenced. type: string enum: - GOVERNANCE_GROUP example: GOVERNANCE_GROUP id: type: string - description: ID of the management workgroup + description: Management workgroup ID. example: 2c91808568c529c60168cca6f90c2222 name: type: string - description: Human-readable display name of the management workgroup + description: Management workgroup's human-readable display name. example: My Management Workgroup healthy: type: boolean description: >- - When true indicates a healthy source + When this is true, it indicates that the source is healthy. default: false example: true status: type: string + enum: + - SOURCE_STATE_ERROR_CLUSTER + - SOURCE_STATE_ERROR_SOURCE + - SOURCE_STATE_ERROR_VA + - SOURCE_STATE_FAILURE_CLUSTER + - SOURCE_STATE_FAILURE_SOURCE + - SOURCE_STATE_HEALTHY + - SOURCE_STATE_UNCHECKED_CLUSTER + - SOURCE_STATE_UNCHECKED_CLUSTER_NO_SOURCES + - SOURCE_STATE_UNCHECKED_SOURCE + - SOURCE_STATE_UNCHECKED_SOURCE_NO_ACCOUNTS description: >- - A status identifier, giving specific information on why a source is healthy or not - example: "SOURCE_STATE_HEALTHY" + Status identifier that gives specific information about why a source is or isn't healthy. + example: SOURCE_STATE_HEALTHY since: type: string description: >- - Timestamp showing when a source health check was last performed - example: "2021-09-28T15:48:29.3801666300Z" + Timestamp that shows when a source health check was last performed. + example: 2021-09-28T15:48:29.3801666300Z connectorId: type: string - description: The id of connector - example: "active-directory" + description: Connector ID + example: active-directory connectorName: type: string - description: The name of the connector that was chosen on source creation - example: "Active Directory" + description: Name of the connector that was chosen during source creation. + example: Active Directory connectionType: type: string - description: The type of connection (direct or file) - example: "file" + description: Type of connection (direct or file). + example: file connectorImplementationId: type: string - description: The connector implementation id + description: Connector implementation ID. example: "delimited-file" created: type: string - description: The date-time when the source was created + description: Date-time when the source was created format: date-time example: 2022-02-08T14:50:03.827Z modified: type: string - description: The date-time when the source was last modified + description: Date-time when the source was last modified. format: date-time example: 2024-01-23T18:08:50.897Z credentialProviderEnabled: type: boolean description: >- - Enables credential provider for this source. If credentialProvider is turned on - then source can use credential provider(s) to fetch credentials. + If this is true, it enables a credential provider for the source. If credentialProvider is turned on, + then the source can use credential provider(s) to fetch credentials. default: false example: false category: type: string nullable: true default: null - description: The category of source (e.g. null, CredentialProvider) - example: "CredentialProvider" + description: Source category (e.g. null, CredentialProvider). + example: CredentialProvider required: - name - owner diff --git a/static/api-specs/idn/v3/schemas/SpDetails.yaml b/static/api-specs/idn/v3/schemas/SpDetails.yaml new file mode 100644 index 000000000..36c835107 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/SpDetails.yaml @@ -0,0 +1,19 @@ +allOf: + - $ref: './FederationProtocolDetails.yaml' + - type: object + description: Specification of a Service Provider Details + properties: + role: + type: string + description: Federation protocol role + example: SAML_SP + enum: + - SAML_SP + alias: + type: string + description: Unique alias used to identify the selected local service provider based on used URL. Used with SP configurations. + example: acme-sp + callbackUrl: + type: string + description: The allowed callback URL where users will be redirected to after authentication. Used with SP configurations. + example: https://stradbroke-sso.identitysoon.com/sso/Consumer/metaAlias/cdov-saml/sp diff --git a/static/api-specs/idn/v3/schemas/V3ConnectorDto.yaml b/static/api-specs/idn/v3/schemas/V3ConnectorDto.yaml index 8e7d11624..25f225476 100644 --- a/static/api-specs/idn/v3/schemas/V3ConnectorDto.yaml +++ b/static/api-specs/idn/v3/schemas/V3ConnectorDto.yaml @@ -15,6 +15,7 @@ properties: example: "servicenow" className: type: string + nullable: true description: The connector class name. example: "sailpoint.connector.OpenConnectorAdapter" features: diff --git a/static/api-specs/idn/v3/schemas/VendorConnectorMapping.yaml b/static/api-specs/idn/v3/schemas/VendorConnectorMapping.yaml new file mode 100644 index 000000000..40b9dc13d --- /dev/null +++ b/static/api-specs/idn/v3/schemas/VendorConnectorMapping.yaml @@ -0,0 +1,81 @@ +type: object +properties: + id: + type: string + description: The unique identifier for the vendor-connector mapping. + example: "78733556-9ea3-4f59-bf69-e5cd92b011b4" + vendor: + type: string + description: The name of the vendor. + example: "Example vendor" + connector: + type: string + description: The name of the connector. + example: "Example connector" + createdAt: + type: string + format: date-time + description: The creation timestamp of the mapping. + example: "2024-03-13T12:56:19.391294Z" + createdBy: + type: string + description: The identifier of the user who created the mapping. + example: "admin" + updatedAt: + type: object + nullable: true + properties: + Time: + type: string + format: date-time + description: The timestamp when the mapping was last updated, represented in ISO 8601 format. + example: "2024-03-14T12:56:19.391294Z" + Valid: + type: boolean + description: A flag indicating if the 'Time' field is set and valid. + default: false + example: true + description: An object representing the nullable timestamp of the last update. + updatedBy: + type: object + nullable: true + properties: + String: + type: string + description: The identifier of the user who last updated the mapping, if available. + example: "user-67891" + Valid: + type: boolean + description: A flag indicating if the 'String' field is set and valid. + default: false + example: true + description: An object representing the nullable identifier of the user who last updated the mapping. + deletedAt: + type: object + nullable: true + properties: + Time: + type: string + format: date-time + description: The timestamp when the mapping was deleted, represented in ISO 8601 format, if applicable. + example: "0001-01-01T00:00:00Z" + Valid: + type: boolean + description: A flag indicating if the 'Time' field is set and valid, i.e., if the mapping has been deleted. + default: false + example: false + description: An object representing the nullable timestamp of when the mapping was deleted. + deletedBy: + type: object + nullable: true + properties: + String: + type: string + description: The identifier of the user who deleted the mapping, if applicable. + example: "" + Valid: + type: boolean + description: A flag indicating if the 'String' field is set and valid, i.e., if the mapping has been deleted. + default: false + example: false + description: An object representing the nullable identifier of the user who deleted the mapping. diff --git a/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml b/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml index a4ca11cd3..67f33d71d 100644 --- a/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml +++ b/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml @@ -15,6 +15,24 @@ properties: example: MANAGER nullable: true ownerRef: - allOf: - - $ref: '../../v3/schemas/OwnerDto.yaml' - - nullable: true + type: object + description: The owner of the violation assignment config. + nullable: true + properties: + type: + type: string + description: Owner type. + enum: + - IDENTITY + - GOVERNANCE_GROUP + - MANAGER + - null + example: IDENTITY + id: + type: string + description: Owner's ID. + example: 2c9180a46faadee4016fb4e018c20639 + name: + type: string + description: Owner's name. + example: Support diff --git a/static/api-specs/idn/v3/schemas/WorkItemState.yaml b/static/api-specs/idn/v3/schemas/WorkItemState.yaml index b57edcece..d30abb425 100644 --- a/static/api-specs/idn/v3/schemas/WorkItemState.yaml +++ b/static/api-specs/idn/v3/schemas/WorkItemState.yaml @@ -1,11 +1,12 @@ type: string +nullable: true enum: - - FINISHED - - REJECTED - - RETURNED - - EXPIRED - - PENDING - - CANCELED + - Finished + - Rejected + - Returned + - Expired + - Pending + - Canceled - null -example: FINISHED +example: Pending description: The state of a work item \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/WorkItemType.yaml b/static/api-specs/idn/v3/schemas/WorkItemType.yaml index 71acc8042..78df32536 100644 --- a/static/api-specs/idn/v3/schemas/WorkItemType.yaml +++ b/static/api-specs/idn/v3/schemas/WorkItemType.yaml @@ -1,19 +1,19 @@ type: string enum: - - UNKNOWN - - GENERIC - - CERTIFICATION - - REMEDIATION - - DELEGATION - - APPROVAL - - VIOLATIONREVIEW - - FORM - - POLICYVIOLATION - - CHALLENGE - - IMPACTANALYSIS - - SIGNOFF - - EVENT - - MANUALACTION - - TEST -example: GENERIC + - Unknown + - Generic + - Certification + - Remediation + - Delegation + - Approval + - ViolationReview + - Form + - PolicyViolation + - Challenge + - ImpactAnalysis + - Signoff + - Event + - ManualAction + - Test +example: Generic description: The type of the work item \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/access/Role.yaml b/static/api-specs/idn/v3/schemas/access/Role.yaml index d6fd7cf17..a6541e5ef 100644 --- a/static/api-specs/idn/v3/schemas/access/Role.yaml +++ b/static/api-specs/idn/v3/schemas/access/Role.yaml @@ -81,9 +81,12 @@ properties: "f7b1b8a3-5fed-4fd4-ad29-82014e137e19", "29cb6c06-1da8-43ea-8be4-b3125f248f2a" ] + dimensional: + type: boolean + nullable: true + dimensionRefs: + type: string + nullable: true required: - name - - owner - - - + - owner \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttribute.yaml b/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttribute.yaml index a00f8c244..ce8bc711d 100644 --- a/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttribute.yaml +++ b/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttribute.yaml @@ -5,19 +5,20 @@ properties: name: type: string description: Identity attribute's technical name. - example: 'uid' + example: 'costCenter' displayName: type: string description: Identity attribute's business-friendly name. - example: 'Identity Security Cloud Username' + example: 'Cost Center' standard: type: boolean description: Indicates whether the attribute is 'standard' or 'default'. default: false - example: true + example: false type: type: string description: Identity attribute's type. + nullable: true example: 'string' multi: type: boolean @@ -28,7 +29,7 @@ properties: type: boolean description: Indicates whether the identity attribute is searchable. default: false - example: true + example: false system: type: boolean description: Indicates whether the identity attribute is 'system', meaning that it doesn't have a source and isn't configurable. @@ -38,4 +39,4 @@ properties: description: Identity attribute's list of sources - this specifies how the rule's value is derived. type: array items: - $ref: "../identity-attributes/Source.yaml" + $ref: "../identity-attributes/Source.yaml" \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttributeNames.yaml b/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttributeNames.yaml index 579d579c4..1702e140e 100644 --- a/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttributeNames.yaml +++ b/static/api-specs/idn/v3/schemas/identity-attributes/IdentityAttributeNames.yaml @@ -1,9 +1,9 @@ type: object description: >- - Identity Attribute IDs + Identity attribute IDs. properties: ids: - description: List of identity attributes' technical names + description: List of identity attributes' technical names. type: array items: type: string diff --git a/static/api-specs/idn/v3/schemas/identity-attributes/Source.yaml b/static/api-specs/idn/v3/schemas/identity-attributes/Source.yaml index 5168ce570..c05187978 100644 --- a/static/api-specs/idn/v3/schemas/identity-attributes/Source.yaml +++ b/static/api-specs/idn/v3/schemas/identity-attributes/Source.yaml @@ -2,9 +2,9 @@ type: object properties: type: type: string - description: Source type. + description: Attribute mapping type. example: 'rule' properties: type: object - description: Source properties. - example: { "attribute": null,"sourceName": "Employees" } + description: Attribute mapping properties. + example: { "ruleType": "IdentityAttribute","ruleName": "Cloud Promote Identity Attribute" } \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/reports/ReportDetails.yaml b/static/api-specs/idn/v3/schemas/reports/ReportDetails.yaml index 03fb70273..c12737a82 100644 --- a/static/api-specs/idn/v3/schemas/reports/ReportDetails.yaml +++ b/static/api-specs/idn/v3/schemas/reports/ReportDetails.yaml @@ -25,8 +25,7 @@ properties: - $ref: '../reports/arguments/search-export-report-arguments.yaml' example: { "application": "2c9180897e7742b2017e781782f705b9", - "sourceName": "DataScienceWorkday", - "defaultS3Bucket": true + "sourceName": "DataScienceWorkday" } description: >- The string-object map(dictionary) with the arguments needed for report processing. \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/reports/arguments/accounts-export-report-arguments.yaml b/static/api-specs/idn/v3/schemas/reports/arguments/accounts-export-report-arguments.yaml index 8720968b1..fb1b65da6 100644 --- a/static/api-specs/idn/v3/schemas/reports/arguments/accounts-export-report-arguments.yaml +++ b/static/api-specs/idn/v3/schemas/reports/arguments/accounts-export-report-arguments.yaml @@ -5,7 +5,6 @@ description: >- required: - application - sourceName - - defaultS3Bucket properties: application: type: string @@ -16,16 +15,4 @@ properties: type: string description: >- Name of the authoritative source for accounts export - example: DataScienceSourceName - defaultS3Bucket: - type: boolean - description: >- - Use it to set default s3 bucket where generated report will be saved. - In case this argument is false and 's3Bucket' argument is null or absent there will be default - s3Bucket assigned to the report. - example: true - s3Bucket: - type: string - description: >- - If you want to be specific you could use this argument with defaultS3Bucket = false. - example: the-dev-bucket \ No newline at end of file + example: DataScienceSourceName \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/reports/arguments/identities-details-report-arguments.yaml b/static/api-specs/idn/v3/schemas/reports/arguments/identities-details-report-arguments.yaml index dbf5e90b7..7e4882782 100644 --- a/static/api-specs/idn/v3/schemas/reports/arguments/identities-details-report-arguments.yaml +++ b/static/api-specs/idn/v3/schemas/reports/arguments/identities-details-report-arguments.yaml @@ -3,7 +3,6 @@ type: object description: >- Arguments for Identities details report (IDENTITIES_DETAILS) required: - - defaultS3Bucket - correlatedOnly properties: correlatedOnly: @@ -11,16 +10,4 @@ properties: description: >- Boolean FLAG to specify if only correlated identities should be used in report processing default: false - example: true - defaultS3Bucket: - type: boolean - description: >- - Use it to set default s3 bucket where generated report will be saved. - In case this argument is false and 's3Bucket' argument is null or absent there will be default - s3Bucket assigned to the report. - example: true - s3Bucket: - type: string - description: >- - If you want to be specific you could use this argument with defaultS3Bucket = false. - example: the-dev-bucket + example: true \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/reports/arguments/identities-report-arguments.yaml b/static/api-specs/idn/v3/schemas/reports/arguments/identities-report-arguments.yaml index 9778fb8d2..ccf94c025 100644 --- a/static/api-specs/idn/v3/schemas/reports/arguments/identities-report-arguments.yaml +++ b/static/api-specs/idn/v3/schemas/reports/arguments/identities-report-arguments.yaml @@ -2,8 +2,6 @@ title: IDENTITIES type: object description: >- Arguments for Identities report (IDENTITIES) -required: - - defaultS3Bucket properties: correlatedOnly: type: boolean @@ -11,15 +9,3 @@ properties: Boolean FLAG to specify if only correlated identities should be used in report processing default: false example: true - defaultS3Bucket: - type: boolean - description: >- - Use it to set default s3 bucket where generated report will be saved. - In case this argument is false and 's3Bucket' argument is null or absent there will be default - s3Bucket assigned to the report. - example: true - s3Bucket: - type: string - description: >- - If you want to be specific you could use this argument with defaultS3Bucket = false. - example: the-dev-bucket diff --git a/static/api-specs/idn/v3/schemas/reports/arguments/identity-profile-identity-error-report-arguments.yaml b/static/api-specs/idn/v3/schemas/reports/arguments/identity-profile-identity-error-report-arguments.yaml index 622acec92..0bd951c3c 100644 --- a/static/api-specs/idn/v3/schemas/reports/arguments/identity-profile-identity-error-report-arguments.yaml +++ b/static/api-specs/idn/v3/schemas/reports/arguments/identity-profile-identity-error-report-arguments.yaml @@ -4,22 +4,9 @@ description: >- Arguments for Identity Profile Identity Error report (IDENTITY_PROFILE_IDENTITY_ERROR) required: - authoritativeSource - - defaultS3Bucket properties: authoritativeSource: type: string description: >- Source Id to be checked on errors of identity profiles aggregation - example: 1234sourceId5678902 - defaultS3Bucket: - type: boolean - description: >- - Use it to set default s3 bucket where generated report will be saved. - In case this argument is false and 's3Bucket' argument is null or absent there will be default - s3Bucket assigned to the report. - example: true - s3Bucket: - type: string - description: >- - If you want to be specific you could use this argument with defaultS3Bucket = false. - example: the-dev-bucket \ No newline at end of file + example: 1234sourceId5678902 \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/reports/arguments/orphan-uncorrelated-report-arguments.yaml b/static/api-specs/idn/v3/schemas/reports/arguments/orphan-uncorrelated-report-arguments.yaml index 5834620ab..1da17f7fc 100644 --- a/static/api-specs/idn/v3/schemas/reports/arguments/orphan-uncorrelated-report-arguments.yaml +++ b/static/api-specs/idn/v3/schemas/reports/arguments/orphan-uncorrelated-report-arguments.yaml @@ -2,8 +2,6 @@ title: ORPHAN_IDENTITIES & UNCORRELATED_ACCOUNTS type: object description: >- Arguments for Orphan Identities report (ORPHAN_IDENTITIES) and Uncorrelated Accounts report (UNCORRELATED_ACCOUNTS) -required: - - defaultS3Bucket properties: selectedFormats: type: array @@ -17,15 +15,3 @@ properties: In case report won't have this argument there will be ['CSV', 'PDF'] as default. example: - CSV - defaultS3Bucket: - type: boolean - description: >- - Use it to set default s3 bucket where generated report will be saved. - In case this argument is false and 's3Bucket' argument is null or absent there will be default - s3Bucket assigned to the report. - example: true - s3Bucket: - type: string - description: >- - If you want to be specific you could use this argument with defaultS3Bucket = false. - example: the-dev-bucket diff --git a/static/api-specs/idn/v3/schemas/reports/arguments/search-export-report-arguments.yaml b/static/api-specs/idn/v3/schemas/reports/arguments/search-export-report-arguments.yaml index dee344ba2..de43cf002 100644 --- a/static/api-specs/idn/v3/schemas/reports/arguments/search-export-report-arguments.yaml +++ b/static/api-specs/idn/v3/schemas/reports/arguments/search-export-report-arguments.yaml @@ -4,7 +4,6 @@ description: >- Arguments for Search Export report (SEARCH_EXPORT) required: - query - - defaultS3Bucket properties: indices: description: >- @@ -50,16 +49,4 @@ properties: type: string example: - 'displayName' - - '+id' - defaultS3Bucket: - type: boolean - description: >- - Use it to set default s3 bucket where generated report will be saved. - In case this argument is false and 's3Bucket' argument is null or absent there will be default - s3Bucket assigned to the report. - example: true - s3Bucket: - type: string - description: >- - If you want to be specific you could use this argument with defaultS3Bucket = false. - example: the-dev-bucket \ No newline at end of file + - '+id' \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/reports/examples/identities-details-report-details.yaml b/static/api-specs/idn/v3/schemas/reports/examples/identities-details-report-details.yaml index 43eed60f7..5b57e1809 100644 --- a/static/api-specs/idn/v3/schemas/reports/examples/identities-details-report-details.yaml +++ b/static/api-specs/idn/v3/schemas/reports/examples/identities-details-report-details.yaml @@ -2,5 +2,4 @@ summary: Identities Details report value: reportType: IDENTITIES_DETAILS arguments: - defaultS3Bucket: true correlatedOnly: true \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/search/Query.yaml b/static/api-specs/idn/v3/schemas/search/Query.yaml index a9b7bbbec..c3feda788 100644 --- a/static/api-specs/idn/v3/schemas/search/Query.yaml +++ b/static/api-specs/idn/v3/schemas/search/Query.yaml @@ -17,11 +17,9 @@ properties: A field's availability depends on the indices being searched. For example, if you are searching "identities", you can apply your search to the "firstName" field, but you couldn't use "firstName" with a search on "access profiles". Refer to the response schema for the respective lists of available fields. - type: array - items: - type: string + type: string example: - - 'name' + - 'firstName,lastName,email' timeZone: description: >- The time zone to be applied to any range query related to dates. diff --git a/static/api-specs/idn/v3/schemas/workflows/Workflow.yaml b/static/api-specs/idn/v3/schemas/workflows/Workflow.yaml index f52a22a04..6d11056f8 100644 --- a/static/api-specs/idn/v3/schemas/workflows/Workflow.yaml +++ b/static/api-specs/idn/v3/schemas/workflows/Workflow.yaml @@ -20,6 +20,11 @@ allOf: format: date-time description: The date and time the workflow was created. example: "2022-01-10T16:06:16.636381447Z" + modified: + type: string + format: date-time + description: The date and time the workflow was modified. + example: 2023-12-05T15:18:27.699132301Z creator: type: object description: Workflow creator's identity. diff --git a/static/api-specs/idn/v3/schemas/workflows/WorkflowBody.yaml b/static/api-specs/idn/v3/schemas/workflows/WorkflowBody.yaml index 81205e635..40b7a8b74 100644 --- a/static/api-specs/idn/v3/schemas/workflows/WorkflowBody.yaml +++ b/static/api-specs/idn/v3/schemas/workflows/WorkflowBody.yaml @@ -5,6 +5,7 @@ properties: description: The name of the workflow example: "Send Email" owner: + type: object description: The identity that owns the workflow. The owner's permissions in IDN will determine what actions the workflow is allowed to perform. Ownership can be changed by updating the owner in a PUT or PATCH request. properties: type: @@ -33,4 +34,4 @@ properties: default: false example: false trigger: - $ref: './WorkflowTrigger.yaml' + $ref: './WorkflowTrigger.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/workflows/WorkflowExecution.yaml b/static/api-specs/idn/v3/schemas/workflows/WorkflowExecution.yaml index bdcf21787..5aff5d56c 100644 --- a/static/api-specs/idn/v3/schemas/workflows/WorkflowExecution.yaml +++ b/static/api-specs/idn/v3/schemas/workflows/WorkflowExecution.yaml @@ -2,32 +2,32 @@ type: object properties: id: type: string - description: The workflow execution ID + description: Workflow execution ID. example: b393f4e2-4785-4d7f-ab27-3a6b8ded4c81 workflowId: type: string - description: The workflow ID + description: Workflow ID. example: d201c5d9-d37b-4a2f-af14-66414f39d568 requestId: type: string - description: This backend ID tracks a workflow request in the system. You can provide this ID in a customer support ticket for debugging purposes. + description: Backend ID that tracks a workflow request in the system. Provide this ID in a customer support ticket for debugging purposes. example: 41e12a74fa7b4a6a98ae47887b64acdb startTime: type: string format: date-time - description: The date/time the workflow started + description: Date/time when the workflow started. example: "2022-02-07T20:13:29.356648026Z" closeTime: type: string format: date-time - description: The date/time the workflow ended + description: Date/time when the workflow ended. example: "2022-02-07T20:13:31.682410165Z" status: - description: The workflow execution status + description: Workflow execution status. type: string enum: - "Completed" - "Failed" - "Canceled" - - "Running" + - "Executing" example: "Completed" diff --git a/static/api-specs/idn/v3/schemas/workflows/WorkflowLibraryAction.yaml b/static/api-specs/idn/v3/schemas/workflows/WorkflowLibraryAction.yaml index f60c85e8c..e97df6d7c 100644 --- a/static/api-specs/idn/v3/schemas/workflows/WorkflowLibraryAction.yaml +++ b/static/api-specs/idn/v3/schemas/workflows/WorkflowLibraryAction.yaml @@ -23,10 +23,10 @@ properties: items: $ref: './WorkflowLibraryFormFields.yaml' isDynamicSchema: - type: boolean - description: Determines whether the dynamic output schema is returned in place of the action's output schema. The dynamic schema lists non-static properties, like properties of a workflow form where each form has different fields. These will be provided dynamically based on available form fields. - example: false - default: false + type: boolean + description: Determines whether the dynamic output schema is returned in place of the action's output schema. The dynamic schema lists non-static properties, like properties of a workflow form where each form has different fields. These will be provided dynamically based on available form fields. + example: false + default: false outputSchema: type: object description: Defines the output schema, if any, that this action produces. @@ -142,4 +142,4 @@ properties: }, "title": "sp:create-campaign", "type": "object" - } + } \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/workflows/WorkflowModifiedBy.yaml b/static/api-specs/idn/v3/schemas/workflows/WorkflowModifiedBy.yaml new file mode 100644 index 000000000..9bf06a123 --- /dev/null +++ b/static/api-specs/idn/v3/schemas/workflows/WorkflowModifiedBy.yaml @@ -0,0 +1,15 @@ +type: object +properties: + type: + type: string + enum: + - IDENTITY + example: IDENTITY + id: + type: string + description: Identity ID + example: 2c9180a46faadee4016fb4e018c20639 + name: + type: string + description: Human-readable display name of identity. + example: Thomas Edison diff --git a/static/api-specs/idn/v3/schemas/workflows/WorkflowTrigger.yaml b/static/api-specs/idn/v3/schemas/workflows/WorkflowTrigger.yaml index b0aac6309..53f4bf445 100644 --- a/static/api-specs/idn/v3/schemas/workflows/WorkflowTrigger.yaml +++ b/static/api-specs/idn/v3/schemas/workflows/WorkflowTrigger.yaml @@ -12,6 +12,9 @@ properties: - SCHEDULED example: EVENT description: The trigger type + displayName: + type: string + nullable: true attributes: oneOf: - $ref: './trigger-attributes/EventAttributes.yaml' diff --git a/static/api-specs/nerm/openapi.yaml b/static/api-specs/nerm/openapi.yaml index 6b741418b..e43521f19 100644 --- a/static/api-specs/nerm/openapi.yaml +++ b/static/api-specs/nerm/openapi.yaml @@ -198,6 +198,9 @@ paths: $ref: "./paths/workflow_actions/username_password_action.yaml" /workflow_actions: $ref: "./paths/workflow_actions/workflow_action.yaml" +#Workflow Action Performer + /workflow_action_performers: + $ref: "./paths/workflow_action_performers.yaml" # Workflow Sessions /workflow_sessions: $ref: "./paths/workflow_sessions.yaml" diff --git a/static/api-specs/nerm/paths/workflow_action_performers.yaml b/static/api-specs/nerm/paths/workflow_action_performers.yaml new file mode 100644 index 000000000..fa3141d8a --- /dev/null +++ b/static/api-specs/nerm/paths/workflow_action_performers.yaml @@ -0,0 +1,15 @@ +post: + summary: Create a workflow action performer + operationId: createWorkflowActionPerformer + description: Create a workflow action performer for an existing workflow action + tags: + - workflow action performer + requestBody: + $ref: "../requestBodies/POST/WorkflowActionPerformers.yaml" + responses: + '200': + $ref: "../responses/WorkflowActionPerformers.yaml" + '400': + $ref: "../responses/400.yaml" + '500': + $ref: "../responses/500.yaml" \ No newline at end of file diff --git a/static/api-specs/nerm/requestBodies/POST/WorkflowActionPerformers.yaml b/static/api-specs/nerm/requestBodies/POST/WorkflowActionPerformers.yaml new file mode 100644 index 000000000..e3a3700d1 --- /dev/null +++ b/static/api-specs/nerm/requestBodies/POST/WorkflowActionPerformers.yaml @@ -0,0 +1,9 @@ +required: true +content: + application/json: + schema: + type: object + properties: + workflow_action_performers: + type: object + $ref: "../../schemas/POST/WorkflowActionPerformers.yaml" \ No newline at end of file diff --git a/static/api-specs/nerm/responses/WorkflowActionPerformers.yaml b/static/api-specs/nerm/responses/WorkflowActionPerformers.yaml new file mode 100644 index 000000000..b043e0e78 --- /dev/null +++ b/static/api-specs/nerm/responses/WorkflowActionPerformers.yaml @@ -0,0 +1,9 @@ +description: Expected response to a valid request +content: + application/json: + schema: + type: object + properties: + workflow_action_performer: + type: object + $ref: "../schemas/GET/WorkflowActionPerformers.yaml" \ No newline at end of file diff --git a/static/api-specs/nerm/schemas/GET/WorkflowActionPerformers.yaml b/static/api-specs/nerm/schemas/GET/WorkflowActionPerformers.yaml new file mode 100644 index 000000000..55148952d --- /dev/null +++ b/static/api-specs/nerm/schemas/GET/WorkflowActionPerformers.yaml @@ -0,0 +1,48 @@ +type: object +properties: + id: + type: string + format: uuid + description: The id of the workflow action performer that was created. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + contributor_attribute_id: + type: string + format: uuid + description: The id of the user attribute to perform the action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + contributors: + type: boolean + default: false + description: Set to allow profile contributor to perform the action. + example: true + contributors_manager_attribute_id: + type: string + format: uuid + description: The id of the user attribute to perform the action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + owner: + type: boolean + default: false + description: Set to allow profile owner to perform the action. + example: true + profiles_contributors_attribute_id: + type: string + format: uuid + description: The id of the profile attribute to perform the action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + requester: + type: boolean + default: false + description: Set to allow requester from the request to perform the action. + example: true + requesters_manager: + type: boolean + default: false + description: Set to allow the requester's manager from the request to perform the action. + example: true + workflow_action_id: + type: string + format: uuid + description: The id of the workflow action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + \ No newline at end of file diff --git a/static/api-specs/nerm/schemas/POST/WorkflowActionPerformers.yaml b/static/api-specs/nerm/schemas/POST/WorkflowActionPerformers.yaml new file mode 100644 index 000000000..44e0fc49c --- /dev/null +++ b/static/api-specs/nerm/schemas/POST/WorkflowActionPerformers.yaml @@ -0,0 +1,43 @@ +type: object +properties: + contributor_attribute_id: + type: string + format: uuid + description: Specify the id of the user attribute to perform the action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + contributors: + type: boolean + default: false + description: Set to true to allow profile contributor to perform the action. + example: true + contributors_manager_attribute_id: + type: string + format: uuid + description: Specify the id of the user attribute to perform the action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + owner: + type: boolean + default: false + description: Set to true to allow profile owner to perform the action. + example: true + profiles_contributors_attribute_id: + type: string + format: uuid + description: Specify the id of the profile attribute to perform the action. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + requester: + type: boolean + default: false + description: Set to true to allow requester from the request to perform the action. + example: true + requesters_manager: + type: boolean + default: false + description: Set to true to allow the requester's manager from the request to perform the action. + example: true + workflow_action_id: + type: string + format: uuid + description: Specify the id of the workflow action you would like to create the workflow action performer/s for. + example: e6905f25-489a-43cd-a758-bdacaf60dcab + \ No newline at end of file diff --git a/static/rule-java-docs/allclasses-frame.html b/static/rule-java-docs/allclasses-frame.html index 45316d210..7ee3a5211 100644 --- a/static/rule-java-docs/allclasses-frame.html +++ b/static/rule-java-docs/allclasses-frame.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -37,6 +37,8 @@
  • Identity
  • IdnRuleUtil
  • IntegrationConfig
  • +
  • JDBCUtil
  • +
  • JDBCUtil.ConnectorType
  • JsonUtil
  • JsonUtil.JsonParser
  • JsonUtil.JsonParserBuilder
  • diff --git a/static/rule-java-docs/allclasses-noframe.html b/static/rule-java-docs/allclasses-noframe.html index efa336ba5..58849eda2 100644 --- a/static/rule-java-docs/allclasses-noframe.html +++ b/static/rule-java-docs/allclasses-noframe.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -37,6 +37,8 @@
  • Identity
  • IdnRuleUtil
  • IntegrationConfig
  • +
  • JDBCUtil
  • +
  • JDBCUtil.ConnectorType
  • JsonUtil
  • JsonUtil.JsonParser
  • JsonUtil.JsonParserBuilder
  • diff --git a/static/rule-java-docs/connector/common/JsonUtil.JsonParser.html b/static/rule-java-docs/connector/common/JsonUtil.JsonParser.html index 82d70f901..e9c107348 100644 --- a/static/rule-java-docs/connector/common/JsonUtil.JsonParser.html +++ b/static/rule-java-docs/connector/common/JsonUtil.JsonParser.html @@ -2,9 +2,9 @@ - + JsonUtil.JsonParser - + diff --git a/static/rule-java-docs/connector/common/JsonUtil.JsonParserBuilder.html b/static/rule-java-docs/connector/common/JsonUtil.JsonParserBuilder.html index 705a12ecd..e88f778a3 100644 --- a/static/rule-java-docs/connector/common/JsonUtil.JsonParserBuilder.html +++ b/static/rule-java-docs/connector/common/JsonUtil.JsonParserBuilder.html @@ -2,9 +2,9 @@ - + JsonUtil.JsonParserBuilder - + diff --git a/static/rule-java-docs/connector/common/JsonUtil.html b/static/rule-java-docs/connector/common/JsonUtil.html index c9110659d..ccf2266cb 100644 --- a/static/rule-java-docs/connector/common/JsonUtil.html +++ b/static/rule-java-docs/connector/common/JsonUtil.html @@ -2,9 +2,9 @@ - + JsonUtil - + @@ -477,7 +477,7 @@ extends java.lang.Object

    render

    @Deprecated
     public static java.lang.String render(java.lang.Object o)
    -                                           throws java.lang.Exception
    + throws java.lang.Exception
    Deprecated. 
    Throws:
    @@ -493,7 +493,7 @@ public static java.lang.String render(java.lang.Object o)

    parse

    @Deprecated
     public static java.lang.Object parse(java.lang.String json)
    -                                          throws java.lang.Exception
    + throws java.lang.Exception
    Deprecated. 
    Throws:
    diff --git a/static/rule-java-docs/connector/common/Util.html b/static/rule-java-docs/connector/common/Util.html index 53c145324..a6952e8b8 100644 --- a/static/rule-java-docs/connector/common/Util.html +++ b/static/rule-java-docs/connector/common/Util.html @@ -2,9 +2,9 @@ - + Util - + diff --git a/static/rule-java-docs/connector/common/package-frame.html b/static/rule-java-docs/connector/common/package-frame.html index eb8aeb983..2b50e166d 100644 --- a/static/rule-java-docs/connector/common/package-frame.html +++ b/static/rule-java-docs/connector/common/package-frame.html @@ -2,9 +2,9 @@ - + connector.common - + diff --git a/static/rule-java-docs/connector/common/package-summary.html b/static/rule-java-docs/connector/common/package-summary.html index 9d92ee64e..68e5868e8 100644 --- a/static/rule-java-docs/connector/common/package-summary.html +++ b/static/rule-java-docs/connector/common/package-summary.html @@ -2,9 +2,9 @@ - + connector.common - + diff --git a/static/rule-java-docs/connector/common/package-tree.html b/static/rule-java-docs/connector/common/package-tree.html index ef96d49c4..767cd9517 100644 --- a/static/rule-java-docs/connector/common/package-tree.html +++ b/static/rule-java-docs/connector/common/package-tree.html @@ -2,9 +2,9 @@ - + connector.common Class Hierarchy - + diff --git a/static/rule-java-docs/constant-values.html b/static/rule-java-docs/constant-values.html index 7136b8239..a3928f54d 100644 --- a/static/rule-java-docs/constant-values.html +++ b/static/rule-java-docs/constant-values.html @@ -2,9 +2,9 @@ - + Constant Field Values - + diff --git a/static/rule-java-docs/deprecated-list.html b/static/rule-java-docs/deprecated-list.html index 48cbacbb4..60b6c1480 100644 --- a/static/rule-java-docs/deprecated-list.html +++ b/static/rule-java-docs/deprecated-list.html @@ -2,9 +2,9 @@ - + Deprecated List - + diff --git a/static/rule-java-docs/help-doc.html b/static/rule-java-docs/help-doc.html index dfb223e5a..2ae2b0e65 100644 --- a/static/rule-java-docs/help-doc.html +++ b/static/rule-java-docs/help-doc.html @@ -2,9 +2,9 @@ - + API Help - + diff --git a/static/rule-java-docs/index-files/index-1.html b/static/rule-java-docs/index-files/index-1.html index bd4549514..c0e6f8556 100644 --- a/static/rule-java-docs/index-files/index-1.html +++ b/static/rule-java-docs/index-files/index-1.html @@ -2,9 +2,9 @@ - + A-Index - + @@ -135,6 +135,10 @@
     
    addAssignmentIds(String) - Method in class sailpoint.object.ProvisioningPlan.AbstractRequest
     
    +
    addError(String) - Method in class sailpoint.object.ProvisioningResult
    +
    +
    This method adds the provided string as an error to the ProvisioningResult
    +
    addFilter(Filter) - Method in class sailpoint.object.QueryOptions
     
    addFiltered(ProvisioningPlan.AbstractRequest) - Method in class sailpoint.object.ProvisioningPlan
    @@ -157,6 +161,10 @@
     
    addValues(Object, boolean) - Method in class sailpoint.object.ProvisioningPlan.GenericRequest
     
    +
    addWarning(String) - Method in class sailpoint.object.ProvisioningResult
    +
    +
    This method adds the provided string as a warning to the ProvisioningResult
    +
    and(Filter, Filter) - Static method in class sailpoint.object.Filter
    Combine the given filters with an AND conjunction.
    diff --git a/static/rule-java-docs/index-files/index-10.html b/static/rule-java-docs/index-files/index-10.html index 0d546e58d..76d9e401c 100644 --- a/static/rule-java-docs/index-files/index-10.html +++ b/static/rule-java-docs/index-files/index-10.html @@ -2,9 +2,9 @@ - + J-Index - + @@ -73,6 +73,12 @@

    J

    +
    JDBCUtil - Class in sailpoint.connector.util
    +
     
    +
    JDBCUtil() - Constructor for class sailpoint.connector.util.JDBCUtil
    +
     
    +
    JDBCUtil.ConnectorType - Enum in sailpoint.connector.util
    +
     
    join(String, String) - Static method in class sailpoint.object.Filter
    Join the given property to the requested fully-qualified join property.
    diff --git a/static/rule-java-docs/index-files/index-11.html b/static/rule-java-docs/index-files/index-11.html index bb501c20d..1f8999bb4 100644 --- a/static/rule-java-docs/index-files/index-11.html +++ b/static/rule-java-docs/index-files/index-11.html @@ -2,9 +2,9 @@ - + L-Index - + diff --git a/static/rule-java-docs/index-files/index-12.html b/static/rule-java-docs/index-files/index-12.html index 4346bb8bb..403a56e99 100644 --- a/static/rule-java-docs/index-files/index-12.html +++ b/static/rule-java-docs/index-files/index-12.html @@ -2,9 +2,9 @@ - + M-Index - + diff --git a/static/rule-java-docs/index-files/index-13.html b/static/rule-java-docs/index-files/index-13.html index 1f2d18722..390da9a26 100644 --- a/static/rule-java-docs/index-files/index-13.html +++ b/static/rule-java-docs/index-files/index-13.html @@ -2,9 +2,9 @@ - + N-Index - + diff --git a/static/rule-java-docs/index-files/index-14.html b/static/rule-java-docs/index-files/index-14.html index 447b0212c..aeb2bc232 100644 --- a/static/rule-java-docs/index-files/index-14.html +++ b/static/rule-java-docs/index-files/index-14.html @@ -2,9 +2,9 @@ - + O-Index - + @@ -97,6 +97,8 @@
    Combine the given filters with an OR conjunction.
    +
    ORACLE_CLOB_HANDLER - Static variable in class sailpoint.connector.util.JDBCUtil
    +
     
    Ordering(String, boolean, boolean) - Constructor for class sailpoint.object.QueryOptions.Ordering
     
    Ordering(String, boolean) - Constructor for class sailpoint.object.QueryOptions.Ordering
    diff --git a/static/rule-java-docs/index-files/index-15.html b/static/rule-java-docs/index-files/index-15.html index a78bcfb88..8d78b7ffd 100644 --- a/static/rule-java-docs/index-files/index-15.html +++ b/static/rule-java-docs/index-files/index-15.html @@ -2,9 +2,9 @@ - + P-Index - + diff --git a/static/rule-java-docs/index-files/index-16.html b/static/rule-java-docs/index-files/index-16.html index 366ef2429..6978bd0f6 100644 --- a/static/rule-java-docs/index-files/index-16.html +++ b/static/rule-java-docs/index-files/index-16.html @@ -2,9 +2,9 @@ - + Q-Index - + diff --git a/static/rule-java-docs/index-files/index-17.html b/static/rule-java-docs/index-files/index-17.html index bff1aed6f..987b46a06 100644 --- a/static/rule-java-docs/index-files/index-17.html +++ b/static/rule-java-docs/index-files/index-17.html @@ -2,9 +2,9 @@ - + R-Index - + diff --git a/static/rule-java-docs/index-files/index-18.html b/static/rule-java-docs/index-files/index-18.html index 46bd38d44..3eb599022 100644 --- a/static/rule-java-docs/index-files/index-18.html +++ b/static/rule-java-docs/index-files/index-18.html @@ -2,9 +2,9 @@ - + S-Index - + @@ -79,6 +79,8 @@
     
    sailpoint.connector - package sailpoint.connector
     
    +
    sailpoint.connector.util - package sailpoint.connector.util
    +
     
    sailpoint.connector.webservices - package sailpoint.connector.webservices
     
    sailpoint.object - package sailpoint.object
    diff --git a/static/rule-java-docs/index-files/index-19.html b/static/rule-java-docs/index-files/index-19.html index b7ef631a9..58c680323 100644 --- a/static/rule-java-docs/index-files/index-19.html +++ b/static/rule-java-docs/index-files/index-19.html @@ -2,9 +2,9 @@ - + T-Index - + diff --git a/static/rule-java-docs/index-files/index-2.html b/static/rule-java-docs/index-files/index-2.html index e99710750..32c67fb8f 100644 --- a/static/rule-java-docs/index-files/index-2.html +++ b/static/rule-java-docs/index-files/index-2.html @@ -2,9 +2,9 @@ - + B-Index - + diff --git a/static/rule-java-docs/index-files/index-20.html b/static/rule-java-docs/index-files/index-20.html index de6654320..56485be8a 100644 --- a/static/rule-java-docs/index-files/index-20.html +++ b/static/rule-java-docs/index-files/index-20.html @@ -2,9 +2,9 @@ - + U-Index - + @@ -73,6 +73,8 @@

    U

    +
    useQuoteForScripts(String, String, String, boolean) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    Util - Class in connector.common
     
    Util() - Constructor for class connector.common.Util
    diff --git a/static/rule-java-docs/index-files/index-21.html b/static/rule-java-docs/index-files/index-21.html index 7a0879bc4..077b044ed 100644 --- a/static/rule-java-docs/index-files/index-21.html +++ b/static/rule-java-docs/index-files/index-21.html @@ -2,9 +2,9 @@ - + V-Index - + @@ -73,6 +73,10 @@

    V

    +
    valueOf(String) - Static method in enum sailpoint.connector.util.JDBCUtil.ConnectorType
    +
    +
    Returns the enum constant of this type with the specified name.
    +
    valueOf(String) - Static method in enum sailpoint.object.Filter.BooleanOperation
    Returns the enum constant of this type with the specified name.
    @@ -109,6 +113,11 @@
    Returns the enum constant of this type with the specified name.
    +
    values() - Static method in enum sailpoint.connector.util.JDBCUtil.ConnectorType
    +
    +
    Returns an array containing the constants of this enum type, in +the order they are declared.
    +
    values() - Static method in enum sailpoint.object.Filter.BooleanOperation
    Returns an array containing the constants of this enum type, in diff --git a/static/rule-java-docs/index-files/index-22.html b/static/rule-java-docs/index-files/index-22.html index 9d7d39cc6..3d2b3bcf8 100644 --- a/static/rule-java-docs/index-files/index-22.html +++ b/static/rule-java-docs/index-files/index-22.html @@ -2,9 +2,9 @@ - + W-Index - + diff --git a/static/rule-java-docs/index-files/index-23.html b/static/rule-java-docs/index-files/index-23.html index c7598d1eb..21f15668d 100644 --- a/static/rule-java-docs/index-files/index-23.html +++ b/static/rule-java-docs/index-files/index-23.html @@ -2,9 +2,9 @@ - + _-Index - + diff --git a/static/rule-java-docs/index-files/index-3.html b/static/rule-java-docs/index-files/index-3.html index b19d7126b..29e31b63d 100644 --- a/static/rule-java-docs/index-files/index-3.html +++ b/static/rule-java-docs/index-files/index-3.html @@ -2,9 +2,9 @@ - + C-Index - + @@ -103,6 +103,12 @@
     
    cloneRequestProperties(ProvisioningPlan.AbstractRequest, boolean) - Method in class sailpoint.object.ProvisioningPlan.AbstractRequest
     
    +
    closeConnection(Connection) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    +
    closeResult(ResultSet) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    +
    closeStatement(Statement) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    collapse(boolean) - Method in class sailpoint.object.ProvisioningPlan.AbstractRequest
     
    collapse(boolean) - Method in class sailpoint.object.ProvisioningPlan
    diff --git a/static/rule-java-docs/index-files/index-4.html b/static/rule-java-docs/index-files/index-4.html index f6aa2b341..17c926516 100644 --- a/static/rule-java-docs/index-files/index-4.html +++ b/static/rule-java-docs/index-files/index-4.html @@ -2,9 +2,9 @@ - + D-Index - + diff --git a/static/rule-java-docs/index-files/index-5.html b/static/rule-java-docs/index-files/index-5.html index 6d8a780fa..93498e83d 100644 --- a/static/rule-java-docs/index-files/index-5.html +++ b/static/rule-java-docs/index-files/index-5.html @@ -2,9 +2,9 @@ - + E-Index - + @@ -105,6 +105,10 @@
    Escapes the following metaCharacters String[] metaCharacters = new String[]{"\\", "^", "$", "{", "}", "[", "]", "(", ")", ".", "*", "+", "?", "|", "<", ">", "-", "&", "%"};
    +
    escapeSpecialCharacter(String, JDBCUtil.ConnectorType) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    +
    escapeSpecialCharactor(String, JDBCUtil.ConnectorType) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    escapeXmlSpecialChar(String) - Static method in class connector.common.Util
     
    EXEC_STYLE_REQUEST - Static variable in class sailpoint.object.IntegrationConfig
    @@ -119,6 +123,10 @@
    Use this method to execute a DELETE call specifying the url, header values and allowed statuses.
    +
    executeDelete(String, Object, Map, List<String>) - Method in class sailpoint.connector.webservices.WebServicesClient
    +
    +
    Use this method to execute a DELETE call specifying the url, header values and allowed statuses.
    +
    executeGet(Map, List<String>) - Method in class sailpoint.connector.webservices.WebServicesClient
    Use this method to execute a GET call with specifying header values and allowed statuses.
    diff --git a/static/rule-java-docs/index-files/index-6.html b/static/rule-java-docs/index-files/index-6.html index 0530d4940..4cd1e287a 100644 --- a/static/rule-java-docs/index-files/index-6.html +++ b/static/rule-java-docs/index-files/index-6.html @@ -2,9 +2,9 @@ - + F-Index - + diff --git a/static/rule-java-docs/index-files/index-7.html b/static/rule-java-docs/index-files/index-7.html index 4da7a9f6e..fa2320a15 100644 --- a/static/rule-java-docs/index-files/index-7.html +++ b/static/rule-java-docs/index-files/index-7.html @@ -2,9 +2,9 @@ - + G-Index - + @@ -342,6 +342,12 @@
     
    getComments() - Method in class sailpoint.object.ProvisioningPlan
     
    +
    getConnection(Map) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    +
    getConnection(String, String, String, String, String, Properties) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    +
    getConnection(String, String, String, String, String) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    getContextUrl() - Method in class sailpoint.connector.webservices.Endpoint
    Use this method to get the context url for the particular operation (create user, update user, account aggregation, etc...)
    @@ -724,6 +730,10 @@
    Use this method to get the operation type (Account Aggregation, Group Aggregation, Create Account, etc...) for the particular operation record (create user, update user, account aggregation, etc...)
    +
    getOracleDBTimeZoneDetails(Connection, String, String) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    +
    getOracleDBVersionDetails(Connection, String, String) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    getOwner() - Method in class sailpoint.object.ManagedAttribute
     
    getParameters() - Method in class sailpoint.tools.Message
    diff --git a/static/rule-java-docs/index-files/index-8.html b/static/rule-java-docs/index-files/index-8.html index 35dc2825e..64f9568ee 100644 --- a/static/rule-java-docs/index-files/index-8.html +++ b/static/rule-java-docs/index-files/index-8.html @@ -2,9 +2,9 @@ - + H-Index - + diff --git a/static/rule-java-docs/index-files/index-9.html b/static/rule-java-docs/index-files/index-9.html index 1c2d5bd57..576e8d9d2 100644 --- a/static/rule-java-docs/index-files/index-9.html +++ b/static/rule-java-docs/index-files/index-9.html @@ -2,9 +2,9 @@ - + I-Index - + @@ -96,6 +96,8 @@
    info(String, Object...) - Static method in class sailpoint.tools.Message
     
    +
    initializeSession(Connection, int, int, int) - Static method in class sailpoint.connector.util.JDBCUtil
    +
     
    instantiate() - Method in class sailpoint.object.ProvisioningPlan.AbstractRequest
     
    instantiate() - Method in class sailpoint.object.ProvisioningPlan.AccountRequest
    diff --git a/static/rule-java-docs/index.html b/static/rule-java-docs/index.html index 483ce2e6f..0f081575b 100644 --- a/static/rule-java-docs/index.html +++ b/static/rule-java-docs/index.html @@ -2,7 +2,7 @@ - + Generated Documentation (Untitled) @@ -16,6 +16,7 @@
  • connector.common
  • sailpoint.api
  • sailpoint.connector
  • +
  • sailpoint.connector.util
  • sailpoint.connector.webservices
  • sailpoint.object
  • sailpoint.rule
  • diff --git a/static/rule-java-docs/overview-summary.html b/static/rule-java-docs/overview-summary.html index 507d3bb43..f0e9dc0f9 100644 --- a/static/rule-java-docs/overview-summary.html +++ b/static/rule-java-docs/overview-summary.html @@ -2,9 +2,9 @@ - + Overview - + @@ -89,22 +89,26 @@   +sailpoint.connector.util +  + + sailpoint.connector.webservices   - + sailpoint.object   - + sailpoint.rule   - + sailpoint.server   - + sailpoint.tools   diff --git a/static/rule-java-docs/overview-tree.html b/static/rule-java-docs/overview-tree.html index d8c7d3b62..346b049dc 100644 --- a/static/rule-java-docs/overview-tree.html +++ b/static/rule-java-docs/overview-tree.html @@ -2,9 +2,9 @@ - + Class Hierarchy - + @@ -75,6 +75,7 @@
  • connector.common,
  • sailpoint.api,
  • sailpoint.connector,
  • +
  • sailpoint.connector.util,
  • sailpoint.connector.webservices,
  • sailpoint.object,
  • sailpoint.rule,
  • @@ -146,6 +147,7 @@
  • sailpoint.object.Filter.BaseFilterVisitor (implements sailpoint.object.Filter.FilterVisitor)
  • sailpoint.object.Filter.FilterCompiler
  • sailpoint.object.IntegrationConfig
  • +
  • sailpoint.connector.util.JDBCUtil
  • connector.common.JsonUtil
  • connector.common.JsonUtil.JsonParser
  • connector.common.JsonUtil.JsonParserBuilder
  • @@ -179,15 +181,16 @@ diff --git a/static/rule-java-docs/package-list b/static/rule-java-docs/package-list index b6bbee987..c38fdd9da 100644 --- a/static/rule-java-docs/package-list +++ b/static/rule-java-docs/package-list @@ -1,6 +1,7 @@ connector.common sailpoint.api sailpoint.connector +sailpoint.connector.util sailpoint.connector.webservices sailpoint.object sailpoint.rule diff --git a/static/rule-java-docs/sailpoint/api/SailPointContext.html b/static/rule-java-docs/sailpoint/api/SailPointContext.html index 2c2c3cc7f..93aae1f90 100644 --- a/static/rule-java-docs/sailpoint/api/SailPointContext.html +++ b/static/rule-java-docs/sailpoint/api/SailPointContext.html @@ -2,9 +2,9 @@ - + SailPointContext - + diff --git a/static/rule-java-docs/sailpoint/api/package-frame.html b/static/rule-java-docs/sailpoint/api/package-frame.html index a25543180..a2a5e23ce 100644 --- a/static/rule-java-docs/sailpoint/api/package-frame.html +++ b/static/rule-java-docs/sailpoint/api/package-frame.html @@ -2,9 +2,9 @@ - + sailpoint.api - + diff --git a/static/rule-java-docs/sailpoint/api/package-summary.html b/static/rule-java-docs/sailpoint/api/package-summary.html index 39318b437..fc0f17c9b 100644 --- a/static/rule-java-docs/sailpoint/api/package-summary.html +++ b/static/rule-java-docs/sailpoint/api/package-summary.html @@ -2,9 +2,9 @@ - + sailpoint.api - + diff --git a/static/rule-java-docs/sailpoint/api/package-tree.html b/static/rule-java-docs/sailpoint/api/package-tree.html index ef44e0644..a672256df 100644 --- a/static/rule-java-docs/sailpoint/api/package-tree.html +++ b/static/rule-java-docs/sailpoint/api/package-tree.html @@ -2,9 +2,9 @@ - + sailpoint.api Class Hierarchy - + diff --git a/static/rule-java-docs/sailpoint/connector/DelimitedFileConnector.html b/static/rule-java-docs/sailpoint/connector/DelimitedFileConnector.html index bb27a659c..bb87ae8e9 100644 --- a/static/rule-java-docs/sailpoint/connector/DelimitedFileConnector.html +++ b/static/rule-java-docs/sailpoint/connector/DelimitedFileConnector.html @@ -2,9 +2,9 @@ - + DelimitedFileConnector - + diff --git a/static/rule-java-docs/sailpoint/connector/package-frame.html b/static/rule-java-docs/sailpoint/connector/package-frame.html index 1b195f3cd..7a04d9358 100644 --- a/static/rule-java-docs/sailpoint/connector/package-frame.html +++ b/static/rule-java-docs/sailpoint/connector/package-frame.html @@ -2,9 +2,9 @@ - + sailpoint.connector - + diff --git a/static/rule-java-docs/sailpoint/connector/package-summary.html b/static/rule-java-docs/sailpoint/connector/package-summary.html index f75e2891d..dff6f0b6b 100644 --- a/static/rule-java-docs/sailpoint/connector/package-summary.html +++ b/static/rule-java-docs/sailpoint/connector/package-summary.html @@ -2,9 +2,9 @@ - + sailpoint.connector - + @@ -43,7 +43,7 @@
    + + + +
      +
    • +

      executeDelete

      +
      public java.lang.String executeDelete(java.lang.String url,
      +                                      java.lang.Object payload,
      +                                      java.util.Map headers,
      +                                      java.util.List<java.lang.String> allowedStatuses)
      +                               throws java.lang.Exception
      +
      Use this method to execute a DELETE call specifying the url, header values and allowed statuses.
      +
      +
      Parameters:
      +
      url - The url to execute the request against
      +
      payload - The payload to send to the request endpoint
      +
      headers - Any headers needed to authenticate or specify a content-type
      +
      allowedStatuses - Allowed response statuses, ie: 200, 201, 400, etc...
      +
      Returns:
      +
      Delete request response object
      +
      Throws:
      +
      java.lang.Exception - The exception thrown by the client
      +
      +
    • +
    diff --git a/static/rule-java-docs/sailpoint/connector/webservices/package-frame.html b/static/rule-java-docs/sailpoint/connector/webservices/package-frame.html index ca48ab86c..743f88b1d 100644 --- a/static/rule-java-docs/sailpoint/connector/webservices/package-frame.html +++ b/static/rule-java-docs/sailpoint/connector/webservices/package-frame.html @@ -2,9 +2,9 @@ - + sailpoint.connector.webservices - + diff --git a/static/rule-java-docs/sailpoint/connector/webservices/package-summary.html b/static/rule-java-docs/sailpoint/connector/webservices/package-summary.html index 9d52179cb..c85cfcff3 100644 --- a/static/rule-java-docs/sailpoint/connector/webservices/package-summary.html +++ b/static/rule-java-docs/sailpoint/connector/webservices/package-summary.html @@ -2,9 +2,9 @@ - + sailpoint.connector.webservices - + @@ -42,7 +42,7 @@