diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
new file mode 100644
index 0000000..719bc8b
--- /dev/null
+++ b/.github/workflows/lint.yaml
@@ -0,0 +1,48 @@
+name: Lint
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ lint:
+ name: Lint
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/setup-node@v3
+ with:
+ node-version: '18'
+
+ - uses: pnpm/action-setup@v2
+ name: Install pnpm
+ with:
+ version: 8
+ run_install: false
+
+ - name: Get pnpm store directory
+ shell: bash
+ run: |
+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
+
+ - uses: actions/cache@v3
+ name: Setup pnpm cache
+ with:
+ path: ${{ env.STORE_PATH }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Install deps
+ run: pnpm i
+
+ - name: Lint
+ run: pnpm run lint
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b512c09
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+node_modules
\ No newline at end of file
diff --git a/.perttierrc.json b/.perttierrc.json
new file mode 100644
index 0000000..f6ebd00
--- /dev/null
+++ b/.perttierrc.json
@@ -0,0 +1,6 @@
+{
+ "printWidth": 100,
+ "trailingComma": "es5",
+ "singleQuote": true,
+ "tabWidth": 2
+}
\ No newline at end of file
diff --git a/_snippets/browser/upload-attachment.mdx b/_snippets/browser/upload-attachment.mdx
index 5b40130..0a65940 100644
--- a/_snippets/browser/upload-attachment.mdx
+++ b/_snippets/browser/upload-attachment.mdx
@@ -12,13 +12,13 @@ function uploadAttachment(fileBlob, uploadFormUrl, uploadFormData) {
form.append(key, value);
});
- const file = new File([fileBlob], 'file');
- form.append('file', file);
+ const file = new File([fileBlob], "file");
+ form.append("file", file);
console.log(`Uploading attachment to ${uploadFormUrl}`);
fetch(uploadFormUrl, {
- method: 'POST',
+ method: "POST",
body: form,
})
.then((res) => {
@@ -28,7 +28,10 @@ function uploadAttachment(fileBlob, uploadFormUrl, uploadFormData) {
console.log(`File successfully uploaded! (code=${res.status})`);
})
.catch((err) => {
- console.log(`There was an error uploading the file: %s`, err.message ? err.message : err);
+ console.log(
+ `There was an error uploading the file: %s`,
+ err.message ? err.message : err,
+ );
});
}
```
diff --git a/_snippets/graphql/add-labels.mdx b/_snippets/graphql/add-labels.mdx
index f80c013..9abd80f 100644
--- a/_snippets/graphql/add-labels.mdx
+++ b/_snippets/graphql/add-labels.mdx
@@ -14,7 +14,10 @@ mutation addLabels($input: AddLabelsInput!) {
```json filename="Variables"
{
"input": {
- "labelTypeIds": ["lt_01HB8BTNTZ58730MX8H5VMKFD5", "lt_01HB8BTNKSCF1FK5ETFVRSDC6G"],
+ "labelTypeIds": [
+ "lt_01HB8BTNTZ58730MX8H5VMKFD5",
+ "lt_01HB8BTNKSCF1FK5ETFVRSDC6G"
+ ],
"threadId": "th_01H8H46YPB2S4MAJM382FG9423"
}
}
diff --git a/_snippets/graphql/remove-customer-from-groups.mdx b/_snippets/graphql/remove-customer-from-groups.mdx
index a14c6d5..e1e19b3 100644
--- a/_snippets/graphql/remove-customer-from-groups.mdx
+++ b/_snippets/graphql/remove-customer-from-groups.mdx
@@ -1,5 +1,7 @@
```graphql filename="Mutation"
-mutation removeCustomerFromCustomerGroup($input: RemoveCustomerFromCustomerGroupsInput!) {
+mutation removeCustomerFromCustomerGroup(
+ $input: RemoveCustomerFromCustomerGroupsInput!
+) {
removeCustomerFromCustomerGroups(input: $input) {
error {
message
diff --git a/_snippets/node/upload-attachment.mdx b/_snippets/node/upload-attachment.mdx
index 084444a..9464b7c 100644
--- a/_snippets/node/upload-attachment.mdx
+++ b/_snippets/node/upload-attachment.mdx
@@ -1,6 +1,6 @@
```js
-const axios = require('axios');
-const FormData = require('form-data');
+const axios = require("axios");
+const FormData = require("form-data");
/**
* Upload an attachment.
@@ -15,7 +15,7 @@ function uploadAttachment(fileBuffer, uploadFormUrl, uploadFormData) {
form.append(key, value);
});
- form.append('file', fileBuffer, { filename: 'file' });
+ form.append("file", fileBuffer, { filename: "file" });
console.log(`Uploading attachment to ${uploadFormUrl}`);
@@ -23,7 +23,7 @@ function uploadAttachment(fileBuffer, uploadFormUrl, uploadFormData) {
.post(uploadFormUrl, form, {
headers: {
...form.getHeaders(),
- 'Content-Length': form.getLengthSync(),
+ "Content-Length": form.getLengthSync(),
},
})
.then((res) => {
@@ -32,7 +32,7 @@ function uploadAttachment(fileBuffer, uploadFormUrl, uploadFormData) {
.catch((err) => {
console.log(
`There was an error uploading the file: %s`,
- err.response ? err.response.data : err
+ err.response ? err.response.data : err,
);
});
}
diff --git a/_snippets/typescript-sdk/add-customer-to-group-response.mdx b/_snippets/typescript-sdk/add-customer-to-group-response.mdx
index 0a35628..878207a 100644
--- a/_snippets/typescript-sdk/add-customer-to-group-response.mdx
+++ b/_snippets/typescript-sdk/add-customer-to-group-response.mdx
@@ -1,57 +1,57 @@
```js
[
{
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
createdAt: {
- __typename: 'DateTime',
- iso8601: '2023-06-21T14:20:12.014Z',
- unixTimestamp: '1687357212014',
+ __typename: "DateTime",
+ iso8601: "2023-06-21T14:20:12.014Z",
+ unixTimestamp: "1687357212014",
},
createdBy: {
- __typename: 'MachineUserActor',
- machineUserId: 'mu_01H1P0P0PHA2BJRRS7EC02XKCF',
+ __typename: "MachineUserActor",
+ machineUserId: "mu_01H1P0P0PHA2BJRRS7EC02XKCF",
},
updatedAt: {
- __typename: 'DateTime',
- iso8601: '2023-06-21T14:20:12.014Z',
- unixTimestamp: '1687357212014',
+ __typename: "DateTime",
+ iso8601: "2023-06-21T14:20:12.014Z",
+ unixTimestamp: "1687357212014",
},
updatedBy: {
- __typename: 'MachineUserActor',
- machineUserId: 'mu_01H1P0P0PHA2BJRRS7EC02XKCF',
+ __typename: "MachineUserActor",
+ machineUserId: "mu_01H1P0P0PHA2BJRRS7EC02XKCF",
},
customerGroup: {
- id: 'cg_01H1P1RK22WTVMFRY8BX6S6VJX',
- name: 'free tier',
- key: 'free-tier',
- color: '#E78450',
+ id: "cg_01H1P1RK22WTVMFRY8BX6S6VJX",
+ name: "free tier",
+ key: "free-tier",
+ color: "#E78450",
},
},
{
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
createdAt: {
- __typename: 'DateTime',
- iso8601: '2023-06-21T14:20:12.014Z',
- unixTimestamp: '1687357212014',
+ __typename: "DateTime",
+ iso8601: "2023-06-21T14:20:12.014Z",
+ unixTimestamp: "1687357212014",
},
createdBy: {
- __typename: 'MachineUserActor',
- machineUserId: 'mu_01H1P0P0PHA2BJRRS7EC02XKCF',
+ __typename: "MachineUserActor",
+ machineUserId: "mu_01H1P0P0PHA2BJRRS7EC02XKCF",
},
updatedAt: {
- __typename: 'DateTime',
- iso8601: '2023-06-21T14:20:12.014Z',
- unixTimestamp: '1687357212014',
+ __typename: "DateTime",
+ iso8601: "2023-06-21T14:20:12.014Z",
+ unixTimestamp: "1687357212014",
},
updatedBy: {
- __typename: 'MachineUserActor',
- machineUserId: 'mu_01H1P0P0PHA2BJRRS7EC02XKCF',
+ __typename: "MachineUserActor",
+ machineUserId: "mu_01H1P0P0PHA2BJRRS7EC02XKCF",
},
customerGroup: {
- id: 'cg_01H1P1S2HD9PERNNS591ZT28ZZ',
- name: 'design partner',
- key: 'design-partner',
- color: '#FBBF24',
+ id: "cg_01H1P1S2HD9PERNNS591ZT28ZZ",
+ name: "design partner",
+ key: "design-partner",
+ color: "#FBBF24",
},
},
];
diff --git a/_snippets/typescript-sdk/add-customer-to-group.mdx b/_snippets/typescript-sdk/add-customer-to-group.mdx
index e53328f..59a6889 100644
--- a/_snippets/typescript-sdk/add-customer-to-group.mdx
+++ b/_snippets/typescript-sdk/add-customer-to-group.mdx
@@ -1,16 +1,16 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
const res = await client.addCustomerToCustomerGroups({
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
customerGroupIdentifiers: [
{
- customerGroupKey: 'free-tier',
+ customerGroupKey: "free-tier",
},
{
- customerGroupKey: 'design-partner',
+ customerGroupKey: "design-partner",
},
],
});
diff --git a/_snippets/typescript-sdk/add-labels.mdx b/_snippets/typescript-sdk/add-labels.mdx
index 2e0899d..0ae8af5 100644
--- a/_snippets/typescript-sdk/add-labels.mdx
+++ b/_snippets/typescript-sdk/add-labels.mdx
@@ -1,11 +1,11 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
const res = await client.addLabels({
- labelTypeIds: ['lt_01HB8BTNVM7GEBKBEDNC2K8ST7'],
- threadId: 'th_01HD1G6649R1DK061W27VBT7QB',
+ labelTypeIds: ["lt_01HB8BTNVM7GEBKBEDNC2K8ST7"],
+ threadId: "th_01HD1G6649R1DK061W27VBT7QB",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/assign-thread.mdx b/_snippets/typescript-sdk/assign-thread.mdx
index 41552b0..99e1ca7 100644
--- a/_snippets/typescript-sdk/assign-thread.mdx
+++ b/_snippets/typescript-sdk/assign-thread.mdx
@@ -1,13 +1,13 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.assignThread({
- threadId: 'th_01H8H46YPB2S4MAJM382FG9423',
- userId: 'u_01FSVKMHFDHJ3H5XFM20EMCBQN',
+ threadId: "th_01H8H46YPB2S4MAJM382FG9423",
+ userId: "u_01FSVKMHFDHJ3H5XFM20EMCBQN",
// You could instead assign to a machine user by doing:
// machineUserId: 'XXX'
diff --git a/_snippets/typescript-sdk/create-attachment-url-response.mdx b/_snippets/typescript-sdk/create-attachment-url-response.mdx
index 06fb69c..5dd62db 100644
--- a/_snippets/typescript-sdk/create-attachment-url-response.mdx
+++ b/_snippets/typescript-sdk/create-attachment-url-response.mdx
@@ -5,7 +5,11 @@
"__typename": "Attachment",
"id": "att_01H3970W7XG1716AVNGQ6FWYGD",
"fileName": "the-filename.jpeg",
- "fileSize": { "__typename": "FileSize", "kiloBytes": 32.32, "megaBytes": 0.03 },
+ "fileSize": {
+ "__typename": "FileSize",
+ "kiloBytes": 32.32,
+ "megaBytes": 0.03
+ },
"fileExtension": null,
"updatedAt": {
"__typename": "DateTime",
diff --git a/_snippets/typescript-sdk/create-attachment-url.mdx b/_snippets/typescript-sdk/create-attachment-url.mdx
index f89b496..3d8d277 100644
--- a/_snippets/typescript-sdk/create-attachment-url.mdx
+++ b/_snippets/typescript-sdk/create-attachment-url.mdx
@@ -1,11 +1,11 @@
```ts /c_XXXXXXXXXXXXXXXXXXXXXXXXXX/
-import { AttachmentType, PlainClient } from '@team-plain/typescript-sdk';
+import { AttachmentType, PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'XXX' });
+const client = new PlainClient({ apiKey: "XXX" });
const res = await client.createAttachmentUploadUrl({
- customerId: 'c_XXXXXXXXXXXXXXXXXXXXXXXXXX',
- fileName: 'the-filename.jpeg',
+ customerId: "c_XXXXXXXXXXXXXXXXXXXXXXXXXX",
+ fileName: "the-filename.jpeg",
fileSizeBytes: 32318,
attachmentType: AttachmentType.CustomTimelineEntry,
});
@@ -13,7 +13,7 @@ const res = await client.createAttachmentUploadUrl({
if (res.error) {
console.error(res.error);
} else {
- console.log('Attachment upload url created');
+ console.log("Attachment upload url created");
console.log(res.data);
}
```
diff --git a/_snippets/typescript-sdk/create-customer-event.mdx b/_snippets/typescript-sdk/create-customer-event.mdx
index da5c4cb..ec28252 100644
--- a/_snippets/typescript-sdk/create-customer-event.mdx
+++ b/_snippets/typescript-sdk/create-customer-event.mdx
@@ -1,17 +1,17 @@
```tsx
-import { PlainClient, uiComponent } from '@team-plain/typescript-sdk';
+import { PlainClient, uiComponent } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
debug: true,
});
const res = await client.createCustomerEvent({
- title: 'API key generated',
+ title: "API key generated",
customerIdentifier: {
// You can use the email:
- email: 'jane@acme.com',
+ email: "jane@acme.com",
// ...or if you set external id on customers:
// externalId: 'YOUR_ID',
@@ -22,14 +22,14 @@ const res = await client.createCustomerEvent({
components: [
uiComponent.text({
- text: 'New API key was added with the fingerprint **3b7896975ee9fd15eeb7** with 4 associated roles.',
+ text: "New API key was added with the fingerprint **3b7896975ee9fd15eeb7** with 4 associated roles.",
}),
uiComponent.spacer({
- size: 'M',
+ size: "M",
}),
uiComponent.linkButton({
- label: 'View in admin',
- url: 'https://admin.your-app.com',
+ label: "View in admin",
+ url: "https://admin.your-app.com",
}),
],
@@ -37,11 +37,11 @@ const res = await client.createCustomerEvent({
// be created once and fail on the second time. This external id acts
// as an idempotency key while also letting you correlate an event to
// something your systems.
- externalId: 'XXX',
+ externalId: "XXX",
// Optional - if provided then the event will only be shown
// in a single thread vs all threads from a customer
- threadId: 'th_01HB924RWAW8H3Q8KZDFWYBJHZ',
+ threadId: "th_01HB924RWAW8H3Q8KZDFWYBJHZ",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/create-thread.mdx b/_snippets/typescript-sdk/create-thread.mdx
index fb718e7..203a3d8 100644
--- a/_snippets/typescript-sdk/create-thread.mdx
+++ b/_snippets/typescript-sdk/create-thread.mdx
@@ -1,16 +1,16 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
debug: true,
});
const res = await client.createThread({
- title: 'Bug Report',
+ title: "Bug Report",
customerIdentifier: {
// You can use the email:
- email: 'jane@acme.com',
+ email: "jane@acme.com",
// ...or if you set external id on customers:
// externalId: '',
@@ -27,7 +27,7 @@ const res = await client.createThread({
],
// Label types are created in settings where you can also copy
// their ID.
- labelTypeIds: ['lt_01HB924PME9C0YWKW1N4AK3BZA'],
+ labelTypeIds: ["lt_01HB924PME9C0YWKW1N4AK3BZA"],
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/delete-customer.mdx b/_snippets/typescript-sdk/delete-customer.mdx
index 8ead1e5..ffef4af 100644
--- a/_snippets/typescript-sdk/delete-customer.mdx
+++ b/_snippets/typescript-sdk/delete-customer.mdx
@@ -1,12 +1,12 @@
```tsx
-import { PlainClient } from '../client';
+import { PlainClient } from "../client";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.deleteCustomer({
- customerId: 'c_01H1P4TE62AS5KZ4CZFC0578ED',
+ customerId: "c_01H1P4TE62AS5KZ4CZFC0578ED",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/error-handling.mdx b/_snippets/typescript-sdk/error-handling.mdx
index cb95f34..33c69d3 100644
--- a/_snippets/typescript-sdk/error-handling.mdx
+++ b/_snippets/typescript-sdk/error-handling.mdx
@@ -1,17 +1,17 @@
```tsx {21}
-import { PlainClient } from '../client';
+import { PlainClient } from "../client";
export async function createCustomer() {
- const client = new PlainClient({ apiKey: 'XXX' });
+ const client = new PlainClient({ apiKey: "XXX" });
const res = await client.upsertCustomer({
identifier: {
- emailAddress: 'jane@gmail.com',
+ emailAddress: "jane@gmail.com",
},
onCreate: {
- fullName: 'Jane Fargate',
+ fullName: "Jane Fargate",
email: {
- email: 'jane@gmail.com',
+ email: "jane@gmail.com",
isVerified: true,
},
},
diff --git a/_snippets/typescript-sdk/first-api-call.mdx b/_snippets/typescript-sdk/first-api-call.mdx
index 30ff6be..cd102fa 100644
--- a/_snippets/typescript-sdk/first-api-call.mdx
+++ b/_snippets/typescript-sdk/first-api-call.mdx
@@ -1,8 +1,8 @@
```ts filename="script.js" {3-4}
-const { PlainClient } = require('@team-plain/typescript-sdk');
+const { PlainClient } = require("@team-plain/typescript-sdk");
-const apiKey = 'XXX';
-const email = 'XXX';
+const apiKey = "XXX";
+const email = "XXX";
const client = new PlainClient({
apiKey: apiKey,
diff --git a/_snippets/typescript-sdk/get-customer-by-email.mdx b/_snippets/typescript-sdk/get-customer-by-email.mdx
index 5253d73..e170ea5 100644
--- a/_snippets/typescript-sdk/get-customer-by-email.mdx
+++ b/_snippets/typescript-sdk/get-customer-by-email.mdx
@@ -1,9 +1,9 @@
```tsx
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
-const res = await client.getCustomerByEmail({ email: 'bob@example.com' });
+const res = await client.getCustomerByEmail({ email: "bob@example.com" });
if (res.error) {
console.error(res.error);
diff --git a/_snippets/typescript-sdk/get-customer-by-id.mdx b/_snippets/typescript-sdk/get-customer-by-id.mdx
index 8de87c3..415e4f5 100644
--- a/_snippets/typescript-sdk/get-customer-by-id.mdx
+++ b/_snippets/typescript-sdk/get-customer-by-id.mdx
@@ -1,9 +1,11 @@
```tsx
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
-const res = await client.getCustomerById({ customerId: 'c_01H14DFQ4PDYBH398J1E99TWSS' });
+const res = await client.getCustomerById({
+ customerId: "c_01H14DFQ4PDYBH398J1E99TWSS",
+});
if (res.error) {
console.error(res.error);
diff --git a/_snippets/typescript-sdk/get-customers.mdx b/_snippets/typescript-sdk/get-customers.mdx
index b6b8c65..bcca6f3 100644
--- a/_snippets/typescript-sdk/get-customers.mdx
+++ b/_snippets/typescript-sdk/get-customers.mdx
@@ -1,6 +1,6 @@
```tsx
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.getCustomers({
diff --git a/_snippets/typescript-sdk/mark-thread-as-done.mdx b/_snippets/typescript-sdk/mark-thread-as-done.mdx
index b49caea..34a85ee 100644
--- a/_snippets/typescript-sdk/mark-thread-as-done.mdx
+++ b/_snippets/typescript-sdk/mark-thread-as-done.mdx
@@ -1,12 +1,12 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.markThreadAsDone({
- threadId: 'th_01HB924RWAW8H3Q8KZDFWYBJHZ',
+ threadId: "th_01HB924RWAW8H3Q8KZDFWYBJHZ",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/mark-thread-as-todo.mdx b/_snippets/typescript-sdk/mark-thread-as-todo.mdx
index be8488f..aeda948 100644
--- a/_snippets/typescript-sdk/mark-thread-as-todo.mdx
+++ b/_snippets/typescript-sdk/mark-thread-as-todo.mdx
@@ -1,12 +1,12 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.markThreadAsTodo({
- threadId: 'th_01HB924RWAW8H3Q8KZDFWYBJHZ',
+ threadId: "th_01HB924RWAW8H3Q8KZDFWYBJHZ",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/page-info-after.mdx b/_snippets/typescript-sdk/page-info-after.mdx
index 4e0951c..882aa12 100644
--- a/_snippets/typescript-sdk/page-info-after.mdx
+++ b/_snippets/typescript-sdk/page-info-after.mdx
@@ -1,8 +1,8 @@
```tsx
-import { PlainClient } from '../client';
+import { PlainClient } from "../client";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const firstPage = client.getCustomers({});
@@ -11,6 +11,9 @@ if (firstPage.error) {
console.error(firstPage.error);
} else {
const { pageInfo } = firstPage.data;
- const secondPage = await client.getCustomers({ after: pageInfo.endCursor, first: 50 });
+ const secondPage = await client.getCustomers({
+ after: pageInfo.endCursor,
+ first: 50,
+ });
}
```
diff --git a/_snippets/typescript-sdk/remove-customer-from-groups.mdx b/_snippets/typescript-sdk/remove-customer-from-groups.mdx
index 3b1bbb4..c05dcce 100644
--- a/_snippets/typescript-sdk/remove-customer-from-groups.mdx
+++ b/_snippets/typescript-sdk/remove-customer-from-groups.mdx
@@ -1,18 +1,18 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'plainApiKey_rO6tIKWU2w0gD_ek9HwjsHMiq1MHsgAn7mhVrcC7MGw',
+ apiKey: "plainApiKey_rO6tIKWU2w0gD_ek9HwjsHMiq1MHsgAn7mhVrcC7MGw",
});
const res = await client.removeCustomerFromCustomerGroups({
- customerId: 'c_01H1P4TE62AS5KZ4CZFC0578ED',
+ customerId: "c_01H1P4TE62AS5KZ4CZFC0578ED",
customerGroupIdentifiers: [
{
- customerGroupKey: 'free-tier',
+ customerGroupKey: "free-tier",
},
{
- customerGroupKey: 'design-partner',
+ customerGroupKey: "design-partner",
},
],
});
diff --git a/_snippets/typescript-sdk/remove-labels.mdx b/_snippets/typescript-sdk/remove-labels.mdx
index f08eabc..f38d6b0 100644
--- a/_snippets/typescript-sdk/remove-labels.mdx
+++ b/_snippets/typescript-sdk/remove-labels.mdx
@@ -1,9 +1,11 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
-const res = await client.removeLabels({ labelIds: ['l_01HD428Y1TREH5KTXP019K6FPK'] });
+const res = await client.removeLabels({
+ labelIds: ["l_01HD428Y1TREH5KTXP019K6FPK"],
+});
if (res.error) {
console.error(res.error);
diff --git a/_snippets/typescript-sdk/reply-email.mdx b/_snippets/typescript-sdk/reply-email.mdx
index 855f905..bcab140 100644
--- a/_snippets/typescript-sdk/reply-email.mdx
+++ b/_snippets/typescript-sdk/reply-email.mdx
@@ -1,13 +1,13 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
client.replyToEmail({
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
- inReplyToEmailId: 'em_01GM2X8K7D3RZ7ZFGHZ2AYG3SA',
- textContent: 'The plain text version of your reply goes here.',
- markdownContent: 'The markdown **version** of your _reply_ goes here.',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
+ inReplyToEmailId: "em_01GM2X8K7D3RZ7ZFGHZ2AYG3SA",
+ textContent: "The plain text version of your reply goes here.",
+ markdownContent: "The markdown **version** of your _reply_ goes here.",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/send-email.mdx b/_snippets/typescript-sdk/send-email.mdx
index 84ee825..8a35966 100644
--- a/_snippets/typescript-sdk/send-email.mdx
+++ b/_snippets/typescript-sdk/send-email.mdx
@@ -1,14 +1,14 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
client.sendNewEmail({
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
- threadId: 'th_01HD44FHMCDSSWE38N14FSYV6K',
- subject: 'Your account has a problem',
- textContent: 'The plain text version of your email goes here.',
- markdownContent: 'The markdown **version** of your _email_ goes here.',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
+ threadId: "th_01HD44FHMCDSSWE38N14FSYV6K",
+ subject: "Your account has a problem",
+ textContent: "The plain text version of your email goes here.",
+ markdownContent: "The markdown **version** of your _email_ goes here.",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/snooze-thread.mdx b/_snippets/typescript-sdk/snooze-thread.mdx
index 562c41d..ce4c1dd 100644
--- a/_snippets/typescript-sdk/snooze-thread.mdx
+++ b/_snippets/typescript-sdk/snooze-thread.mdx
@@ -1,12 +1,12 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.snoozeThread({
- threadId: 'th_01HB924RWAW8H3Q8KZDFWYBJHZ',
+ threadId: "th_01HB924RWAW8H3Q8KZDFWYBJHZ",
durationSeconds: 5 * 24 * 60 * 60, // 5 days
});
diff --git a/_snippets/typescript-sdk/ui-badge.mdx b/_snippets/typescript-sdk/ui-badge.mdx
index 7a99f34..e9f5e25 100644
--- a/_snippets/typescript-sdk/ui-badge.mdx
+++ b/_snippets/typescript-sdk/ui-badge.mdx
@@ -1,5 +1,5 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
-uiComponent.badge({ label: 'Subscribed', color: 'GREEN' });
+uiComponent.badge({ label: "Subscribed", color: "GREEN" });
```
diff --git a/_snippets/typescript-sdk/ui-container.mdx b/_snippets/typescript-sdk/ui-container.mdx
index d11ca4f..6ca6cbe 100644
--- a/_snippets/typescript-sdk/ui-container.mdx
+++ b/_snippets/typescript-sdk/ui-container.mdx
@@ -1,7 +1,7 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
uiComponent.container({
- content: [uiComponent.text({ text: 'Container content' })],
+ content: [uiComponent.text({ text: "Container content" })],
});
```
diff --git a/_snippets/typescript-sdk/ui-copy-button.mdx b/_snippets/typescript-sdk/ui-copy-button.mdx
index 60b36cb..36aeeec 100644
--- a/_snippets/typescript-sdk/ui-copy-button.mdx
+++ b/_snippets/typescript-sdk/ui-copy-button.mdx
@@ -1,8 +1,8 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
uiComponent.copyButton({
- value: '2a8f2dae-3580-402b-aa0a-243efae55e39',
- tooltip: 'Order ID',
+ value: "2a8f2dae-3580-402b-aa0a-243efae55e39",
+ tooltip: "Order ID",
});
```
diff --git a/_snippets/typescript-sdk/ui-divider.mdx b/_snippets/typescript-sdk/ui-divider.mdx
index f79ac81..5f65873 100644
--- a/_snippets/typescript-sdk/ui-divider.mdx
+++ b/_snippets/typescript-sdk/ui-divider.mdx
@@ -1,9 +1,9 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
[
- uiComponent.text({ text: 'Content before an XS divider' }),
- uiComponent.divider({ spacingSize: 'XS' }),
- uiComponent.text({ text: 'Content after divider' }),
+ uiComponent.text({ text: "Content before an XS divider" }),
+ uiComponent.divider({ spacingSize: "XS" }),
+ uiComponent.text({ text: "Content after divider" }),
];
```
diff --git a/_snippets/typescript-sdk/ui-link-button.mdx b/_snippets/typescript-sdk/ui-link-button.mdx
index 3a068bf..b427cbf 100644
--- a/_snippets/typescript-sdk/ui-link-button.mdx
+++ b/_snippets/typescript-sdk/ui-link-button.mdx
@@ -1,8 +1,8 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
uiComponent.linkButton({
- label: 'Open in Admin Portal',
- url: 'https://example.com',
+ label: "Open in Admin Portal",
+ url: "https://example.com",
});
```
diff --git a/_snippets/typescript-sdk/ui-plain-text.mdx b/_snippets/typescript-sdk/ui-plain-text.mdx
index 6e87106..bd191ba 100644
--- a/_snippets/typescript-sdk/ui-plain-text.mdx
+++ b/_snippets/typescript-sdk/ui-plain-text.mdx
@@ -1,21 +1,21 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
[
- uiComponent.plainText({ text: 'Small text', size: 'S' }),
+ uiComponent.plainText({ text: "Small text", size: "S" }),
- uiComponent.plainText({ text: 'Medium text', size: 'M' }),
+ uiComponent.plainText({ text: "Medium text", size: "M" }),
- uiComponent.plainText({ text: 'Large text', size: 'L' }),
+ uiComponent.plainText({ text: "Large text", size: "L" }),
- uiComponent.plainText({ text: 'Normal text', color: 'NORMAL' }),
+ uiComponent.plainText({ text: "Normal text", color: "NORMAL" }),
- uiComponent.plainText({ text: 'Muted text', color: 'MUTED' }),
+ uiComponent.plainText({ text: "Muted text", color: "MUTED" }),
- uiComponent.plainText({ text: 'Success text', color: 'SUCCESS' }),
+ uiComponent.plainText({ text: "Success text", color: "SUCCESS" }),
- uiComponent.plainText({ text: 'Warning text', color: 'WARNING' }),
+ uiComponent.plainText({ text: "Warning text", color: "WARNING" }),
- uiComponent.plainText({ text: 'Error text', color: 'ERROR' }),
+ uiComponent.plainText({ text: "Error text", color: "ERROR" }),
];
```
diff --git a/_snippets/typescript-sdk/ui-row.mdx b/_snippets/typescript-sdk/ui-row.mdx
index d8b64f2..bf2cc29 100644
--- a/_snippets/typescript-sdk/ui-row.mdx
+++ b/_snippets/typescript-sdk/ui-row.mdx
@@ -1,8 +1,8 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
uiComponent.row({
- mainContent: [uiComponent.text({ text: 'Membership' })],
- asideContent: [uiComponent.badge({ label: 'Premium plan', color: 'BLUE' })],
+ mainContent: [uiComponent.text({ text: "Membership" })],
+ asideContent: [uiComponent.badge({ label: "Premium plan", color: "BLUE" })],
});
```
diff --git a/_snippets/typescript-sdk/ui-spacer.mdx b/_snippets/typescript-sdk/ui-spacer.mdx
index 59ba5dd..b125062 100644
--- a/_snippets/typescript-sdk/ui-spacer.mdx
+++ b/_snippets/typescript-sdk/ui-spacer.mdx
@@ -1,9 +1,9 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
[
- uiComponent.text({ text: 'Content before an XS spacer' }),
- uiComponent.spacer({ spacingSize: 'XS' }),
- uiComponent.text({ text: 'Content after spacer' }),
+ uiComponent.text({ text: "Content before an XS spacer" }),
+ uiComponent.spacer({ spacingSize: "XS" }),
+ uiComponent.text({ text: "Content after spacer" }),
];
```
diff --git a/_snippets/typescript-sdk/ui-text.mdx b/_snippets/typescript-sdk/ui-text.mdx
index 94fe86a..9f504ca 100644
--- a/_snippets/typescript-sdk/ui-text.mdx
+++ b/_snippets/typescript-sdk/ui-text.mdx
@@ -1,25 +1,25 @@
```tsx
-import { uiComponent } from '@team-plain/typescript-sdk';
+import { uiComponent } from "@team-plain/typescript-sdk";
[
uiComponent.text({
- text: 'The **quick** brown fox _jumps_ over the [lazy link](https://plain.com)',
+ text: "The **quick** brown fox _jumps_ over the [lazy link](https://plain.com)",
}),
- uiComponent.text({ text: 'Small text', size: 'S' }),
+ uiComponent.text({ text: "Small text", size: "S" }),
- uiComponent.text({ text: 'Medium text', size: 'M' }),
+ uiComponent.text({ text: "Medium text", size: "M" }),
- uiComponent.text({ text: 'Large text', size: 'L' }),
+ uiComponent.text({ text: "Large text", size: "L" }),
- uiComponent.text({ text: 'Normal text', color: 'NORMAL' }),
+ uiComponent.text({ text: "Normal text", color: "NORMAL" }),
- uiComponent.text({ text: 'Muted text', color: 'MUTED' }),
+ uiComponent.text({ text: "Muted text", color: "MUTED" }),
- uiComponent.text({ text: 'Success text', color: 'SUCCESS' }),
+ uiComponent.text({ text: "Success text", color: "SUCCESS" }),
- uiComponent.text({ text: 'Warning text', color: 'WARNING' }),
+ uiComponent.text({ text: "Warning text", color: "WARNING" }),
- uiComponent.text({ text: 'Error text', color: 'ERROR' }),
+ uiComponent.text({ text: "Error text", color: "ERROR" }),
];
```
diff --git a/_snippets/typescript-sdk/unassign-thread.mdx b/_snippets/typescript-sdk/unassign-thread.mdx
index 28f0152..25db9a3 100644
--- a/_snippets/typescript-sdk/unassign-thread.mdx
+++ b/_snippets/typescript-sdk/unassign-thread.mdx
@@ -1,12 +1,12 @@
```tsx
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
});
const res = await client.unassignThread({
- threadId: 'th_01H8H46YPB2S4MAJM382FG9423',
+ threadId: "th_01H8H46YPB2S4MAJM382FG9423",
});
if (res.error) {
diff --git a/_snippets/typescript-sdk/upsert-customer-response.mdx b/_snippets/typescript-sdk/upsert-customer-response.mdx
index 751273e..ac2620d 100644
--- a/_snippets/typescript-sdk/upsert-customer-response.mdx
+++ b/_snippets/typescript-sdk/upsert-customer-response.mdx
@@ -7,7 +7,11 @@
"fullName": "Donald Duck",
"shortName": "Donald",
"externalId": "c_123",
- "email": { "email": "donald@example.com", "isVerified": false, "verifiedAt": null },
+ "email": {
+ "email": "donald@example.com",
+ "isVerified": false,
+ "verifiedAt": null
+ },
"status": "IDLE",
"statusChangedAt": {
"__typename": "DateTime",
diff --git a/_snippets/typescript-sdk/upsert-customer.mdx b/_snippets/typescript-sdk/upsert-customer.mdx
index 5b4d7c9..6f56642 100644
--- a/_snippets/typescript-sdk/upsert-customer.mdx
+++ b/_snippets/typescript-sdk/upsert-customer.mdx
@@ -1,32 +1,32 @@
```ts
-import { PlainClient } from '@team-plain/typescript-sdk';
+import { PlainClient } from "@team-plain/typescript-sdk";
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
const res = await client.upsertCustomer({
identifier: {
- emailAddress: 'donald@example.com',
+ emailAddress: "donald@example.com",
},
// If the customer is not found and should be created then
// these details will be used:
onCreate: {
- fullName: 'Donald Duck',
- shortName: 'Donald',
+ fullName: "Donald Duck",
+ shortName: "Donald",
email: {
- email: 'donald@example.com',
+ email: "donald@example.com",
isVerified: true,
},
// This is the id of the customer in your own backend.
// Filling this out makes it easy to link customers in Plain
// back to customer in your own systems.
- externalId: 'c_123',
+ externalId: "c_123",
// This is optional but if you want to put a customer into a group
// on creation, this is how you do it.
customerGroupIdentifiers: [
{
- customerGroupKey: 'enterprise',
+ customerGroupKey: "enterprise",
},
],
},
@@ -35,17 +35,17 @@ const res = await client.upsertCustomer({
// just providing some of the fields below.
onUpdate: {
fullName: {
- value: 'Donald Duck',
+ value: "Donald Duck",
},
shortName: {
- value: 'Donald',
+ value: "Donald",
},
email: {
- email: 'donald@example.com',
+ email: "donald@example.com",
isVerified: true,
},
externalId: {
- value: 'c_123',
+ value: "c_123",
},
},
});
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..55287cc
--- /dev/null
+++ b/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "@team-plain/docs-mintlify",
+ "version": "1.0.0",
+ "description": "Documentation for plain.com",
+ "main": "index.js",
+ "engines": {
+ "node": "18.x",
+ "pnpm": "8.x"
+ },
+ "scripts": {
+ "dev": "mintlify dev",
+ "lint": "prettier --check './**/*.{js,ts,tsx,md,mdx}'"
+ },
+ "dependencies": {
+ "mintlify": "^4.0.58",
+ "prettier": "^3.1.0"
+ }
+}
diff --git a/pages/attachments.mdx b/pages/attachments.mdx
index 442df1d..c15ecfa 100644
--- a/pages/attachments.mdx
+++ b/pages/attachments.mdx
@@ -25,22 +25,23 @@ To try this, you will need an [API key](/graphql/authentication/) with the follo
+
```typescript
-import { AttachmentType, PlainClient } from '@team-plain/typescript-sdk';
-
-const client = new PlainClient({ apiKey: 'XXX' });
-
+import { AttachmentType, PlainClient } from "@team-plain/typescript-sdk";
+
+const client = new PlainClient({ apiKey: "XXX" });
+
const res = await client.createAttachmentUploadUrl({
- customerId: 'c_XXXXXXXXXXXXXXXXXXXXXXXXXX',
- fileName: 'the-filename.jpeg',
+ customerId: "c_XXXXXXXXXXXXXXXXXXXXXXXXXX",
+ fileName: "the-filename.jpeg",
fileSizeBytes: 32318,
attachmentType: AttachmentType.CustomTimelineEntry,
});
-
+
if (res.error) {
console.error(res.error);
} else {
- console.log('Attachment upload url created');
+ console.log("Attachment upload url created");
console.log(res.data);
}
```
@@ -54,7 +55,11 @@ if (res.error) {
"__typename": "Attachment",
"id": "att_01H3970W7XG1716AVNGQ6FWYGD",
"fileName": "the-filename.jpeg",
- "fileSize": { "__typename": "FileSize", "kiloBytes": 32.32, "megaBytes": 0.03 },
+ "fileSize": {
+ "__typename": "FileSize",
+ "kiloBytes": 32.32,
+ "megaBytes": 0.03
+ },
"fileExtension": null,
"updatedAt": {
"__typename": "DateTime",
@@ -101,6 +106,7 @@ if (res.error) {
}
}
```
+
@@ -144,6 +150,7 @@ Variables
}
}
```
+
```json Response
{
"data": {
@@ -193,6 +200,7 @@ Variables
+
In the `AttachmentUploadUrl` we created in the previous step we get back 2 fields which are needed to actually upload our attachment:
@@ -206,6 +214,7 @@ Variables
+
```typescript
/**
* Upload an attachment.
@@ -219,14 +228,14 @@ function uploadAttachment(fileBlob, uploadFormUrl, uploadFormData) {
uploadFormData.forEach(({ key, value }) => {
form.append(key, value);
});
-
- const file = new File([fileBlob], 'file');
- form.append('file', file);
-
+
+ const file = new File([fileBlob], "file");
+ form.append("file", file);
+
console.log(`Uploading attachment to ${uploadFormUrl}`);
-
+
fetch(uploadFormUrl, {
- method: 'POST',
+ method: "POST",
body: form,
})
.then((res) => {
@@ -236,16 +245,21 @@ function uploadAttachment(fileBlob, uploadFormUrl, uploadFormData) {
console.log(`File successfully uploaded! (code=${res.status})`);
})
.catch((err) => {
- console.log(`There was an error uploading the file: %s`, err.message ? err.message : err);
+ console.log(
+ `There was an error uploading the file: %s`,
+ err.message ? err.message : err,
+ );
});
}
```
+
+
```typescript
-const axios = require('axios');
-const FormData = require('form-data');
-
+const axios = require("axios");
+const FormData = require("form-data");
+
/**
* Upload an attachment.
*
@@ -258,16 +272,16 @@ function uploadAttachment(fileBuffer, uploadFormUrl, uploadFormData) {
uploadFormData.forEach(({ key, value }) => {
form.append(key, value);
});
-
- form.append('file', fileBuffer, { filename: 'file' });
-
+
+ form.append("file", fileBuffer, { filename: "file" });
+
console.log(`Uploading attachment to ${uploadFormUrl}`);
-
+
axios
.post(uploadFormUrl, form, {
headers: {
...form.getHeaders(),
- 'Content-Length': form.getLengthSync(),
+ "Content-Length": form.getLengthSync(),
},
})
.then((res) => {
@@ -276,17 +290,18 @@ function uploadAttachment(fileBuffer, uploadFormUrl, uploadFormData) {
.catch((err) => {
console.log(
`There was an error uploading the file: %s`,
- err.response ? err.response.data : err
+ err.response ? err.response.data : err,
);
});
}
```
+
+
-
## Limitations
- On emails and custom timeline entries:
diff --git a/pages/customer-cards/examples.mdx b/pages/customer-cards/examples.mdx
index cbf6476..dc7044c 100644
--- a/pages/customer-cards/examples.mdx
+++ b/pages/customer-cards/examples.mdx
@@ -2,4 +2,4 @@
title: "Examples"
icon: "link"
url: "https://github.com/team-plain/example-customer-cards"
----
\ No newline at end of file
+---
diff --git a/pages/email-setup.mdx b/pages/email-setup.mdx
index 6b4ea3d..607348b 100644
--- a/pages/email-setup.mdx
+++ b/pages/email-setup.mdx
@@ -5,10 +5,18 @@ title: "Setting up email"
Setting up email requires you to complete two steps:
-
-
-
-
+
+
If you follow this guide, bear in mind that:
diff --git a/pages/email-setup/receiving-emails.mdx b/pages/email-setup/receiving-emails.mdx
index 0acb027..650b353 100644
--- a/pages/email-setup/receiving-emails.mdx
+++ b/pages/email-setup/receiving-emails.mdx
@@ -1,6 +1,6 @@
-import { Callout, Steps } from 'nextra-theme-docs';
+import { Callout, Steps } from "nextra-theme-docs";
-import { ImageContainer } from '../../components/imageContainer';
+import { ImageContainer } from "../../components/imageContainer";
# Receiving emails in Plain
@@ -23,11 +23,13 @@ If your email provider is not Google, you can still set up email forwarding in d
Under "Default routing" click on "CONFIGURE" or "ADD ANOTHER RULE"
![Add new rule](/public/images/email-setup/email-setup-0.png)
+
In the dropdown, select "Single recipient" and write your **support email address** under "Email address"
![Add your support email address](/public/images/email-setup/email-setup-1.png)
+
@@ -35,15 +37,17 @@ If your email provider is not Google, you can still set up email forwarding in d
Choose "Replace recipient" and paste the inbound email address (`@inbound.postmarkapp.com`)
![Replace recipient](/public/images/email-setup/email-setup-2.png)
+
Scroll further down, and choose "Perform this action on non-recognised and recognised addresses"
- ![Apply to all addresses](/public/images/email-setup/email-setup-3.png)
+![Apply to all addresses](/public/images/email-setup/email-setup-3.png)
+
-
+
And That's it! 💅
diff --git a/pages/graphql.mdx b/pages/graphql.mdx
index ba122cf..6f2f29b 100644
--- a/pages/graphql.mdx
+++ b/pages/graphql.mdx
@@ -58,18 +58,12 @@ You will need an API key with the `customer:read` permission. See [authenticatio
- ```shell
- npm install @team-plain/typescript-sdk
- ```
+ ```shell npm install @team-plain/typescript-sdk ```
Make sure to replace the api key and email in the code
-
- ```shell
- node script.js
- ```
-
+ ```shell node script.js ```
diff --git a/pages/graphql/api-explorer.mdx b/pages/graphql/api-explorer.mdx
index 4bdd001..278ea5f 100644
--- a/pages/graphql/api-explorer.mdx
+++ b/pages/graphql/api-explorer.mdx
@@ -2,4 +2,4 @@
title: "API Explorer"
icon: "link"
url: "https://app.plain.com/developer/api-explorer/?workspaceId=w_01H3FZJ8MG74GFXA5WA3MPB446"
----
\ No newline at end of file
+---
diff --git a/pages/graphql/authentication.mdx b/pages/graphql/authentication.mdx
index 7bd1f32..919f584 100644
--- a/pages/graphql/authentication.mdx
+++ b/pages/graphql/authentication.mdx
@@ -13,6 +13,7 @@ Machine Users can have multiple API Keys to make it easy to rotate keys. Every A
- **Name:** This is just visible to you and could indicate the usage e.g. "Autoresponder"
- **Public name:** This is the name visible to customers (if the Machine User interacts with customers) e.g. "Mr Robot"
+
Click "Add API Key" and select the permissions you need. When making API calls, if you have insufficient permissions, the error should tell you which permissions you need.
@@ -20,6 +21,7 @@ Click "Add API Key" and select the permissions you need. When making API calls,
The relevant documentation will tell you which permissions are required for each feature.
Once you've made an API key you should copy it and put it somewhere safe, as you will not be able to see it again once you navigate away.
+
That's it! Now that you have an API key you can use this with our SDKs or within any API call as a header:
@@ -27,5 +29,6 @@ That's it! Now that you have an API key you can use this with our SDKs or within
```text
Authorization: Bearer plainApiKey_xxx
```
+
-
\ No newline at end of file
+
diff --git a/pages/graphql/customers/customer-groups.mdx b/pages/graphql/customers/customer-groups.mdx
index cbe5ba3..6544476 100644
--- a/pages/graphql/customers/customer-groups.mdx
+++ b/pages/graphql/customers/customer-groups.mdx
@@ -23,23 +23,24 @@ This operation requires the following permissions:
+
```typescript
-import { PlainClient } from '@team-plain/typescript-sdk';
-
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
-
+import { PlainClient } from "@team-plain/typescript-sdk";
+
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
+
const res = await client.addCustomerToCustomerGroups({
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
customerGroupIdentifiers: [
{
- customerGroupKey: 'free-tier',
+ customerGroupKey: "free-tier",
},
{
- customerGroupKey: 'design-partner',
+ customerGroupKey: "design-partner",
},
],
});
-
+
if (res.error) {
console.error(res.error);
} else {
@@ -48,6 +49,7 @@ if (res.error) {
```
Running the above would console.log:
+
```scheme
[
{
@@ -152,7 +154,6 @@ mutation addCustomerToCustomerGroup($input: AddCustomerToCustomerGroupsInput!) {
}
```
-
If you prefer you can also use the customer group id instead of the key. You can do this like so:
```json Variables
@@ -205,25 +206,26 @@ A customer can be removed from a customer group by using the `removeCustomerFrom
+
```typescript
-import { PlainClient } from '@team-plain/typescript-sdk';
-
+import { PlainClient } from "@team-plain/typescript-sdk";
+
const client = new PlainClient({
- apiKey: 'plainApiKey_rO6tIKWU2w0gD_ek9HwjsHMiq1MHsgAn7mhVrcC7MGw',
+ apiKey: "plainApiKey_rO6tIKWU2w0gD_ek9HwjsHMiq1MHsgAn7mhVrcC7MGw",
});
-
+
const res = await client.removeCustomerFromCustomerGroups({
- customerId: 'c_01H1P4TE62AS5KZ4CZFC0578ED',
+ customerId: "c_01H1P4TE62AS5KZ4CZFC0578ED",
customerGroupIdentifiers: [
{
- customerGroupKey: 'free-tier',
+ customerGroupKey: "free-tier",
},
{
- customerGroupKey: 'design-partner',
+ customerGroupKey: "design-partner",
},
],
});
-
+
if (res.error) {
console.error(res.error);
} else {
@@ -235,8 +237,11 @@ if (res.error) {
+
```graphql Mutation
-mutation removeCustomerFromCustomerGroup($input: RemoveCustomerFromCustomerGroupsInput!) {
+mutation removeCustomerFromCustomerGroup(
+ $input: RemoveCustomerFromCustomerGroupsInput!
+) {
removeCustomerFromCustomerGroups(input: $input) {
error {
message
diff --git a/pages/graphql/customers/delete.mdx b/pages/graphql/customers/delete.mdx
index 1ea008e..24f715a 100644
--- a/pages/graphql/customers/delete.mdx
+++ b/pages/graphql/customers/delete.mdx
@@ -1,6 +1,6 @@
-import DeleteCustomerTypescriptSDK from '../../../snippets/typescript-sdk/delete-customer.mdx';
-import DeleteCustomerGraphQL from '../../../snippets/graphql/delete-customer.mdx';
-import { Tab, Tabs } from 'nextra-theme-docs';
+import DeleteCustomerTypescriptSDK from "../../../snippets/typescript-sdk/delete-customer.mdx";
+import DeleteCustomerGraphQL from "../../../snippets/graphql/delete-customer.mdx";
+import { Tab, Tabs } from "nextra-theme-docs";
# Delete customers
@@ -36,6 +36,7 @@ if (res.error) {
+
```grapql Mutation
mutation deleteCustomer($input: DeleteCustomerInput!) {
deleteCustomer(input: $input) {
@@ -61,6 +62,7 @@ mutation deleteCustomer($input: DeleteCustomerInput!) {
}
}
```
+
diff --git a/pages/graphql/customers/get.mdx b/pages/graphql/customers/get.mdx
index 01e9183..01cf9b6 100644
--- a/pages/graphql/customers/get.mdx
+++ b/pages/graphql/customers/get.mdx
@@ -40,6 +40,7 @@ if (res.error) {
+
```graphql Query
query getCustomers($cursor: String!) {
customers(
@@ -79,6 +80,7 @@ query getCustomers($cursor: String!) {
"cursor": "eyJjdXN0b21lcnMuZnVsbF9uYW1lIjoiQWlkYSBTY2hpbm5lciIsImN1c3RvbWVycy5pZCI6ImNfMDFHMThFU01TWkdUWTQwU1pITk03M0hBQkIifQ=="
}
```
+
@@ -105,6 +107,7 @@ if (res.error) {
+
```graphql Query
query getCustomerById($customerId: ID!) {
customer(customerId: $customerId) {
@@ -128,6 +131,7 @@ query getCustomerById($customerId: ID!) {
"customerId": "c_01H14DFQ4PDYBH398J1E99TWSS"
}
```
+
@@ -154,6 +158,7 @@ if (res.error) {
+
```graphql Query
query getCustomerByEmail($email: String!) {
customerByEmail(email: $email) {
@@ -177,6 +182,7 @@ query getCustomerByEmail($email: String!) {
"email": "bob@example.com"
}
```
+
diff --git a/pages/graphql/customers/upsert.mdx b/pages/graphql/customers/upsert.mdx
index d62d95a..02662c2 100644
--- a/pages/graphql/customers/upsert.mdx
+++ b/pages/graphql/customers/upsert.mdx
@@ -30,35 +30,36 @@ This will:
+
```typescript
-import { PlainClient } from '@team-plain/typescript-sdk';
-
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
-
+import { PlainClient } from "@team-plain/typescript-sdk";
+
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
+
const res = await client.upsertCustomer({
identifier: {
- emailAddress: 'donald@example.com',
+ emailAddress: "donald@example.com",
},
// If the customer is not found and should be created then
// these details will be used:
onCreate: {
- fullName: 'Donald Duck',
- shortName: 'Donald',
+ fullName: "Donald Duck",
+ shortName: "Donald",
email: {
- email: 'donald@example.com',
+ email: "donald@example.com",
isVerified: true,
},
-
+
// This is the id of the customer in your own backend.
// Filling this out makes it easy to link customers in Plain
// back to customer in your own systems.
- externalId: 'c_123',
-
+ externalId: "c_123",
+
// This is optional but if you want to put a customer into a group
// on creation, this is how you do it.
customerGroupIdentifiers: [
{
- customerGroupKey: 'enterprise',
+ customerGroupKey: "enterprise",
},
],
},
@@ -67,21 +68,21 @@ const res = await client.upsertCustomer({
// just providing some of the fields below.
onUpdate: {
fullName: {
- value: 'Donald Duck',
+ value: "Donald Duck",
},
shortName: {
- value: 'Donald',
+ value: "Donald",
},
email: {
- email: 'donald@example.com',
+ email: "donald@example.com",
isVerified: true,
},
externalId: {
- value: 'c_123',
+ value: "c_123",
},
},
});
-
+
if (res.error) {
console.error(res.error);
} else {
@@ -100,7 +101,11 @@ if (res.error) {
"fullName": "Donald Duck",
"shortName": "Donald",
"externalId": "c_123",
- "email": { "email": "donald@example.com", "isVerified": false, "verifiedAt": null },
+ "email": {
+ "email": "donald@example.com",
+ "isVerified": false,
+ "verifiedAt": null
+ },
"status": "IDLE",
"statusChangedAt": {
"__typename": "DateTime",
@@ -128,6 +133,7 @@ if (res.error) {
}
}
```
+
@@ -244,6 +250,7 @@ mutation upsertCustomer($input: UpsertCustomerInput!) {
}
}
```
+
diff --git a/pages/graphql/error-handling.mdx b/pages/graphql/error-handling.mdx
index 1c54cdb..29e28a2 100644
--- a/pages/graphql/error-handling.mdx
+++ b/pages/graphql/error-handling.mdx
@@ -33,7 +33,7 @@ one for the result and one for the error. If the error is returned then the muta
type Example {
data: String!
}
-
+
type ExampleOutput {
# example is the result of the mutation, is only returned if the mutation succeeded
example: Example
@@ -67,30 +67,29 @@ You can see the [full error types in the code of the Typescript SDK](https://git
This is how you can access the error when using the SDK:
```typescript
-import { PlainClient } from '../client';
-
+import { PlainClient } from "../client";
+
export async function createCustomer() {
- const client = new PlainClient({ apiKey: 'XXX' });
-
+ const client = new PlainClient({ apiKey: "XXX" });
+
const res = await client.upsertCustomer({
identifier: {
- emailAddress: 'jane@gmail.com',
+ emailAddress: "jane@gmail.com",
},
onCreate: {
- fullName: 'Jane Fargate',
+ fullName: "Jane Fargate",
email: {
- email: 'jane@gmail.com',
+ email: "jane@gmail.com",
isVerified: true,
},
},
onUpdate: {},
});
-
+
if (res.error) {
console.error(res.error);
} else {
console.log(`Created customer with id=${res.data.customer.id}`);
}
}
-
```
diff --git a/pages/graphql/events/create-customer-event.mdx b/pages/graphql/events/create-customer-event.mdx
index f8d5853..b0ff89f 100644
--- a/pages/graphql/events/create-customer-event.mdx
+++ b/pages/graphql/events/create-customer-event.mdx
@@ -3,7 +3,9 @@ title: "Create a customer event"
---
- This API is being actively developed and is not yet ready for production usage. If you are interested in using events please get in touch with us at [help@plain.com](mailto:help@plain.com)
+ This API is being actively developed and is not yet ready for production
+ usage. If you are interested in using events please get in touch with us at
+ [help@plain.com](mailto:help@plain.com)
To create an event you need a customer ID.
@@ -12,9 +14,7 @@ You can get this by [upserting a customer](/pages/graphql/customers/upsert) in P
In this example we'll be creating the following event:
-
- ![Example event](/public/images/events/events-example.png)
-
+![Example event](/public/images/events/events-example.png)
@@ -25,26 +25,26 @@ In this example we'll be creating the following event:
```typescript
import { PlainClient, uiComponent } from '@team-plain/typescript-sdk';
-
+
const client = new PlainClient({
apiKey: 'XXX',
debug: true,
});
-
+
const res = await client.createCustomerEvent({
title: 'API key generated',
-
+
customerIdentifier: {
// You can use the email:
email: 'jane@acme.com',
-
+
// ...or if you set external id on customers:
// externalId: 'YOUR_ID',
-
+
// ...or you can use the customer's id in Plain:
// customerId: 'c_123'
},
-
+
components: [
uiComponent.text({
text: 'New API key was added with the fingerprint **3b7896975ee9fd15eeb7** with 4 associated roles.',
@@ -57,18 +57,18 @@ In this example we'll be creating the following event:
url: 'https://admin.your-app.com',
}),
],
-
+
// Optional - if provided, this will ensure that this event can only
// be created once and fail on the second time. This external id acts
// as an idempotency key while also letting you correlate an event to
// something your systems.
externalId: 'XXX',
-
+
// Optional - if provided then the event will only be shown
// in a single thread vs all threads from a customer
threadId: 'th_01HB924RWAW8H3Q8KZDFWYBJHZ',
});
-
+
if (res.error) {
console.error(res.error);
} else {
@@ -120,87 +120,88 @@ In this example we'll be creating the following event:
}
}
```
+
For this you'll need an API key with the following permissions:
- `customerEvent:create`
- `customerEvent:read`
- ```graphql Mutation
- mutation createCustomerEvent($input: CreateCustomerEventInput!) {
- createCustomerEvent(input: $input) {
- customerEvent {
+```graphql Mutation
+mutation createCustomerEvent($input: CreateCustomerEventInput!) {
+ createCustomerEvent(input: $input) {
+ customerEvent {
+ __typename
+ id
+ title
+ createdAt {
__typename
- id
- title
- createdAt {
- __typename
- iso8601
- unixTimestamp
- }
+ iso8601
+ unixTimestamp
}
- error {
- __typename
+ }
+ error {
+ __typename
+ message
+ type
+ code
+ fields {
+ field
message
type
- code
- fields {
- field
- message
- type
- }
}
}
}
- ```
+}
+```
- ```json Variables
- {
- "input": {
- "title": "API key generated",
-
- "customerIdentifier": {
- // You can use the email:
- "email": "jane@acme.com"
-
- // ...or if you set external id on customers:
- // externalId: 'YOUR_ID',
-
- // ...or you can use the customer's id in Plain:
- // customerId: 'c_123'
+```json Variables
+{
+ "input": {
+ "title": "API key generated",
+
+ "customerIdentifier": {
+ // You can use the email:
+ "email": "jane@acme.com"
+
+ // ...or if you set external id on customers:
+ // externalId: 'YOUR_ID',
+
+ // ...or you can use the customer's id in Plain:
+ // customerId: 'c_123'
+ },
+
+ "components": [
+ {
+ "componentText": {
+ "text": "New API key was added with the fingerprint **3b7896975ee9fd15eeb7** with 4 associated roles."
+ }
},
-
- "components": [
- {
- "componentText": {
- "text": "New API key was added with the fingerprint **3b7896975ee9fd15eeb7** with 4 associated roles."
- }
- },
- {
- "componentSpacer": {
- "spacerSize": "M"
- }
- },
- {
- "componentLinkButton": {
- "linkButtonLabel": "View in admin",
- "linkButtonUrl": "https://admin.your-app.com"
- }
+ {
+ "componentSpacer": {
+ "spacerSize": "M"
}
- ],
-
- // Optional - if provided, this will ensure that this event can only
- // be created once and fail on the second time. This external id acts
- // as an idempotency key while also letting you correlate an event to
- // something your systems.
- "externalId": "XXX",
-
- // Optional - if provided then the event will only be shown
- // in a single thread vs all threads from a customer
- "threadId": "th_01HB924RWAW8H3Q8KZDFWYBJHZ"
- }
+ },
+ {
+ "componentLinkButton": {
+ "linkButtonLabel": "View in admin",
+ "linkButtonUrl": "https://admin.your-app.com"
+ }
+ }
+ ],
+
+ // Optional - if provided, this will ensure that this event can only
+ // be created once and fail on the second time. This external id acts
+ // as an idempotency key while also letting you correlate an event to
+ // something your systems.
+ "externalId": "XXX",
+
+ // Optional - if provided then the event will only be shown
+ // in a single thread vs all threads from a customer
+ "threadId": "th_01HB924RWAW8H3Q8KZDFWYBJHZ"
}
- ```
+}
+```
diff --git a/pages/graphql/labels/add.mdx b/pages/graphql/labels/add.mdx
index 259137a..f6cf7e4 100644
--- a/pages/graphql/labels/add.mdx
+++ b/pages/graphql/labels/add.mdx
@@ -96,6 +96,7 @@ if (res.error) {
+
```graphql Mutation
mutation addLabels($input: AddLabelsInput!) {
addLabels(input: $input) {
@@ -112,11 +113,15 @@ mutation addLabels($input: AddLabelsInput!) {
```json Variables
{
"input": {
- "labelTypeIds": ["lt_01HB8BTNTZ58730MX8H5VMKFD5", "lt_01HB8BTNKSCF1FK5ETFVRSDC6G"],
+ "labelTypeIds": [
+ "lt_01HB8BTNTZ58730MX8H5VMKFD5",
+ "lt_01HB8BTNKSCF1FK5ETFVRSDC6G"
+ ],
"threadId": "th_01H8H46YPB2S4MAJM382FG9423"
}
}
```
+
diff --git a/pages/graphql/labels/remove.mdx b/pages/graphql/labels/remove.mdx
index 759c77c..555d802 100644
--- a/pages/graphql/labels/remove.mdx
+++ b/pages/graphql/labels/remove.mdx
@@ -27,6 +27,7 @@ if (res.error) {
+
```graphql Mutation
mutation removeLabels($input: RemoveLabelsInput!) {
removeLabels(input: $input) {
@@ -46,6 +47,7 @@ mutation removeLabels($input: RemoveLabelsInput!) {
}
}
```
+
diff --git a/pages/graphql/messaging.mdx b/pages/graphql/messaging.mdx
index c9db9c0..513070e 100644
--- a/pages/graphql/messaging.mdx
+++ b/pages/graphql/messaging.mdx
@@ -5,8 +5,16 @@ description: "We provide various methods to message your customers with the Plai
---
-
-
-
-
+
+
diff --git a/pages/graphql/messaging/reply-email.mdx b/pages/graphql/messaging/reply-email.mdx
index ca0169d..cf8f9f5 100644
--- a/pages/graphql/messaging/reply-email.mdx
+++ b/pages/graphql/messaging/reply-email.mdx
@@ -1,7 +1,7 @@
-import { Tab, Tabs } from 'nextra-theme-docs';
+import { Tab, Tabs } from "nextra-theme-docs";
-import ReplyEmailTypescriptSDK from '../../../snippets/typescript-sdk/reply-email.mdx';
-import ReplyEmailGraphQL from '../../../snippets/graphql/reply-email.mdx';
+import ReplyEmailTypescriptSDK from "../../../snippets/typescript-sdk/reply-email.mdx";
+import ReplyEmailGraphQL from "../../../snippets/graphql/reply-email.mdx";
# Reply to emails
@@ -16,23 +16,24 @@ You can reply to an inbound email with the `replyToEmail` API.
- `attachment:read`
```typescript
-import { PlainClient } from '@team-plain/typescript-sdk';
-
-const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
-
+import { PlainClient } from "@team-plain/typescript-sdk";
+
+const client = new PlainClient({ apiKey: "plainApiKey_xxx" });
+
client.replyToEmail({
- customerId: 'c_01GTC6ZHCMAGR06FMPN9VY5J95',
- inReplyToEmailId: 'em_01GM2X8K7D3RZ7ZFGHZ2AYG3SA',
- textContent: 'The plain text version of your reply goes here.',
- markdownContent: 'The markdown **version** of your _reply_ goes here.',
+ customerId: "c_01GTC6ZHCMAGR06FMPN9VY5J95",
+ inReplyToEmailId: "em_01GM2X8K7D3RZ7ZFGHZ2AYG3SA",
+ textContent: "The plain text version of your reply goes here.",
+ markdownContent: "The markdown **version** of your _reply_ goes here.",
});
-
+
if (res.error) {
console.error(res.error);
} else {
console.log(res.data);
}
```
+
@@ -66,6 +67,7 @@ mutation replyToEmail($input: ReplyToEmailInput!) {
}
}
```
+
diff --git a/pages/graphql/messaging/send-email.mdx b/pages/graphql/messaging/send-email.mdx
index 095fa94..2f443b0 100644
--- a/pages/graphql/messaging/send-email.mdx
+++ b/pages/graphql/messaging/send-email.mdx
@@ -28,6 +28,7 @@ if (res.error) {
+
```graphql Mutation
mutation sendNewEmail($input: SendNewEmailInput!) {
sendNewEmail(input: $input) {
diff --git a/pages/graphql/pagination.mdx b/pages/graphql/pagination.mdx
index c633061..f5ce491 100644
--- a/pages/graphql/pagination.mdx
+++ b/pages/graphql/pagination.mdx
@@ -47,10 +47,12 @@ if (firstPage.error) {
}
}
```
+
This will fetch a subsequent page of 50 entries by passing in the `endCursor` from an initial query.
+
```grapql Second page
query getCustomers($cursor: String!) {
customers(after: $cursor, first: 50) {
diff --git a/pages/graphql/threads.mdx b/pages/graphql/threads.mdx
index f55a1ef..3b45f7f 100644
--- a/pages/graphql/threads.mdx
+++ b/pages/graphql/threads.mdx
@@ -13,9 +13,10 @@ Threads belong to one customer but can contain multiple email threads and custom
An example thread looks like this:
- The below is only showing a subset fields a thread has. Since our API is a GraphQL API you
- decide which fields you need when you make API requests. Use our [API
- explorer](https://app.plain.com/developer/api-explorer) to discover the full schema of threads.
+ The below is only showing a subset fields a thread has. Since our API is a
+ GraphQL API you decide which fields you need when you make API requests. Use
+ our [API explorer](https://app.plain.com/developer/api-explorer) to discover
+ the full schema of threads.
diff --git a/pages/graphql/threads/assignment.mdx b/pages/graphql/threads/assignment.mdx
index 2200251..dd72906 100644
--- a/pages/graphql/threads/assignment.mdx
+++ b/pages/graphql/threads/assignment.mdx
@@ -1,9 +1,9 @@
-import { Tabs, Tab } from 'nextra-theme-docs';
-import AssignThreadTypescriptSDK from '../../../snippets/typescript-sdk/assign-thread.mdx';
-import AssignThreadResponseTypescriptSDK from '../../../snippets/typescript-sdk/assign-thread-response.mdx';
-import AssignThreadGraphQL from '../../../snippets/graphql/assign-thread.mdx';
-import UnassignThreadTypescriptSDK from '../../../snippets/typescript-sdk/unassign-thread.mdx';
-import UnassignThreadGraphQL from '../../../snippets/graphql/unassign-thread.mdx';
+import { Tabs, Tab } from "nextra-theme-docs";
+import AssignThreadTypescriptSDK from "../../../snippets/typescript-sdk/assign-thread.mdx";
+import AssignThreadResponseTypescriptSDK from "../../../snippets/typescript-sdk/assign-thread-response.mdx";
+import AssignThreadGraphQL from "../../../snippets/graphql/assign-thread.mdx";
+import UnassignThreadTypescriptSDK from "../../../snippets/typescript-sdk/unassign-thread.mdx";
+import UnassignThreadGraphQL from "../../../snippets/graphql/unassign-thread.mdx";
# Assign threads
@@ -63,59 +63,60 @@ if (res.error) {
Where res.data is the full thread:
{
- "__typename": "Thread",
- "id": "th_01H8H46YPB2S4MAJM382FG9423",
- "externalId": null,
- "customer": {
- "id": "c_01H8H46Y7N69VTSF4WXCJTVATZ"
- },
- "status": "TODO",
- "statusChangedAt": {
- "__typename": "DateTime",
- "iso8601": "2023-08-23T11:59:22.315Z",
- "unixTimestamp": "1692791962315"
- },
- "title": "Support request",
- "previewText": "Hello can you please...",
- "priority": 2,
- "labels": [],
- "assignedAt": {
- "__typename": "DateTime",
- "iso8601": "2023-10-05T13:12:12.050Z",
- "unixTimestamp": "1696511532050"
- },
- "assignedTo": {
- "__typename": "User",
- "id": "u_01FSVKMHFDHJ3H5XFM20EMCBQN",
- "fullName": "Matt Vagni",
- "publicName": "Matt",
- "email": "matt@plain.com",
- "updatedAt": {
- "__typename": "DateTime",
- "iso8601": "2023-05-16T12:36:52.266Z",
- "unixTimestamp": "1684240612266"
- }
- },
- "createdAt": {
- "__typename": "DateTime",
- "iso8601": "2023-08-23T11:59:22.315Z",
- "unixTimestamp": "1692791962315"
- },
- "createdBy": {
- "__typename": "MachineUserActor",
- "machineUserId": "mu_01H0J96X3KJ3C2S2W9T5S3CC1R"
- },
- "updatedAt": {
- "__typename": "DateTime",
- "iso8601": "2023-10-05T13:12:12.050Z",
- "unixTimestamp": "1696511532050"
- },
- "updatedBy": {
- "__typename": "MachineUserActor",
- "machineUserId": "mu_01HBZM0TZAKAZPJ47NX7X7XMDY"
- }
+"**typename": "Thread",
+"id": "th_01H8H46YPB2S4MAJM382FG9423",
+"externalId": null,
+"customer": {
+"id": "c_01H8H46Y7N69VTSF4WXCJTVATZ"
+},
+"status": "TODO",
+"statusChangedAt": {
+"**typename": "DateTime",
+"iso8601": "2023-08-23T11:59:22.315Z",
+"unixTimestamp": "1692791962315"
+},
+"title": "Support request",
+"previewText": "Hello can you please...",
+"priority": 2,
+"labels": [],
+"assignedAt": {
+"**typename": "DateTime",
+"iso8601": "2023-10-05T13:12:12.050Z",
+"unixTimestamp": "1696511532050"
+},
+"assignedTo": {
+"**typename": "User",
+"id": "u_01FSVKMHFDHJ3H5XFM20EMCBQN",
+"fullName": "Matt Vagni",
+"publicName": "Matt",
+"email": "matt@plain.com",
+"updatedAt": {
+"**typename": "DateTime",
+"iso8601": "2023-05-16T12:36:52.266Z",
+"unixTimestamp": "1684240612266"
}
-```
+},
+"createdAt": {
+"**typename": "DateTime",
+"iso8601": "2023-08-23T11:59:22.315Z",
+"unixTimestamp": "1692791962315"
+},
+"createdBy": {
+"**typename": "MachineUserActor",
+"machineUserId": "mu_01H0J96X3KJ3C2S2W9T5S3CC1R"
+},
+"updatedAt": {
+"**typename": "DateTime",
+"iso8601": "2023-10-05T13:12:12.050Z",
+"unixTimestamp": "1696511532050"
+},
+"updatedBy": {
+"\_\_typename": "MachineUserActor",
+"machineUserId": "mu_01HBZM0TZAKAZPJ47NX7X7XMDY"
+}
+}
+
+````
```graphql Mutation
@@ -127,19 +128,20 @@ mutation assignThread($input: AssignThreadInput!) {
}
}
}
-```
+````
```json Variables
{
"input": {
"threadId": "th_01H8H46YPB2S4MAJM382FG9423",
"userId": "u_01FSVKMHFDHJ3H5XFM20EMCBQN"
-
+
// You could instead assign to a machine user by doing:
// machineUserId: 'XXX'
}
}
```
+
@@ -190,5 +192,6 @@ mutation unassignThread($input: UnassignThreadInput!) {
}
}
```
+
diff --git a/pages/graphql/threads/create.mdx b/pages/graphql/threads/create.mdx
index 73c268d..67d2e72 100644
--- a/pages/graphql/threads/create.mdx
+++ b/pages/graphql/threads/create.mdx
@@ -25,22 +25,22 @@ To create a thread you need a `customerId`. You can get a customer id by [creati
- `user:read`
```typescript
-import { PlainClient } from '@team-plain/typescript-sdk';
-
+import { PlainClient } from "@team-plain/typescript-sdk";
+
const client = new PlainClient({
- apiKey: 'XXX',
+ apiKey: "XXX",
debug: true,
});
-
+
const res = await client.createThread({
- title: 'Bug Report',
+ title: "Bug Report",
customerIdentifier: {
// You can use the email:
- email: 'jane@acme.com',
-
+ email: "jane@acme.com",
+
// ...or if you set external id on customers:
// externalId: '',
-
+
// ...or you can use the customer's id in Plain:
// customerId: 'c_123'
},
@@ -53,9 +53,9 @@ const res = await client.createThread({
],
// Label types are created in settings where you can also copy
// their ID.
- labelTypeIds: ['lt_01HB924PME9C0YWKW1N4AK3BZA'],
+ labelTypeIds: ["lt_01HB924PME9C0YWKW1N4AK3BZA"],
});
-
+
if (res.error) {
console.error(res.error);
} else {
diff --git a/pages/graphql/threads/status-changes.mdx b/pages/graphql/threads/status-changes.mdx
index 0664668..500ff61 100644
--- a/pages/graphql/threads/status-changes.mdx
+++ b/pages/graphql/threads/status-changes.mdx
@@ -87,6 +87,7 @@ mutation markThreadAsDone($input: MarkThreadAsDoneInput!) {
}
}
```
+
@@ -162,6 +163,7 @@ mutation snoozeThread($input: SnoozeThreadInput!) {
}
}
```
+
diff --git a/pages/graphql/typescript-sdk.mdx b/pages/graphql/typescript-sdk.mdx
index 10a08f9..fefbc36 100644
--- a/pages/graphql/typescript-sdk.mdx
+++ b/pages/graphql/typescript-sdk.mdx
@@ -2,4 +2,4 @@
title: "Typescript SDK"
icon: "link"
url: "https://github.com/team-plain/typescript-sdk/"
----
\ No newline at end of file
+---
diff --git a/pages/linear-integration-setup.mdx b/pages/linear-integration-setup.mdx
index 6020a37..0258e72 100644
--- a/pages/linear-integration-setup.mdx
+++ b/pages/linear-integration-setup.mdx
@@ -5,7 +5,10 @@ description: "To easily keep track of feature requests and bugs reported in Plai
This lets you easily link a Linear issue to a thread.
-![Screenshot of the floating contact form](/public/images/linear-integration/linear-integration.png)
+
+ ![Screenshot of the floating contact
+ form](/public/images/linear-integration/linear-integration.png)
+
To do this, head to **Settings** → **Linear integration** and connect your workspace.
diff --git a/pages/migrate-to-threads.mdx b/pages/migrate-to-threads.mdx
index 4061cdc..d69e2c8 100644
--- a/pages/migrate-to-threads.mdx
+++ b/pages/migrate-to-threads.mdx
@@ -3,8 +3,8 @@ title: "Migrating to threads"
---
- This only applies to you if you are using the Plain API or webhooks. If you are using neither,
- feel free to ignore this!
+ This only applies to you if you are using the Plain API or webhooks. If you
+ are using neither, feel free to ignore this!
Furthermore, this migration only applies to you if you use _any_ of the following Plain APIs:
@@ -29,8 +29,9 @@ Or if you are using _any_ of the following webhooks :
If you run into **any** issues, please reach out to us via the app (**⌘ + K** and then search for "Question") or email us at [help@plain.com](mailto:help@plain.com).
- Once you have fully migrated across, please let us know and we will enable a feature flag for your
- workspace giving you the full benefits of threads within Plain.
+ Once you have fully migrated across, please let us know and we will enable a
+ feature flag for your workspace giving you the full benefits of threads within
+ Plain.
## New data model
diff --git a/pages/ui-components.mdx b/pages/ui-components.mdx
index 38c19fa..8881660 100644
--- a/pages/ui-components.mdx
+++ b/pages/ui-components.mdx
@@ -18,7 +18,8 @@ For example - this is a button that links to Stripe.
and it looks like this:
- ![Example button linking to stripe](/public/images/ui-components/link-button-stripe.png)
+ ![Example button linking to
+ stripe](/public/images/ui-components/link-button-stripe.png)
In the GraphQL API schema, we have two separate unions for Custom Timeline Entry Components and Customer Card
diff --git a/pages/ui-components/badge.mdx b/pages/ui-components/badge.mdx
index 01be65a..b9af334 100644
--- a/pages/ui-components/badge.mdx
+++ b/pages/ui-components/badge.mdx
@@ -3,9 +3,7 @@ title: "Badge"
description: "Useful for statuses or when you need to attract attention to something."
---
-
- ![Example badges](/public/images/ui-components/badge.png)
-
+![Example badges](/public/images/ui-components/badge.png)
A badge has the following properties:
@@ -24,6 +22,7 @@ uiComponent.badge({ label: 'Subscribed', color: 'GREEN' });
+
```json
{
"componentBadge": {
@@ -32,6 +31,7 @@ uiComponent.badge({ label: 'Subscribed', color: 'GREEN' });
}
}
```
+
diff --git a/pages/ui-components/container.mdx b/pages/ui-components/container.mdx
index 6f8f062..b4ae097 100644
--- a/pages/ui-components/container.mdx
+++ b/pages/ui-components/container.mdx
@@ -3,9 +3,7 @@ title: "Container"
description: "Useful when you need to create a bit of structure."
---
-
- ![Example container](/public//images/ui-components/container.png)
-
+![Example container](/public//images/ui-components/container.png)
A container has the following properties:
@@ -36,6 +34,7 @@ uiComponent.container({
+
```json
{
"componentContainer": {
@@ -49,6 +48,7 @@ uiComponent.container({
}
}
```
+
diff --git a/pages/ui-components/copy-button.mdx b/pages/ui-components/copy-button.mdx
index ea4aee6..8443a3d 100644
--- a/pages/ui-components/copy-button.mdx
+++ b/pages/ui-components/copy-button.mdx
@@ -28,6 +28,7 @@ uiComponent.copyButton({
+
```json
{
"componentCopyButton": {
@@ -36,6 +37,7 @@ uiComponent.copyButton({
}
}
```
+
diff --git a/pages/ui-components/divider.mdx b/pages/ui-components/divider.mdx
index 6162fb3..9b6043e 100644
--- a/pages/ui-components/divider.mdx
+++ b/pages/ui-components/divider.mdx
@@ -3,9 +3,7 @@ title: "Divider"
description: "Useful when you need a bit of structure."
---
-
- ![Example divider](/public/images/ui-components/divider.png)
-
+![Example divider](/public/images/ui-components/divider.png)
A divider has the following properties:
@@ -28,6 +26,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
+
```json
[
{
@@ -46,6 +45,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
}
}
```
+
diff --git a/pages/ui-components/link-button.mdx b/pages/ui-components/link-button.mdx
index ffd9aa2..2e9fa00 100644
--- a/pages/ui-components/link-button.mdx
+++ b/pages/ui-components/link-button.mdx
@@ -27,6 +27,7 @@ uiComponent.linkButton({
+
```json
{
"componentLinkButton": {
@@ -35,6 +36,7 @@ uiComponent.linkButton({
}
}
```
+
diff --git a/pages/ui-components/plain-text.mdx b/pages/ui-components/plain-text.mdx
index 91d529c..f8b57a5 100644
--- a/pages/ui-components/plain-text.mdx
+++ b/pages/ui-components/plain-text.mdx
@@ -41,6 +41,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
+
```json
[
{
@@ -93,6 +94,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
}
]
```
+
diff --git a/pages/ui-components/row.mdx b/pages/ui-components/row.mdx
index bcec938..b1bbd77 100644
--- a/pages/ui-components/row.mdx
+++ b/pages/ui-components/row.mdx
@@ -35,6 +35,7 @@ uiComponent.row({
+
```json
{
"componentRow": {
@@ -56,6 +57,7 @@ uiComponent.row({
}
}
```
+
diff --git a/pages/ui-components/spacer.mdx b/pages/ui-components/spacer.mdx
index 19aa38d..17e0f98 100644
--- a/pages/ui-components/spacer.mdx
+++ b/pages/ui-components/spacer.mdx
@@ -2,9 +2,7 @@
title: "Spacer"
---
-
- ![Example spacer](/public/images/ui-components/spacer.png)
-
+![Example spacer](/public/images/ui-components/spacer.png)
A link button has the following properties:
@@ -26,6 +24,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
+
```json
[
{
@@ -45,6 +44,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
}
]
```
+
diff --git a/pages/ui-components/text.mdx b/pages/ui-components/text.mdx
index 3732cc8..ccb99ca 100644
--- a/pages/ui-components/text.mdx
+++ b/pages/ui-components/text.mdx
@@ -42,6 +42,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
+
```json
[
{
@@ -99,6 +100,7 @@ import { uiComponent } from '@team-plain/typescript-sdk';
}
]
```
+
diff --git a/pages/webhooks.mdx b/pages/webhooks.mdx
index 2e767b4..a2a0fb2 100644
--- a/pages/webhooks.mdx
+++ b/pages/webhooks.mdx
@@ -28,14 +28,14 @@ to receive and whether you want to enable it straight away.
You can create up to **25 webhook targets** per workspace.
- Plain events may contain Personally Identifiable Information (PII). If you want to test webhooks
- with a production workspace, take the necessary precautions to avoid leaking PII to untrusted
- parties.
+ Plain events may contain Personally Identifiable Information (PII). If you
+ want to test webhooks with a production workspace, take the necessary
+ precautions to avoid leaking PII to untrusted parties.
- We have created a repository where you will find instructions on how to create a webhook endpoint
- using different programming languages. You can find it
+ We have created a repository where you will find instructions on how to create
+ a webhook endpoint using different programming languages. You can find it
[here](https://github.com/team-plain/webhooks-resources/tree/main/servers).
diff --git a/pages/webhooks/customer-updated.mdx b/pages/webhooks/customer-updated.mdx
index c9730e6..d0ded95 100644
--- a/pages/webhooks/customer-updated.mdx
+++ b/pages/webhooks/customer-updated.mdx
@@ -88,5 +88,4 @@ Example:
},
"type": "customer.customer_updated"
}
-
```
diff --git a/pages/webhooks/email-received.mdx b/pages/webhooks/email-received.mdx
index 8c4e0cb..ab540cc 100644
--- a/pages/webhooks/email-received.mdx
+++ b/pages/webhooks/email-received.mdx
@@ -4,10 +4,11 @@ description: "This event is fired when an email is received in your workspace."
---
- An important field that might go unnoticed is `isStartOfThread`. This will tell you if this email
- is the first message of a thread or not, which is useful if you want to build some auto-reply
- logic. If you want to build an auto-responder that *only replies* to the first message of a
- thread, please check [`thread.thread_created`](/webhooks/thread-created) instead.
+ An important field that might go unnoticed is `isStartOfThread`. This will
+ tell you if this email is the first message of a thread or not, which is
+ useful if you want to build some auto-reply logic. If you want to build an
+ auto-responder that *only replies* to the first message of a thread, please
+ check [`thread.thread_created`](/webhooks/thread-created) instead.
## Schema
diff --git a/pages/webhooks/email-sent.mdx b/pages/webhooks/email-sent.mdx
index e353dac..7422032 100644
--- a/pages/webhooks/email-sent.mdx
+++ b/pages/webhooks/email-sent.mdx
@@ -4,10 +4,11 @@ description: "This event is fired when an email is received in your workspace."
---
- An important field that might go unnoticed is `isStartOfThread`. This will tell you if this email
- is the first message of a thread or not, which is useful if you want to build some auto-reply
- logic. If you want to build an auto-responder that *only replies* to the first message of a
- thread, please check [`thread.thread_created`](/webhooks/thread-created) instead.
+ An important field that might go unnoticed is `isStartOfThread`. This will
+ tell you if this email is the first message of a thread or not, which is
+ useful if you want to build some auto-reply logic. If you want to build an
+ auto-responder that *only replies* to the first message of a thread, please
+ check [`thread.thread_created`](/webhooks/thread-created) instead.
## Schema
diff --git a/pages/webhooks/thread-created.mdx b/pages/webhooks/thread-created.mdx
index 3f2cf2f..ff35fdf 100644
--- a/pages/webhooks/thread-created.mdx
+++ b/pages/webhooks/thread-created.mdx
@@ -6,12 +6,13 @@ description: "This event is fired when a new thread is created in your workspace
You can subscribe to this event **if you want to build an auto-responder**. To do so, when you receive this event, use the `replyToThread` mutation to send a reply back to the customer.
- Every email you receive in your workspace is linked to a thread. If we cannot find a matching
- thread for an email, we will create one. When this happens, you may receive two events:
- `thread.thread_created` and [`thread.email_received`](/webhooks/email-received) (depending on your
- webhook target event subscriptions). If you do, and you only care about emails which are not the
- first message of the thread, please check the `isStartOfThread` in the
- [`thread.email_received`](/webhooks/email-received) payload.
+ Every email you receive in your workspace is linked to a thread. If we cannot
+ find a matching thread for an email, we will create one. When this happens,
+ you may receive two events: `thread.thread_created` and
+ [`thread.email_received`](/webhooks/email-received) (depending on your webhook
+ target event subscriptions). If you do, and you only care about emails which
+ are not the first message of the thread, please check the `isStartOfThread` in
+ the [`thread.email_received`](/webhooks/email-received) payload.
## Schema
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..0e9bfe1
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,3069 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+dependencies:
+ mintlify:
+ specifier: ^4.0.58
+ version: 4.0.58(axios@1.6.2)(openapi-types@12.1.3)
+ prettier:
+ specifier: ^3.1.0
+ version: 3.1.0
+
+packages:
+
+ /@apidevtools/json-schema-ref-parser@9.0.6:
+ resolution: {integrity: sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==}
+ dependencies:
+ '@jsdevtools/ono': 7.1.3
+ call-me-maybe: 1.0.2
+ js-yaml: 3.14.1
+ dev: false
+
+ /@apidevtools/openapi-schemas@2.1.0:
+ resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@apidevtools/swagger-methods@3.0.2:
+ resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==}
+ dev: false
+
+ /@apidevtools/swagger-parser@10.1.0(openapi-types@12.1.3):
+ resolution: {integrity: sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==}
+ peerDependencies:
+ openapi-types: '>=7'
+ dependencies:
+ '@apidevtools/json-schema-ref-parser': 9.0.6
+ '@apidevtools/openapi-schemas': 2.1.0
+ '@apidevtools/swagger-methods': 3.0.2
+ '@jsdevtools/ono': 7.1.3
+ ajv: 8.12.0
+ ajv-draft-04: 1.0.0(ajv@8.12.0)
+ call-me-maybe: 1.0.2
+ openapi-types: 12.1.3
+ dev: false
+
+ /@jsdevtools/ono@7.1.3:
+ resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
+ dev: false
+
+ /@leichtgewicht/ip-codec@2.0.4:
+ resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==}
+ dev: false
+
+ /@mintlify/cli@4.0.58(axios@1.6.2)(openapi-types@12.1.3):
+ resolution: {integrity: sha512-bWXn5OpG9YIY6p8Gacks9/nTQAZndxhdqHroewV0faMHt47OeuLU/IiGUF32hyE8NwWWziHOOpk3CVcKm9er6Q==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+ dependencies:
+ '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3)
+ '@mintlify/link-rot': 3.0.80(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2)
+ '@mintlify/models': 0.0.54(axios@1.6.2)(openapi-types@12.1.3)
+ '@mintlify/prebuild': 1.0.80(@apidevtools/swagger-parser@10.1.0)(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2)(fs-extra@11.1.1)(gray-matter@4.0.3)(openapi-types@12.1.3)(unist-util-visit@4.1.2)
+ '@mintlify/previewing': 4.0.57(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2)
+ '@mintlify/validation': 0.1.101(@mintlify/models@0.0.54)(openapi-types@12.1.3)
+ chalk: 5.3.0
+ detect-port: 1.5.1
+ fs-extra: 11.1.1
+ gray-matter: 4.0.3
+ unist-util-visit: 4.1.2
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - axios
+ - bufferutil
+ - encoding
+ - openapi-types
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /@mintlify/common@1.0.15(axios@1.6.2)(openapi-types@12.1.3):
+ resolution: {integrity: sha512-9w5Km3UqdZXxzSgntab9vzuDW1vqWatk1xY2soc5e0fxVl4075JshSKBejm66SW8KABGyT00CLvQ7toNAWjO2Q==}
+ dependencies:
+ '@mintlify/models': 0.0.54(axios@1.6.2)(openapi-types@12.1.3)
+ remark: 14.0.3
+ remark-frontmatter: 4.0.1
+ remark-gfm: 3.0.1
+ remark-math: 5.1.1
+ remark-mdx: 2.3.0
+ transitivePeerDependencies:
+ - axios
+ - openapi-types
+ - supports-color
+ dev: false
+
+ /@mintlify/link-rot@3.0.80(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2):
+ resolution: {integrity: sha512-ds49vEdhJIJdMZf5H/kf/0i2SuR4Ejpw3UdpEJIxgP1oPkal74nsTwsYYB1ldkrjtgLT8g7xdBM86+V+gsMszA==}
+ engines: {node: '>=18.0.0'}
+ dependencies:
+ '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3)
+ '@mintlify/common': 1.0.15(axios@1.6.2)(openapi-types@12.1.3)
+ '@mintlify/prebuild': 1.0.80(@apidevtools/swagger-parser@10.1.0)(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2)(fs-extra@11.1.1)(gray-matter@4.0.3)(openapi-types@12.1.3)(unist-util-visit@4.1.2)
+ chalk: 5.3.0
+ fs-extra: 11.1.1
+ gray-matter: 4.0.3
+ is-absolute-url: 4.0.1
+ openapi-types: 12.1.3
+ unist-util-visit: 4.1.2
+ transitivePeerDependencies:
+ - '@mintlify/models'
+ - '@mintlify/validation'
+ - axios
+ - supports-color
+ dev: false
+
+ /@mintlify/models@0.0.54(axios@1.6.2)(openapi-types@12.1.3):
+ resolution: {integrity: sha512-iMIxGKqD8VT4rxYFcD7RlOlKrjkbtwERRSk0T7FURvWh+vi8iTCLoLphHyp+ML5h3JMOH3m/FcHtCcvHklmmQw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ axios: ^1.4.0
+ openapi-types: 12.x
+ dependencies:
+ axios: 1.6.2
+ openapi-types: 12.1.3
+ dev: false
+
+ /@mintlify/prebuild@1.0.80(@apidevtools/swagger-parser@10.1.0)(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2)(fs-extra@11.1.1)(gray-matter@4.0.3)(openapi-types@12.1.3)(unist-util-visit@4.1.2):
+ resolution: {integrity: sha512-d6MvLKNmMst3tvZ5cU4FYWmHnWmG6+NLt7VPpXfvZmLsAZDwmSLRhqn7O8/f+LDH1xj2Fq+yBzMPj6h2Z8Rtaw==}
+ peerDependencies:
+ '@apidevtools/swagger-parser': 10.x
+ '@mintlify/models': '>= 0.0.15 < 1'
+ '@mintlify/validation': '>= 0.1.57 < 1'
+ fs-extra: 11.x
+ gray-matter: ^4.0.3
+ openapi-types: 12.x
+ unist-util-visit: ^4.1.1
+ dependencies:
+ '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3)
+ '@mintlify/common': 1.0.15(axios@1.6.2)(openapi-types@12.1.3)
+ '@mintlify/models': 0.0.54(axios@1.6.2)(openapi-types@12.1.3)
+ '@mintlify/validation': 0.1.101(@mintlify/models@0.0.54)(openapi-types@12.1.3)
+ favicons: 7.1.4
+ fs-extra: 11.1.1
+ gray-matter: 4.0.3
+ openapi-types: 12.1.3
+ unist-util-visit: 4.1.2
+ transitivePeerDependencies:
+ - axios
+ - supports-color
+ dev: false
+
+ /@mintlify/previewing@4.0.57(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2):
+ resolution: {integrity: sha512-EduErRmmFnWYsBqzwoBhSa4yYXnwaqfOvXaZZIhCoQKYQOhdCg7fZkOpojHcQ0caVV8hSE8Qv4YRQsAGiuHMjw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@mintlify/validation': '>= 0.1.48 < 1'
+ dependencies:
+ '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3)
+ '@mintlify/prebuild': 1.0.80(@apidevtools/swagger-parser@10.1.0)(@mintlify/models@0.0.54)(@mintlify/validation@0.1.101)(axios@1.6.2)(fs-extra@11.1.1)(gray-matter@4.0.3)(openapi-types@12.1.3)(unist-util-visit@4.1.2)
+ '@mintlify/validation': 0.1.101(@mintlify/models@0.0.54)(openapi-types@12.1.3)
+ '@octokit/rest': 19.0.13
+ chalk: 5.3.0
+ chokidar: 3.5.3
+ express: 4.18.2
+ fs-extra: 11.1.1
+ got: 13.0.0
+ gray-matter: 4.0.3
+ is-absolute-url: 4.0.1
+ is-online: 10.0.0
+ open: 8.4.2
+ openapi-types: 12.1.3
+ ora: 6.3.1
+ socket.io: 4.7.2
+ tar: 6.2.0
+ unist-util-visit: 4.1.2
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@mintlify/models'
+ - axios
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /@mintlify/validation@0.1.101(@mintlify/models@0.0.54)(openapi-types@12.1.3):
+ resolution: {integrity: sha512-ylrL881NmjewoX9mos1PAujmrD3mWiBjZuO4ffJ6cvoQMFvDbJgyNFttvdCqA4jIl4A2SkZ0JW3RlcaFeJ7Gzg==}
+ peerDependencies:
+ '@mintlify/models': '>= 0.0.36 < 1'
+ openapi-types: 12.x
+ dependencies:
+ '@mintlify/models': 0.0.54(axios@1.6.2)(openapi-types@12.1.3)
+ lcm: 0.0.3
+ lodash: 4.17.21
+ openapi-types: 12.1.3
+ zod: 3.22.4
+ zod-to-json-schema: 3.21.4(zod@3.22.4)
+ dev: false
+
+ /@octokit/auth-token@3.0.4:
+ resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==}
+ engines: {node: '>= 14'}
+ dev: false
+
+ /@octokit/core@4.2.4:
+ resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/auth-token': 3.0.4
+ '@octokit/graphql': 5.0.6
+ '@octokit/request': 6.2.8
+ '@octokit/request-error': 3.0.3
+ '@octokit/types': 9.3.2
+ before-after-hook: 2.2.3
+ universal-user-agent: 6.0.1
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@octokit/endpoint@7.0.6:
+ resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/types': 9.3.2
+ is-plain-object: 5.0.0
+ universal-user-agent: 6.0.1
+ dev: false
+
+ /@octokit/graphql@5.0.6:
+ resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/request': 6.2.8
+ '@octokit/types': 9.3.2
+ universal-user-agent: 6.0.1
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@octokit/openapi-types@18.1.1:
+ resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==}
+ dev: false
+
+ /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4):
+ resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ '@octokit/core': '>=4'
+ dependencies:
+ '@octokit/core': 4.2.4
+ '@octokit/tsconfig': 1.0.2
+ '@octokit/types': 9.3.2
+ dev: false
+
+ /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4):
+ resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==}
+ peerDependencies:
+ '@octokit/core': '>=3'
+ dependencies:
+ '@octokit/core': 4.2.4
+ dev: false
+
+ /@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4):
+ resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ '@octokit/core': '>=3'
+ dependencies:
+ '@octokit/core': 4.2.4
+ '@octokit/types': 10.0.0
+ dev: false
+
+ /@octokit/request-error@3.0.3:
+ resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/types': 9.3.2
+ deprecation: 2.3.1
+ once: 1.4.0
+ dev: false
+
+ /@octokit/request@6.2.8:
+ resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/endpoint': 7.0.6
+ '@octokit/request-error': 3.0.3
+ '@octokit/types': 9.3.2
+ is-plain-object: 5.0.0
+ node-fetch: 2.7.0
+ universal-user-agent: 6.0.1
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@octokit/rest@19.0.13:
+ resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@octokit/core': 4.2.4
+ '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4)
+ '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4)
+ '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4)
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@octokit/tsconfig@1.0.2:
+ resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==}
+ dev: false
+
+ /@octokit/types@10.0.0:
+ resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==}
+ dependencies:
+ '@octokit/openapi-types': 18.1.1
+ dev: false
+
+ /@octokit/types@9.3.2:
+ resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==}
+ dependencies:
+ '@octokit/openapi-types': 18.1.1
+ dev: false
+
+ /@sindresorhus/is@5.6.0:
+ resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
+ engines: {node: '>=14.16'}
+ dev: false
+
+ /@socket.io/component-emitter@3.1.0:
+ resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==}
+ dev: false
+
+ /@szmarczak/http-timer@5.0.1:
+ resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ defer-to-connect: 2.0.1
+ dev: false
+
+ /@types/acorn@4.0.6:
+ resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
+ dependencies:
+ '@types/estree': 1.0.5
+ dev: false
+
+ /@types/cookie@0.4.1:
+ resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
+ dev: false
+
+ /@types/cors@2.8.16:
+ resolution: {integrity: sha512-Trx5or1Nyg1Fq138PCuWqoApzvoSLWzZ25ORBiHMbbUT42g578lH1GT4TwYDbiUOLFuDsCkfLneT2105fsFWGg==}
+ dependencies:
+ '@types/node': 20.9.1
+ dev: false
+
+ /@types/debug@4.1.12:
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ dependencies:
+ '@types/ms': 0.7.34
+ dev: false
+
+ /@types/estree-jsx@1.0.3:
+ resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==}
+ dependencies:
+ '@types/estree': 1.0.5
+ dev: false
+
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: false
+
+ /@types/hast@2.3.8:
+ resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /@types/http-cache-semantics@4.0.4:
+ resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
+ dev: false
+
+ /@types/katex@0.16.6:
+ resolution: {integrity: sha512-rZYO1HInM99rAFYNwGqbYPxHZHxu2IwZYKj4bJ4oh6edVrm1UId8mmbHIZLBtG253qU6y3piag0XYe/joNnwzQ==}
+ dev: false
+
+ /@types/mdast@3.0.15:
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ dev: false
+
+ /@types/node@20.9.1:
+ resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==}
+ dependencies:
+ undici-types: 5.26.5
+ dev: false
+
+ /@types/unist@2.0.10:
+ resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+ dev: false
+
+ /accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+ dev: false
+
+ /acorn-jsx@5.3.2(acorn@8.11.2):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.11.2
+ dev: false
+
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: false
+
+ /address@1.2.2:
+ resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
+ engines: {node: '>= 10.0.0'}
+ dev: false
+
+ /aggregate-error@4.0.1:
+ resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
+ engines: {node: '>=12'}
+ dependencies:
+ clean-stack: 4.2.0
+ indent-string: 5.0.0
+ dev: false
+
+ /ajv-draft-04@1.0.0(ajv@8.12.0):
+ resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==}
+ peerDependencies:
+ ajv: ^8.5.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+ dependencies:
+ ajv: 8.12.0
+ dev: false
+
+ /ajv@8.12.0:
+ resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+ dev: false
+
+ /ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: false
+
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: false
+
+ /argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: false
+
+ /array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+ dev: false
+
+ /asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+ dev: false
+
+ /axios@1.6.2:
+ resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==}
+ dependencies:
+ follow-redirects: 1.15.3
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /b4a@1.6.4:
+ resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==}
+ dev: false
+
+ /bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+ dev: false
+
+ /base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ dev: false
+
+ /base64id@2.0.0:
+ resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
+ engines: {node: ^4.5.0 || >= 5.9}
+ dev: false
+
+ /before-after-hook@2.2.3:
+ resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
+ dev: false
+
+ /binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ dev: false
+
+ /bl@5.1.0:
+ resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
+ dependencies:
+ buffer: 6.0.3
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ dev: false
+
+ /body-parser@1.20.1:
+ resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.11.0
+ raw-body: 2.5.1
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /braces@3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: false
+
+ /buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ dev: false
+
+ /buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ dev: false
+
+ /bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /cacheable-lookup@7.0.0:
+ resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
+ engines: {node: '>=14.16'}
+ dev: false
+
+ /cacheable-request@10.2.14:
+ resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ '@types/http-cache-semantics': 4.0.4
+ get-stream: 6.0.1
+ http-cache-semantics: 4.1.1
+ keyv: 4.5.4
+ mimic-response: 4.0.0
+ normalize-url: 8.0.0
+ responselike: 3.0.0
+ dev: false
+
+ /call-bind@1.0.5:
+ resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
+ dependencies:
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.2
+ set-function-length: 1.1.1
+ dev: false
+
+ /call-me-maybe@1.0.2:
+ resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
+ dev: false
+
+ /ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+ dev: false
+
+ /chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ dev: false
+
+ /character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+ dev: false
+
+ /character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+ dev: false
+
+ /character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+ dev: false
+
+ /character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+ dev: false
+
+ /chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: false
+
+ /chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+ dev: false
+
+ /chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /clean-stack@4.2.0:
+ resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==}
+ engines: {node: '>=12'}
+ dependencies:
+ escape-string-regexp: 5.0.0
+ dev: false
+
+ /cli-cursor@4.0.0:
+ resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ restore-cursor: 4.0.0
+ dev: false
+
+ /cli-spinners@2.9.1:
+ resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: false
+
+ /clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: false
+
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: false
+
+ /color-string@1.9.1:
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.2
+ dev: false
+
+ /color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+ dev: false
+
+ /combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: false
+
+ /commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+ dev: false
+
+ /content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
+ /content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+ dev: false
+
+ /cookie@0.4.2:
+ resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: false
+
+ /debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+ dev: false
+
+ /debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: false
+
+ /decode-named-character-reference@1.0.2:
+ resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+ dependencies:
+ character-entities: 2.0.2
+ dev: false
+
+ /decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ mimic-response: 3.1.0
+ dev: false
+
+ /deep-extend@0.6.0:
+ resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+ engines: {node: '>=4.0.0'}
+ dev: false
+
+ /defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+ dependencies:
+ clone: 1.0.4
+ dev: false
+
+ /defer-to-connect@2.0.1:
+ resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /define-data-property@1.1.1:
+ resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.2
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.1
+ dev: false
+
+ /define-lazy-prop@2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+ dev: false
+
+ /depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /deprecation@2.3.1:
+ resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
+ dev: false
+
+ /dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ dev: false
+
+ /detect-libc@2.0.2:
+ resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /detect-port@1.5.1:
+ resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==}
+ hasBin: true
+ dependencies:
+ address: 1.2.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /diff@5.1.0:
+ resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
+ engines: {node: '>=0.3.1'}
+ dev: false
+
+ /dns-packet@5.6.1:
+ resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@leichtgewicht/ip-codec': 2.0.4
+ dev: false
+
+ /dns-socket@4.2.2:
+ resolution: {integrity: sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==}
+ engines: {node: '>=6'}
+ dependencies:
+ dns-packet: 5.6.1
+ dev: false
+
+ /ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+ dev: false
+
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: false
+
+ /encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ dependencies:
+ once: 1.4.0
+ dev: false
+
+ /engine.io-parser@5.2.1:
+ resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==}
+ engines: {node: '>=10.0.0'}
+ dev: false
+
+ /engine.io@6.5.4:
+ resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==}
+ engines: {node: '>=10.2.0'}
+ dependencies:
+ '@types/cookie': 0.4.1
+ '@types/cors': 2.8.16
+ '@types/node': 20.9.1
+ accepts: 1.3.8
+ base64id: 2.0.0
+ cookie: 0.4.2
+ cors: 2.8.5
+ debug: 4.3.4
+ engine.io-parser: 5.2.1
+ ws: 8.11.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /escalade@3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ dev: false
+
+ /escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
+ /estree-util-is-identifier-name@2.1.0:
+ resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==}
+ dev: false
+
+ /estree-util-visit@1.2.1:
+ resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/unist': 2.0.10
+ dev: false
+
+ /etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /expand-template@2.0.3:
+ resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /express@4.18.2:
+ resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.1
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.5.0
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.2.0
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.1
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.7
+ proxy-addr: 2.0.7
+ qs: 6.11.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.18.0
+ serve-static: 1.15.0
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /extend-shallow@2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: false
+
+ /extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ dev: false
+
+ /fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: false
+
+ /fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+ dev: false
+
+ /fault@2.0.1:
+ resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
+ dependencies:
+ format: 0.2.2
+ dev: false
+
+ /favicons@7.1.4:
+ resolution: {integrity: sha512-lnZpVgT7Fzz+DUjioKF1dMwLYlpqWCaB4gIksIfIKwtlhHO1Q7w23hERwHQjEsec+43iENwbTAPRDW3XvpLhbg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ escape-html: 1.0.3
+ sharp: 0.32.6
+ xml2js: 0.6.2
+ dev: false
+
+ /fill-range@7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: false
+
+ /finalhandler@1.2.0:
+ resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /follow-redirects@1.15.3:
+ resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ dev: false
+
+ /form-data-encoder@2.1.4:
+ resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
+ engines: {node: '>= 14.17'}
+ dev: false
+
+ /form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: false
+
+ /format@0.2.2:
+ resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
+ engines: {node: '>=0.4.x'}
+ dev: false
+
+ /forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+ dev: false
+
+ /fs-extra@11.1.1:
+ resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
+ engines: {node: '>=14.14'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+ dev: false
+
+ /fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.6
+ dev: false
+
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ dev: false
+
+ /gcd@0.0.1:
+ resolution: {integrity: sha512-VNx3UEGr+ILJTiMs1+xc5SX1cMgJCrXezKPa003APUWNqQqaF6n25W8VcR7nHN6yRWbvvUTwCpZCFJeWC2kXlw==}
+ dev: false
+
+ /get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: false
+
+ /get-intrinsic@1.2.2:
+ resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
+ dependencies:
+ function-bind: 1.1.2
+ has-proto: 1.0.1
+ has-symbols: 1.0.3
+ hasown: 2.0.0
+ dev: false
+
+ /get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /github-from-package@0.0.0:
+ resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
+ dev: false
+
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: false
+
+ /gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ dependencies:
+ get-intrinsic: 1.2.2
+ dev: false
+
+ /got@12.6.1:
+ resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ '@sindresorhus/is': 5.6.0
+ '@szmarczak/http-timer': 5.0.1
+ cacheable-lookup: 7.0.0
+ cacheable-request: 10.2.14
+ decompress-response: 6.0.0
+ form-data-encoder: 2.1.4
+ get-stream: 6.0.1
+ http2-wrapper: 2.2.1
+ lowercase-keys: 3.0.0
+ p-cancelable: 3.0.0
+ responselike: 3.0.0
+ dev: false
+
+ /got@13.0.0:
+ resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
+ engines: {node: '>=16'}
+ dependencies:
+ '@sindresorhus/is': 5.6.0
+ '@szmarczak/http-timer': 5.0.1
+ cacheable-lookup: 7.0.0
+ cacheable-request: 10.2.14
+ decompress-response: 6.0.0
+ form-data-encoder: 2.1.4
+ get-stream: 6.0.1
+ http2-wrapper: 2.2.1
+ lowercase-keys: 3.0.0
+ p-cancelable: 3.0.0
+ responselike: 3.0.0
+ dev: false
+
+ /graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ dev: false
+
+ /gray-matter@4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+ engines: {node: '>=6.0'}
+ dependencies:
+ js-yaml: 3.14.1
+ kind-of: 6.0.3
+ section-matter: 1.0.0
+ strip-bom-string: 1.0.0
+ dev: false
+
+ /has-property-descriptors@1.0.1:
+ resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
+ dependencies:
+ get-intrinsic: 1.2.2
+ dev: false
+
+ /has-proto@1.0.1:
+ resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /hasown@2.0.0:
+ resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+ dev: false
+
+ /http-cache-semantics@4.1.1:
+ resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
+ dev: false
+
+ /http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+ dev: false
+
+ /http2-wrapper@2.2.1:
+ resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
+ engines: {node: '>=10.19.0'}
+ dependencies:
+ quick-lru: 5.1.1
+ resolve-alpn: 1.2.1
+ dev: false
+
+ /iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: false
+
+ /ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ dev: false
+
+ /indent-string@5.0.0:
+ resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: false
+
+ /ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+ dev: false
+
+ /ip-regex@4.3.0:
+ resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
+ /is-absolute-url@4.0.1:
+ resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: false
+
+ /is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+ dev: false
+
+ /is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+ dev: false
+
+ /is-arrayish@0.3.2:
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+ dev: false
+
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: false
+
+ /is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+ dev: false
+
+ /is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dev: false
+
+ /is-extendable@0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: false
+
+ /is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+ dev: false
+
+ /is-interactive@2.0.0:
+ resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /is-ip@3.1.0:
+ resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==}
+ engines: {node: '>=8'}
+ dependencies:
+ ip-regex: 4.3.0
+ dev: false
+
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: false
+
+ /is-online@10.0.0:
+ resolution: {integrity: sha512-WCPdKwNDjXJJmUubf2VHLMDBkUZEtuOvpXUfUnUFbEnM6In9ByiScL4f4jKACz/fsb2qDkesFerW3snf/AYz3A==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ got: 12.6.1
+ p-any: 4.0.0
+ p-timeout: 5.1.0
+ public-ip: 5.0.0
+ dev: false
+
+ /is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /is-plain-object@5.0.0:
+ resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-unicode-supported@1.3.0:
+ resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-docker: 2.2.1
+ dev: false
+
+ /js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: false
+
+ /json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ dev: false
+
+ /json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+ dev: false
+
+ /jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: false
+
+ /katex@0.16.9:
+ resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==}
+ hasBin: true
+ dependencies:
+ commander: 8.3.0
+ dev: false
+
+ /keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ dependencies:
+ json-buffer: 3.0.1
+ dev: false
+
+ /kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /lcm@0.0.3:
+ resolution: {integrity: sha512-TB+ZjoillV6B26Vspf9l2L/vKaRY/4ep3hahcyVkCGFgsTNRUQdc24bQeNFiZeoxH0vr5+7SfNRMQuPHv/1IrQ==}
+ dependencies:
+ gcd: 0.0.1
+ dev: false
+
+ /lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: false
+
+ /log-symbols@5.1.0:
+ resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
+ engines: {node: '>=12'}
+ dependencies:
+ chalk: 5.3.0
+ is-unicode-supported: 1.3.0
+ dev: false
+
+ /longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+ dev: false
+
+ /lowercase-keys@3.0.0:
+ resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: false
+
+ /lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: false
+
+ /markdown-table@3.0.3:
+ resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
+ dev: false
+
+ /mdast-util-find-and-replace@2.2.2:
+ resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ escape-string-regexp: 5.0.0
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+ dev: false
+
+ /mdast-util-from-markdown@1.3.1:
+ resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ decode-named-character-reference: 1.0.2
+ mdast-util-to-string: 3.2.0
+ micromark: 3.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-decode-string: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-stringify-position: 3.0.3
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-frontmatter@1.0.1:
+ resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ micromark-extension-frontmatter: 1.1.1
+ dev: false
+
+ /mdast-util-gfm-autolink-literal@1.0.3:
+ resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ ccount: 2.0.1
+ mdast-util-find-and-replace: 2.2.2
+ micromark-util-character: 1.2.0
+ dev: false
+
+ /mdast-util-gfm-footnote@1.0.2:
+ resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ micromark-util-normalize-identifier: 1.1.0
+ dev: false
+
+ /mdast-util-gfm-strikethrough@1.0.3:
+ resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ dev: false
+
+ /mdast-util-gfm-table@1.0.7:
+ resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ markdown-table: 3.0.3
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-gfm-task-list-item@1.0.2:
+ resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ dev: false
+
+ /mdast-util-gfm@2.0.2:
+ resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
+ dependencies:
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-gfm-autolink-literal: 1.0.3
+ mdast-util-gfm-footnote: 1.0.2
+ mdast-util-gfm-strikethrough: 1.0.3
+ mdast-util-gfm-table: 1.0.7
+ mdast-util-gfm-task-list-item: 1.0.2
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-math@2.0.2:
+ resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ longest-streak: 3.1.0
+ mdast-util-to-markdown: 1.5.0
+ dev: false
+
+ /mdast-util-mdx-expression@1.3.2:
+ resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 2.3.8
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdx-jsx@2.1.4:
+ resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 2.3.8
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ ccount: 2.0.1
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.3
+ unist-util-remove-position: 4.0.2
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdx@2.0.1:
+ resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==}
+ dependencies:
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-mdx-expression: 1.3.2
+ mdast-util-mdx-jsx: 2.1.4
+ mdast-util-mdxjs-esm: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdxjs-esm@1.3.1:
+ resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 2.3.8
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-phrasing@3.0.1:
+ resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ unist-util-is: 5.2.1
+ dev: false
+
+ /mdast-util-to-markdown@1.5.0:
+ resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 3.0.1
+ mdast-util-to-string: 3.2.0
+ micromark-util-decode-string: 1.1.0
+ unist-util-visit: 4.1.2
+ zwitch: 2.0.4
+ dev: false
+
+ /mdast-util-to-string@3.2.0:
+ resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ dev: false
+
+ /media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /merge-descriptors@1.0.1:
+ resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+ dev: false
+
+ /methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /micromark-core-commonmark@1.1.0:
+ resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-factory-destination: 1.1.0
+ micromark-factory-label: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-factory-title: 1.1.0
+ micromark-factory-whitespace: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-html-tag-name: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-frontmatter@1.1.1:
+ resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==}
+ dependencies:
+ fault: 2.0.1
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-gfm-autolink-literal@1.0.5:
+ resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-gfm-footnote@1.1.2:
+ resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==}
+ dependencies:
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-strikethrough@1.0.7:
+ resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-table@1.0.7:
+ resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-tagfilter@1.0.2:
+ resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
+ dependencies:
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-gfm-task-list-item@1.0.5:
+ resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm@2.0.3:
+ resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 1.0.5
+ micromark-extension-gfm-footnote: 1.1.2
+ micromark-extension-gfm-strikethrough: 1.0.7
+ micromark-extension-gfm-table: 1.0.7
+ micromark-extension-gfm-tagfilter: 1.0.2
+ micromark-extension-gfm-task-list-item: 1.0.5
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-math@2.1.2:
+ resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==}
+ dependencies:
+ '@types/katex': 0.16.6
+ katex: 0.16.9
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-mdx-expression@1.0.8:
+ resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==}
+ dependencies:
+ '@types/estree': 1.0.5
+ micromark-factory-mdx-expression: 1.0.9
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-mdx-jsx@1.0.5:
+ resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==}
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.5
+ estree-util-is-identifier-name: 2.1.0
+ micromark-factory-mdx-expression: 1.0.9
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+ dev: false
+
+ /micromark-extension-mdx-md@1.0.1:
+ resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==}
+ dependencies:
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-mdxjs-esm@1.0.5:
+ resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==}
+ dependencies:
+ '@types/estree': 1.0.5
+ micromark-core-commonmark: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-position-from-estree: 1.1.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+ dev: false
+
+ /micromark-extension-mdxjs@1.0.1:
+ resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==}
+ dependencies:
+ acorn: 8.11.2
+ acorn-jsx: 5.3.2(acorn@8.11.2)
+ micromark-extension-mdx-expression: 1.0.8
+ micromark-extension-mdx-jsx: 1.0.5
+ micromark-extension-mdx-md: 1.0.1
+ micromark-extension-mdxjs-esm: 1.0.5
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-destination@1.1.0:
+ resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-label@1.1.0:
+ resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-factory-mdx-expression@1.0.9:
+ resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==}
+ dependencies:
+ '@types/estree': 1.0.5
+ micromark-util-character: 1.2.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-position-from-estree: 1.1.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+ dev: false
+
+ /micromark-factory-space@1.1.0:
+ resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-title@1.1.0:
+ resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-whitespace@1.1.0:
+ resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-character@1.2.0:
+ resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-chunked@1.1.0:
+ resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-classify-character@1.1.0:
+ resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-combine-extensions@1.1.0:
+ resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-decode-numeric-character-reference@1.1.0:
+ resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-decode-string@1.1.0:
+ resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-encode@1.1.0:
+ resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
+ dev: false
+
+ /micromark-util-events-to-acorn@1.2.3:
+ resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==}
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.5
+ '@types/unist': 2.0.10
+ estree-util-visit: 1.2.1
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+ dev: false
+
+ /micromark-util-html-tag-name@1.2.0:
+ resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
+ dev: false
+
+ /micromark-util-normalize-identifier@1.1.0:
+ resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-resolve-all@1.1.0:
+ resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
+ dependencies:
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-sanitize-uri@1.2.0:
+ resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-encode: 1.1.0
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-subtokenize@1.1.0:
+ resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-util-symbol@1.1.0:
+ resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
+ dev: false
+
+ /micromark-util-types@1.1.0:
+ resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
+ dev: false
+
+ /micromark@3.2.0:
+ resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.4
+ decode-named-character-reference: 1.0.2
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-encode: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+ dev: false
+
+ /mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
+ /mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /mimic-response@4.0.0:
+ resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: false
+
+ /minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ dev: false
+
+ /minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+ dependencies:
+ yallist: 4.0.0
+ dev: false
+
+ /minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+ dev: false
+
+ /mintlify@4.0.58(axios@1.6.2)(openapi-types@12.1.3):
+ resolution: {integrity: sha512-gY8NeU0Vrx30q0WLkN77oMEd99inVoa6xQeSeg8yCJwN4oNEr60PaDwygOxB9g1ev16CSh4au5XLhj7KZFi1+g==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+ dependencies:
+ '@mintlify/cli': 4.0.58(axios@1.6.2)(openapi-types@12.1.3)
+ transitivePeerDependencies:
+ - axios
+ - bufferutil
+ - encoding
+ - openapi-types
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+ dev: false
+
+ /mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: false
+
+ /mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+ dev: false
+
+ /ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: false
+
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: false
+
+ /napi-build-utils@1.0.2:
+ resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
+ dev: false
+
+ /negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /node-abi@3.51.0:
+ resolution: {integrity: sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==}
+ engines: {node: '>=10'}
+ dependencies:
+ semver: 7.5.4
+ dev: false
+
+ /node-addon-api@6.1.0:
+ resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
+ dev: false
+
+ /node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: false
+
+ /normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /normalize-url@8.0.0:
+ resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==}
+ engines: {node: '>=14.16'}
+ dev: false
+
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /object-inspect@1.13.1:
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ dev: false
+
+ /on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: false
+
+ /once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+ dev: false
+
+ /onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: false
+
+ /open@8.4.2:
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+ dev: false
+
+ /openapi-types@12.1.3:
+ resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
+ dev: false
+
+ /ora@6.3.1:
+ resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ chalk: 5.3.0
+ cli-cursor: 4.0.0
+ cli-spinners: 2.9.1
+ is-interactive: 2.0.0
+ is-unicode-supported: 1.3.0
+ log-symbols: 5.1.0
+ stdin-discarder: 0.1.0
+ strip-ansi: 7.1.0
+ wcwidth: 1.0.1
+ dev: false
+
+ /p-any@4.0.0:
+ resolution: {integrity: sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw==}
+ engines: {node: '>=12.20'}
+ dependencies:
+ p-cancelable: 3.0.0
+ p-some: 6.0.0
+ dev: false
+
+ /p-cancelable@3.0.0:
+ resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
+ engines: {node: '>=12.20'}
+ dev: false
+
+ /p-some@6.0.0:
+ resolution: {integrity: sha512-CJbQCKdfSX3fIh8/QKgS+9rjm7OBNUTmwWswAFQAhc8j1NR1dsEDETUEuVUtQHZpV+J03LqWBEwvu0g1Yn+TYg==}
+ engines: {node: '>=12.20'}
+ dependencies:
+ aggregate-error: 4.0.1
+ p-cancelable: 3.0.0
+ dev: false
+
+ /p-timeout@5.1.0:
+ resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /parse-entities@4.0.1:
+ resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
+ dependencies:
+ '@types/unist': 2.0.10
+ character-entities: 2.0.2
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.0.2
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+ dev: false
+
+ /parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /path-to-regexp@0.1.7:
+ resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
+ dev: false
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: false
+
+ /prebuild-install@7.1.1:
+ resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ detect-libc: 2.0.2
+ expand-template: 2.0.3
+ github-from-package: 0.0.0
+ minimist: 1.2.8
+ mkdirp-classic: 0.5.3
+ napi-build-utils: 1.0.2
+ node-abi: 3.51.0
+ pump: 3.0.0
+ rc: 1.2.8
+ simple-get: 4.0.1
+ tar-fs: 2.1.1
+ tunnel-agent: 0.6.0
+ dev: false
+
+ /prettier@3.1.0:
+ resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: false
+
+ /proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+ dev: false
+
+ /proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ dev: false
+
+ /public-ip@5.0.0:
+ resolution: {integrity: sha512-xaH3pZMni/R2BG7ZXXaWS9Wc9wFlhyDVJF47IJ+3ali0TGv+2PsckKxbmo+rnx3ZxiV2wblVhtdS3bohAP6GGw==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ dependencies:
+ dns-socket: 4.2.2
+ got: 12.6.1
+ is-ip: 3.1.0
+ dev: false
+
+ /pump@3.0.0:
+ resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ dev: false
+
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /qs@6.11.0:
+ resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
+ engines: {node: '>=0.6'}
+ dependencies:
+ side-channel: 1.0.4
+ dev: false
+
+ /queue-tick@1.0.1:
+ resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
+ dev: false
+
+ /quick-lru@5.1.1:
+ resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /raw-body@2.5.1:
+ resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+ dev: false
+
+ /rc@1.2.8:
+ resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+ hasBin: true
+ dependencies:
+ deep-extend: 0.6.0
+ ini: 1.3.8
+ minimist: 1.2.8
+ strip-json-comments: 2.0.1
+ dev: false
+
+ /readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: false
+
+ /remark-frontmatter@4.0.1:
+ resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-frontmatter: 1.0.1
+ micromark-extension-frontmatter: 1.1.1
+ unified: 10.1.2
+ dev: false
+
+ /remark-gfm@3.0.1:
+ resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-gfm: 2.0.2
+ micromark-extension-gfm: 2.0.3
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-math@5.1.1:
+ resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-math: 2.0.2
+ micromark-extension-math: 2.1.2
+ unified: 10.1.2
+ dev: false
+
+ /remark-mdx@2.3.0:
+ resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==}
+ dependencies:
+ mdast-util-mdx: 2.0.1
+ micromark-extension-mdxjs: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-parse@10.0.2:
+ resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-stringify@10.0.3:
+ resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ unified: 10.1.2
+ dev: false
+
+ /remark@14.0.3:
+ resolution: {integrity: sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ remark-parse: 10.0.2
+ remark-stringify: 10.0.3
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /resolve-alpn@1.2.1:
+ resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
+ dev: false
+
+ /responselike@3.0.0:
+ resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ lowercase-keys: 3.0.0
+ dev: false
+
+ /restore-cursor@4.0.0:
+ resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ dev: false
+
+ /sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+ dependencies:
+ mri: 1.2.0
+ dev: false
+
+ /safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ dev: false
+
+ /safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: false
+
+ /sax@1.3.0:
+ resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
+ dev: false
+
+ /section-matter@1.0.0:
+ resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+ engines: {node: '>=4'}
+ dependencies:
+ extend-shallow: 2.0.1
+ kind-of: 6.0.3
+ dev: false
+
+ /semver@7.5.4:
+ resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: false
+
+ /send@0.18.0:
+ resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /serve-static@1.15.0:
+ resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.18.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /set-function-length@1.1.1:
+ resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.1
+ get-intrinsic: 1.2.2
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.1
+ dev: false
+
+ /setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+ dev: false
+
+ /sharp@0.32.6:
+ resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
+ engines: {node: '>=14.15.0'}
+ requiresBuild: true
+ dependencies:
+ color: 4.2.3
+ detect-libc: 2.0.2
+ node-addon-api: 6.1.0
+ prebuild-install: 7.1.1
+ semver: 7.5.4
+ simple-get: 4.0.1
+ tar-fs: 3.0.4
+ tunnel-agent: 0.6.0
+ dev: false
+
+ /side-channel@1.0.4:
+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ object-inspect: 1.13.1
+ dev: false
+
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: false
+
+ /simple-concat@1.0.1:
+ resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
+ dev: false
+
+ /simple-get@4.0.1:
+ resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
+ dependencies:
+ decompress-response: 6.0.0
+ once: 1.4.0
+ simple-concat: 1.0.1
+ dev: false
+
+ /simple-swizzle@0.2.2:
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ dependencies:
+ is-arrayish: 0.3.2
+ dev: false
+
+ /socket.io-adapter@2.5.2:
+ resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==}
+ dependencies:
+ ws: 8.11.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
+ /socket.io-parser@4.2.4:
+ resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ '@socket.io/component-emitter': 3.1.0
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /socket.io@4.7.2:
+ resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==}
+ engines: {node: '>=10.2.0'}
+ dependencies:
+ accepts: 1.3.8
+ base64id: 2.0.0
+ cors: 2.8.5
+ debug: 4.3.4
+ engine.io: 6.5.4
+ socket.io-adapter: 2.5.2
+ socket.io-parser: 4.2.4
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: false
+
+ /sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ dev: false
+
+ /statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /stdin-discarder@0.1.0:
+ resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ bl: 5.1.0
+ dev: false
+
+ /streamx@2.15.5:
+ resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==}
+ dependencies:
+ fast-fifo: 1.3.2
+ queue-tick: 1.0.1
+ dev: false
+
+ /string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: false
+
+ /string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
+ /stringify-entities@4.0.3:
+ resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+ dev: false
+
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: false
+
+ /strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+ dev: false
+
+ /strip-bom-string@1.0.0:
+ resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /strip-json-comments@2.0.1:
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /tar-fs@2.1.1:
+ resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.0
+ tar-stream: 2.2.0
+ dev: false
+
+ /tar-fs@3.0.4:
+ resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==}
+ dependencies:
+ mkdirp-classic: 0.5.3
+ pump: 3.0.0
+ tar-stream: 3.1.6
+ dev: false
+
+ /tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ dev: false
+
+ /tar-stream@3.1.6:
+ resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==}
+ dependencies:
+ b4a: 1.6.4
+ fast-fifo: 1.3.2
+ streamx: 2.15.5
+ dev: false
+
+ /tar@6.2.0:
+ resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+ dev: false
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: false
+
+ /toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+ dev: false
+
+ /tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ dev: false
+
+ /trough@2.1.0:
+ resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
+ dev: false
+
+ /tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
+ /type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+ dev: false
+
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: false
+
+ /unified@10.1.2:
+ resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
+ dependencies:
+ '@types/unist': 2.0.10
+ bail: 2.0.2
+ extend: 3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 4.1.0
+ trough: 2.1.0
+ vfile: 5.3.7
+ dev: false
+
+ /unist-util-is@5.2.1:
+ resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /unist-util-position-from-estree@1.1.2:
+ resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /unist-util-remove-position@4.0.2:
+ resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-visit: 4.1.2
+ dev: false
+
+ /unist-util-stringify-position@3.0.3:
+ resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /unist-util-visit-parents@5.1.3:
+ resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-is: 5.2.1
+ dev: false
+
+ /unist-util-visit@4.1.2:
+ resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+ dev: false
+
+ /universal-user-agent@6.0.1:
+ resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
+ dev: false
+
+ /universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+ dev: false
+
+ /unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.3.1
+ dev: false
+
+ /util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ dev: false
+
+ /utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+ dev: false
+
+ /uvu@0.5.6:
+ resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ dequal: 2.0.3
+ diff: 5.1.0
+ kleur: 4.1.5
+ sade: 1.8.1
+ dev: false
+
+ /vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
+ /vfile-message@3.1.4:
+ resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-stringify-position: 3.0.3
+ dev: false
+
+ /vfile@5.3.7:
+ resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
+ dependencies:
+ '@types/unist': 2.0.10
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+ dev: false
+
+ /wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ dependencies:
+ defaults: 1.0.4
+ dev: false
+
+ /webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ dev: false
+
+ /whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+ dev: false
+
+ /wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: false
+
+ /wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ dev: false
+
+ /ws@8.11.0:
+ resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: false
+
+ /xml2js@0.6.2:
+ resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ sax: 1.3.0
+ xmlbuilder: 11.0.1
+ dev: false
+
+ /xmlbuilder@11.0.1:
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
+ dev: false
+
+ /y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: false
+
+ /yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+ 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.8
+ yargs-parser: 21.1.1
+ dev: false
+
+ /zod-to-json-schema@3.21.4(zod@3.22.4):
+ resolution: {integrity: sha512-fjUZh4nQ1s6HMccgIeE0VP4QG/YRGPmyjO9sAh890aQKPEk3nqbfUXhMFaC+Dr5KvYBm8BCyvfpZf2jY9aGSsw==}
+ peerDependencies:
+ zod: ^3.21.4
+ dependencies:
+ zod: 3.22.4
+ dev: false
+
+ /zod@3.22.4:
+ resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
+ dev: false
+
+ /zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+ dev: false