diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ee07bc32..050daa704 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,6 @@ jobs: runs-on: ubuntu-latest outputs: python: ${{ steps.filter.outputs.python }} - sdk-js: ${{ steps.filter.outputs.sdk-js }} deps: ${{ steps.filter.outputs.deps }} steps: - uses: actions/checkout@v4 @@ -40,8 +39,6 @@ jobs: - 'libs/checkpoint-sqlite/**' - 'libs/checkpoint-postgres/**' - 'libs/prebuilt/**' - sdk-js: - - 'libs/sdk-js/**' deps: - '**/pyproject.toml' - '**/uv.lock' @@ -152,68 +149,16 @@ jobs: uses: ./.github/workflows/_integration_test.yml secrets: inherit - lint-js: - needs: changes - if: needs.changes.outputs.sdk-js == 'true' - runs-on: ubuntu-latest - strategy: - matrix: - working-directory: - - "libs/sdk-js" - defaults: - run: - working-directory: ${{ matrix.working-directory }} - steps: - - uses: actions/checkout@v4 - - name: Setup Node.js (LTS) - uses: actions/setup-node@v4 - with: - node-version: "20" - cache: "yarn" - cache-dependency-path: ${{ matrix.working-directory }}/yarn.lock - - name: Install dependencies - run: yarn install - - name: Run lint - run: yarn lint - - name: Build - run: yarn build - - test-js: - needs: changes - if: needs.changes.outputs.sdk-js == 'true' - runs-on: ubuntu-latest - strategy: - matrix: - working-directory: - - "libs/sdk-js" - defaults: - run: - working-directory: ${{ matrix.working-directory }} - steps: - - uses: actions/checkout@v4 - - name: Setup Node.js (LTS) - uses: actions/setup-node@v4 - with: - node-version: "20" - cache: "yarn" - cache-dependency-path: ${{ matrix.working-directory }}/yarn.lock - - name: Install dependencies - run: yarn install - - name: Run tests - run: yarn test - ci_success: name: "CI Success" needs: [ lint, - lint-js, test, test-langgraph, check-sdk-methods, check-schema, integration-test, - test-js, ] if: | always() diff --git a/.github/workflows/release_js.yml b/.github/workflows/release_js.yml deleted file mode 100644 index bce535330..000000000 --- a/.github/workflows/release_js.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: JS Release - -on: - workflow_dispatch: - -permissions: - contents: read - -jobs: - publish: - # Disallow publishing from branches that aren't `main`. - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - - strategy: - matrix: - working-directory: - - "libs/sdk-js" - - defaults: - run: - working-directory: ${{ matrix.working-directory }} - - steps: - - uses: actions/checkout@v4 - # JS Build - - name: Use Node.js - uses: actions/setup-node@v4 - with: - node-version: "20" - cache: "yarn" - cache-dependency-path: ${{ matrix.working-directory }}/yarn.lock - - - name: Install dependencies - run: yarn install - - name: Build - run: yarn build - - name: Publish package to NPM - run: | - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - npm publish \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore index f4d716881..540583df2 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,4 +1,3 @@ site/ -docs/cloud/reference/sdk/js_ts_sdk_ref.md .vercel diff --git a/docs/Makefile b/docs/Makefile index 5696fbc6f..95d256241 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,10 +1,4 @@ -.PHONY: lint-docs format-docs build-docs serve-docs serve-clean-docs clean-docs codespell build-typedoc llms-text build-prebuilt tests - -build-typedoc: - cd ../libs/sdk-js && yarn install --include-dev && yarn typedoc - cd ../libs/sdk-js && yarn --silent concat-md --decrease-title-levels --ignore=js_ts_sdk_ref.md --start-title-level-at 2 docs > ../../docs/docs/cloud/reference/sdk/js_ts_sdk_ref.md 2>/dev/null - # Add links to the monorepo - sed -e '1,10s|@langchain/langgraph-sdk|[@langchain/langgraph-sdk](https://github.com/langchain-ai/langgraph/tree/main/libs/sdk-js)|g' docs/cloud/reference/sdk/js_ts_sdk_ref.md > temp_file && mv temp_file docs/cloud/reference/sdk/js_ts_sdk_ref.md +.PHONY: lint-docs format-docs build-docs serve-docs serve-clean-docs clean-docs codespell llms-text build-prebuilt tests build-prebuilt: # Use to create an update to date prebuilt page. @@ -21,7 +15,7 @@ build-prebuilt: fi uv run python -m _scripts.third_party_page.create_third_party_page stats.yml docs/agents/prebuilt.md --language python -build-docs: build-typedoc build-prebuilt +build-docs: build-prebuilt uv run python -m mkdocs build --clean -f mkdocs.yml --strict llms-text: @@ -45,7 +39,7 @@ vercel-build-docs: install-vercel-deps serve-clean-docs: clean-docs uv run python -m mkdocs serve -c -f mkdocs.yml --strict -w ../libs/langgraph -serve-docs: build-typedoc +serve-docs: uv run python -m mkdocs serve -f mkdocs.yml -w ../libs/langgraph -w ../libs/checkpoint -w ../libs/sdk-py --dirty clean-docs: diff --git a/docs/docs/cloud/reference/sdk/js_ts_sdk_ref.md b/docs/docs/cloud/reference/sdk/js_ts_sdk_ref.md new file mode 100644 index 000000000..e90a54cad --- /dev/null +++ b/docs/docs/cloud/reference/sdk/js_ts_sdk_ref.md @@ -0,0 +1,3403 @@ + + + +**[@langchain/langgraph-sdk](https://github.com/langchain-ai/langgraph/tree/main/libs/sdk-js)** + +*** + +## [@langchain/langgraph-sdk](https://github.com/langchain-ai/langgraph/tree/main/libs/sdk-js) + +### Classes + +- [AssistantsClient](#classesassistantsclientmd) +- [Client](#classesclientmd) +- [CronsClient](#classescronsclientmd) +- [RunsClient](#classesrunsclientmd) +- [StoreClient](#classesstoreclientmd) +- [ThreadsClient](#classesthreadsclientmd) + +### Interfaces + +- [ClientConfig](#interfacesclientconfigmd) + +### Functions + +- [getApiKey](#functionsgetapikeymd) + + + + +**@langchain/langgraph-sdk** + +*** + +## @langchain/langgraph-sdk/auth + +### Classes + +- [Auth](#authclassesauthmd) +- [HTTPException](#authclasseshttpexceptionmd) + +### Interfaces + +- [AuthEventValueMap](#authinterfacesautheventvaluemapmd) + +### Type Aliases + +- [AuthFilters](#authtype-aliasesauthfiltersmd) + + + + +[**@langchain/langgraph-sdk**](#authreadmemd) + +*** + +[@langchain/langgraph-sdk](#authreadmemd) / Auth + +## Class: Auth\ + +Defined in: [src/auth/index.ts:11](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/index.ts#L11) + +### Type Parameters + +• **TExtra** = \{\} + +• **TAuthReturn** *extends* `BaseAuthReturn` = `BaseAuthReturn` + +• **TUser** *extends* `BaseUser` = `ToUserLike`\<`TAuthReturn`\> + +### Constructors + +#### new Auth() + +> **new Auth**\<`TExtra`, `TAuthReturn`, `TUser`\>(): [`Auth`](#authclassesauthmd)\<`TExtra`, `TAuthReturn`, `TUser`\> + +##### Returns + +[`Auth`](#authclassesauthmd)\<`TExtra`, `TAuthReturn`, `TUser`\> + +### Methods + +#### authenticate() + +> **authenticate**\<`T`\>(`cb`): [`Auth`](#authclassesauthmd)\<`TExtra`, `T`\> + +Defined in: [src/auth/index.ts:25](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/index.ts#L25) + +##### Type Parameters + +• **T** *extends* `BaseAuthReturn` + +##### Parameters + +###### cb + +`AuthenticateCallback`\<`T`\> + +##### Returns + +[`Auth`](#authclassesauthmd)\<`TExtra`, `T`\> + +*** + +#### on() + +> **on**\<`T`\>(`event`, `callback`): `this` + +Defined in: [src/auth/index.ts:32](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/index.ts#L32) + +##### Type Parameters + +• **T** *extends* `CallbackEvent` + +##### Parameters + +###### event + +`T` + +###### callback + +`OnCallback`\<`T`, `TUser`\> + +##### Returns + +`this` + + + + +[**@langchain/langgraph-sdk**](#authreadmemd) + +*** + +[@langchain/langgraph-sdk](#authreadmemd) / HTTPException + +## Class: HTTPException + +Defined in: [src/auth/error.ts:66](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/error.ts#L66) + +### Extends + +- `Error` + +### Constructors + +#### new HTTPException() + +> **new HTTPException**(`status`, `options`?): [`HTTPException`](#authclasseshttpexceptionmd) + +Defined in: [src/auth/error.ts:70](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/error.ts#L70) + +##### Parameters + +###### status + +`number` + +###### options? + +####### cause? + +`unknown` + +####### headers? + +`HeadersInit` + +####### message? + +`string` + +##### Returns + +[`HTTPException`](#authclasseshttpexceptionmd) + +##### Overrides + +`Error.constructor` + +### Properties + +#### cause? + +> `optional` **cause**: `unknown` + +Defined in: node\_modules/typescript/lib/lib.es2022.error.d.ts:24 + +##### Inherited from + +`Error.cause` + +*** + +#### headers + +> **headers**: `HeadersInit` + +Defined in: [src/auth/error.ts:68](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/error.ts#L68) + +*** + +#### message + +> **message**: `string` + +Defined in: node\_modules/typescript/lib/lib.es5.d.ts:1077 + +##### Inherited from + +`Error.message` + +*** + +#### name + +> **name**: `string` + +Defined in: node\_modules/typescript/lib/lib.es5.d.ts:1076 + +##### Inherited from + +`Error.name` + +*** + +#### stack? + +> `optional` **stack**: `string` + +Defined in: node\_modules/typescript/lib/lib.es5.d.ts:1078 + +##### Inherited from + +`Error.stack` + +*** + +#### status + +> **status**: `number` + +Defined in: [src/auth/error.ts:67](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/error.ts#L67) + +*** + +#### prepareStackTrace()? + +> `static` `optional` **prepareStackTrace**: (`err`, `stackTraces`) => `any` + +Defined in: node\_modules/@types/node/globals.d.ts:28 + +Optional override for formatting stack traces + +##### Parameters + +###### err + +`Error` + +###### stackTraces + +`CallSite`[] + +##### Returns + +`any` + +##### See + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +##### Inherited from + +`Error.prepareStackTrace` + +*** + +#### stackTraceLimit + +> `static` **stackTraceLimit**: `number` + +Defined in: node\_modules/@types/node/globals.d.ts:30 + +##### Inherited from + +`Error.stackTraceLimit` + +### Methods + +#### captureStackTrace() + +> `static` **captureStackTrace**(`targetObject`, `constructorOpt`?): `void` + +Defined in: node\_modules/@types/node/globals.d.ts:21 + +Create .stack property on a target object + +##### Parameters + +###### targetObject + +`object` + +###### constructorOpt? + +`Function` + +##### Returns + +`void` + +##### Inherited from + +`Error.captureStackTrace` + + + + +[**@langchain/langgraph-sdk**](#authreadmemd) + +*** + +[@langchain/langgraph-sdk](#authreadmemd) / AuthEventValueMap + +## Interface: AuthEventValueMap + +Defined in: [src/auth/types.ts:218](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L218) + +### Properties + +#### assistants:create + +> **assistants:create**: `object` + +Defined in: [src/auth/types.ts:226](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L226) + +##### assistant\_id? + +> `optional` **assistant\_id**: `Maybe`\<`string`\> + +##### config? + +> `optional` **config**: `Maybe`\<`AssistantConfig`\> + +##### graph\_id + +> **graph\_id**: `string` + +##### if\_exists? + +> `optional` **if\_exists**: `Maybe`\<`"raise"` \| `"do_nothing"`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### name? + +> `optional` **name**: `Maybe`\<`string`\> + +*** + +#### assistants:delete + +> **assistants:delete**: `object` + +Defined in: [src/auth/types.ts:229](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L229) + +##### assistant\_id + +> **assistant\_id**: `string` + +*** + +#### assistants:read + +> **assistants:read**: `object` + +Defined in: [src/auth/types.ts:227](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L227) + +##### assistant\_id + +> **assistant\_id**: `string` + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +*** + +#### assistants:search + +> **assistants:search**: `object` + +Defined in: [src/auth/types.ts:230](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L230) + +##### graph\_id? + +> `optional` **graph\_id**: `Maybe`\<`string`\> + +##### limit? + +> `optional` **limit**: `Maybe`\<`number`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### offset? + +> `optional` **offset**: `Maybe`\<`number`\> + +*** + +#### assistants:update + +> **assistants:update**: `object` + +Defined in: [src/auth/types.ts:228](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L228) + +##### assistant\_id + +> **assistant\_id**: `string` + +##### config? + +> `optional` **config**: `Maybe`\<`AssistantConfig`\> + +##### graph\_id? + +> `optional` **graph\_id**: `Maybe`\<`string`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### name? + +> `optional` **name**: `Maybe`\<`string`\> + +##### version? + +> `optional` **version**: `Maybe`\<`number`\> + +*** + +#### crons:create + +> **crons:create**: `object` + +Defined in: [src/auth/types.ts:232](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L232) + +##### cron\_id? + +> `optional` **cron\_id**: `Maybe`\<`string`\> + +##### end\_time? + +> `optional` **end\_time**: `Maybe`\<`string`\> + +##### payload? + +> `optional` **payload**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### schedule + +> **schedule**: `string` + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +##### user\_id? + +> `optional` **user\_id**: `Maybe`\<`string`\> + +*** + +#### crons:delete + +> **crons:delete**: `object` + +Defined in: [src/auth/types.ts:235](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L235) + +##### cron\_id + +> **cron\_id**: `string` + +*** + +#### crons:read + +> **crons:read**: `object` + +Defined in: [src/auth/types.ts:233](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L233) + +##### cron\_id + +> **cron\_id**: `string` + +*** + +#### crons:search + +> **crons:search**: `object` + +Defined in: [src/auth/types.ts:236](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L236) + +##### assistant\_id? + +> `optional` **assistant\_id**: `Maybe`\<`string`\> + +##### limit? + +> `optional` **limit**: `Maybe`\<`number`\> + +##### offset? + +> `optional` **offset**: `Maybe`\<`number`\> + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +*** + +#### crons:update + +> **crons:update**: `object` + +Defined in: [src/auth/types.ts:234](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L234) + +##### cron\_id + +> **cron\_id**: `string` + +##### payload? + +> `optional` **payload**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### schedule? + +> `optional` **schedule**: `Maybe`\<`string`\> + +*** + +#### store:delete + +> **store:delete**: `object` + +Defined in: [src/auth/types.ts:242](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L242) + +##### key + +> **key**: `string` + +##### namespace? + +> `optional` **namespace**: `Maybe`\<`string`[]\> + +*** + +#### store:get + +> **store:get**: `object` + +Defined in: [src/auth/types.ts:239](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L239) + +##### key + +> **key**: `string` + +##### namespace + +> **namespace**: `Maybe`\<`string`[]\> + +*** + +#### store:list\_namespaces + +> **store:list\_namespaces**: `object` + +Defined in: [src/auth/types.ts:241](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L241) + +##### limit? + +> `optional` **limit**: `Maybe`\<`number`\> + +##### max\_depth? + +> `optional` **max\_depth**: `Maybe`\<`number`\> + +##### namespace? + +> `optional` **namespace**: `Maybe`\<`string`[]\> + +##### offset? + +> `optional` **offset**: `Maybe`\<`number`\> + +##### suffix? + +> `optional` **suffix**: `Maybe`\<`string`[]\> + +*** + +#### store:put + +> **store:put**: `object` + +Defined in: [src/auth/types.ts:238](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L238) + +##### key + +> **key**: `string` + +##### namespace + +> **namespace**: `string`[] + +##### value + +> **value**: `Record`\<`string`, `unknown`\> + +*** + +#### store:search + +> **store:search**: `object` + +Defined in: [src/auth/types.ts:240](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L240) + +##### filter? + +> `optional` **filter**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### limit? + +> `optional` **limit**: `Maybe`\<`number`\> + +##### namespace? + +> `optional` **namespace**: `Maybe`\<`string`[]\> + +##### offset? + +> `optional` **offset**: `Maybe`\<`number`\> + +##### query? + +> `optional` **query**: `Maybe`\<`string`\> + +*** + +#### threads:create + +> **threads:create**: `object` + +Defined in: [src/auth/types.ts:219](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L219) + +##### if\_exists? + +> `optional` **if\_exists**: `Maybe`\<`"raise"` \| `"do_nothing"`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +*** + +#### threads:create\_run + +> **threads:create\_run**: `object` + +Defined in: [src/auth/types.ts:224](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L224) + +##### after\_seconds? + +> `optional` **after\_seconds**: `Maybe`\<`number`\> + +##### assistant\_id + +> **assistant\_id**: `string` + +##### if\_not\_exists? + +> `optional` **if\_not\_exists**: `Maybe`\<`"reject"` \| `"create"`\> + +##### kwargs + +> **kwargs**: `Record`\<`string`, `unknown`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### multitask\_strategy? + +> `optional` **multitask\_strategy**: `Maybe`\<`"reject"` \| `"interrupt"` \| `"rollback"` \| `"enqueue"`\> + +##### prevent\_insert\_if\_inflight? + +> `optional` **prevent\_insert\_if\_inflight**: `Maybe`\<`boolean`\> + +##### run\_id + +> **run\_id**: `string` + +##### status + +> **status**: `Maybe`\<`"pending"` \| `"running"` \| `"error"` \| `"success"` \| `"timeout"` \| `"interrupted"`\> + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +*** + +#### threads:delete + +> **threads:delete**: `object` + +Defined in: [src/auth/types.ts:222](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L222) + +##### run\_id? + +> `optional` **run\_id**: `Maybe`\<`string`\> + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +*** + +#### threads:read + +> **threads:read**: `object` + +Defined in: [src/auth/types.ts:220](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L220) + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +*** + +#### threads:search + +> **threads:search**: `object` + +Defined in: [src/auth/types.ts:223](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L223) + +##### limit? + +> `optional` **limit**: `Maybe`\<`number`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### offset? + +> `optional` **offset**: `Maybe`\<`number`\> + +##### status? + +> `optional` **status**: `Maybe`\<`"error"` \| `"interrupted"` \| `"idle"` \| `"busy"` \| `string` & `object`\> + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + +##### values? + +> `optional` **values**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +*** + +#### threads:update + +> **threads:update**: `object` + +Defined in: [src/auth/types.ts:221](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L221) + +##### action? + +> `optional` **action**: `Maybe`\<`"interrupt"` \| `"rollback"`\> + +##### metadata? + +> `optional` **metadata**: `Maybe`\<`Record`\<`string`, `unknown`\>\> + +##### thread\_id? + +> `optional` **thread\_id**: `Maybe`\<`string`\> + + + + +[**@langchain/langgraph-sdk**](#authreadmemd) + +*** + +[@langchain/langgraph-sdk](#authreadmemd) / AuthFilters + +## Type Alias: AuthFilters\ + +> **AuthFilters**\<`TKey`\>: \{ \[key in TKey\]: string \| \{ \[op in "$contains" \| "$eq"\]?: string \} \} + +Defined in: [src/auth/types.ts:367](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/auth/types.ts#L367) + +### Type Parameters + +• **TKey** *extends* `string` \| `number` \| `symbol` + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / AssistantsClient + +## Class: AssistantsClient + +Defined in: [client.ts:294](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L294) + +### Extends + +- `BaseClient` + +### Constructors + +#### new AssistantsClient() + +> **new AssistantsClient**(`config`?): [`AssistantsClient`](#classesassistantsclientmd) + +Defined in: [client.ts:88](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L88) + +##### Parameters + +###### config? + +[`ClientConfig`](#interfacesclientconfigmd) + +##### Returns + +[`AssistantsClient`](#classesassistantsclientmd) + +##### Inherited from + +`BaseClient.constructor` + +### Methods + +#### create() + +> **create**(`payload`): `Promise`\<`Assistant`\> + +Defined in: [client.ts:359](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L359) + +Create a new assistant. + +##### Parameters + +###### payload + +Payload for creating an assistant. + +####### assistantId? + +`string` + +####### config? + +`Config` + +####### description? + +`string` + +####### graphId + +`string` + +####### ifExists? + +`OnConflictBehavior` + +####### metadata? + +`Metadata` + +####### name? + +`string` + +##### Returns + +`Promise`\<`Assistant`\> + +The created assistant. + +*** + +#### delete() + +> **delete**(`assistantId`): `Promise`\<`void`\> + +Defined in: [client.ts:415](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L415) + +Delete an assistant. + +##### Parameters + +###### assistantId + +`string` + +ID of the assistant. + +##### Returns + +`Promise`\<`void`\> + +*** + +#### get() + +> **get**(`assistantId`): `Promise`\<`Assistant`\> + +Defined in: [client.ts:301](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L301) + +Get an assistant by ID. + +##### Parameters + +###### assistantId + +`string` + +The ID of the assistant. + +##### Returns + +`Promise`\<`Assistant`\> + +Assistant + +*** + +#### getGraph() + +> **getGraph**(`assistantId`, `options`?): `Promise`\<`AssistantGraph`\> + +Defined in: [client.ts:311](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L311) + +Get the JSON representation of the graph assigned to a runnable + +##### Parameters + +###### assistantId + +`string` + +The ID of the assistant. + +###### options? + +####### xray? + +`number` \| `boolean` + +Whether to include subgraphs in the serialized graph representation. If an integer value is provided, only subgraphs with a depth less than or equal to the value will be included. + +##### Returns + +`Promise`\<`AssistantGraph`\> + +Serialized graph + +*** + +#### getSchemas() + +> **getSchemas**(`assistantId`): `Promise`\<`GraphSchema`\> + +Defined in: [client.ts:325](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L325) + +Get the state and config schema of the graph assigned to a runnable + +##### Parameters + +###### assistantId + +`string` + +The ID of the assistant. + +##### Returns + +`Promise`\<`GraphSchema`\> + +Graph schema + +*** + +#### getSubgraphs() + +> **getSubgraphs**(`assistantId`, `options`?): `Promise`\<`Subgraphs`\> + +Defined in: [client.ts:336](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L336) + +Get the schemas of an assistant by ID. + +##### Parameters + +###### assistantId + +`string` + +The ID of the assistant to get the schema of. + +###### options? + +Additional options for getting subgraphs, such as namespace or recursion extraction. + +####### namespace? + +`string` + +####### recurse? + +`boolean` + +##### Returns + +`Promise`\<`Subgraphs`\> + +The subgraphs of the assistant. + +*** + +#### getVersions() + +> **getVersions**(`assistantId`, `payload`?): `Promise`\<`AssistantVersion`[]\> + +Defined in: [client.ts:453](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L453) + +List all versions of an assistant. + +##### Parameters + +###### assistantId + +`string` + +ID of the assistant. + +###### payload? + +####### limit? + +`number` + +####### metadata? + +`Metadata` + +####### offset? + +`number` + +##### Returns + +`Promise`\<`AssistantVersion`[]\> + +List of assistant versions. + +*** + +#### search() + +> **search**(`query`?): `Promise`\<`Assistant`[]\> + +Defined in: [client.ts:426](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L426) + +List assistants. + +##### Parameters + +###### query? + +Query options. + +####### graphId? + +`string` + +####### limit? + +`number` + +####### metadata? + +`Metadata` + +####### offset? + +`number` + +####### sortBy? + +`AssistantSortBy` + +####### sortOrder? + +`SortOrder` + +##### Returns + +`Promise`\<`Assistant`[]\> + +List of assistants. + +*** + +#### setLatest() + +> **setLatest**(`assistantId`, `version`): `Promise`\<`Assistant`\> + +Defined in: [client.ts:481](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L481) + +Change the version of an assistant. + +##### Parameters + +###### assistantId + +`string` + +ID of the assistant. + +###### version + +`number` + +The version to change to. + +##### Returns + +`Promise`\<`Assistant`\> + +The updated assistant. + +*** + +#### update() + +> **update**(`assistantId`, `payload`): `Promise`\<`Assistant`\> + +Defined in: [client.ts:388](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L388) + +Update an assistant. + +##### Parameters + +###### assistantId + +`string` + +ID of the assistant. + +###### payload + +Payload for updating the assistant. + +####### config? + +`Config` + +####### description? + +`string` + +####### graphId? + +`string` + +####### metadata? + +`Metadata` + +####### name? + +`string` + +##### Returns + +`Promise`\<`Assistant`\> + +The updated assistant. + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / Client + +## Class: Client\ + +Defined in: [client.ts:1448](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1448) + +### Type Parameters + +• **TStateType** = `DefaultValues` + +• **TUpdateType** = `TStateType` + +• **TCustomEventType** = `unknown` + +### Constructors + +#### new Client() + +> **new Client**\<`TStateType`, `TUpdateType`, `TCustomEventType`\>(`config`?): [`Client`](#classesclientmd)\<`TStateType`, `TUpdateType`, `TCustomEventType`\> + +Defined in: [client.ts:1484](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1484) + +##### Parameters + +###### config? + +[`ClientConfig`](#interfacesclientconfigmd) + +##### Returns + +[`Client`](#classesclientmd)\<`TStateType`, `TUpdateType`, `TCustomEventType`\> + +### Properties + +#### ~ui + +> **~ui**: `UiClient` + +Defined in: [client.ts:1482](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1482) + +**`Internal`** + +The client for interacting with the UI. + Used by LoadExternalComponent and the API might change in the future. + +*** + +#### assistants + +> **assistants**: [`AssistantsClient`](#classesassistantsclientmd) + +Defined in: [client.ts:1456](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1456) + +The client for interacting with assistants. + +*** + +#### crons + +> **crons**: [`CronsClient`](#classescronsclientmd) + +Defined in: [client.ts:1471](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1471) + +The client for interacting with cron runs. + +*** + +#### runs + +> **runs**: [`RunsClient`](#classesrunsclientmd)\<`TStateType`, `TUpdateType`, `TCustomEventType`\> + +Defined in: [client.ts:1466](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1466) + +The client for interacting with runs. + +*** + +#### store + +> **store**: [`StoreClient`](#classesstoreclientmd) + +Defined in: [client.ts:1476](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1476) + +The client for interacting with the KV store. + +*** + +#### threads + +> **threads**: [`ThreadsClient`](#classesthreadsclientmd)\<`TStateType`, `TUpdateType`\> + +Defined in: [client.ts:1461](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1461) + +The client for interacting with threads. + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / CronsClient + +## Class: CronsClient + +Defined in: [client.ts:197](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L197) + +### Extends + +- `BaseClient` + +### Constructors + +#### new CronsClient() + +> **new CronsClient**(`config`?): [`CronsClient`](#classescronsclientmd) + +Defined in: [client.ts:88](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L88) + +##### Parameters + +###### config? + +[`ClientConfig`](#interfacesclientconfigmd) + +##### Returns + +[`CronsClient`](#classescronsclientmd) + +##### Inherited from + +`BaseClient.constructor` + +### Methods + +#### create() + +> **create**(`assistantId`, `payload`?): `Promise`\<`CronCreateResponse`\> + +Defined in: [client.ts:238](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L238) + +##### Parameters + +###### assistantId + +`string` + +Assistant ID to use for this cron job. + +###### payload? + +`CronsCreatePayload` + +Payload for creating a cron job. + +##### Returns + +`Promise`\<`CronCreateResponse`\> + +*** + +#### createForThread() + +> **createForThread**(`threadId`, `assistantId`, `payload`?): `Promise`\<`CronCreateForThreadResponse`\> + +Defined in: [client.ts:205](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L205) + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### assistantId + +`string` + +Assistant ID to use for this cron job. + +###### payload? + +`CronsCreatePayload` + +Payload for creating a cron job. + +##### Returns + +`Promise`\<`CronCreateForThreadResponse`\> + +The created background run. + +*** + +#### delete() + +> **delete**(`cronId`): `Promise`\<`void`\> + +Defined in: [client.ts:265](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L265) + +##### Parameters + +###### cronId + +`string` + +Cron ID of Cron job to delete. + +##### Returns + +`Promise`\<`void`\> + +*** + +#### search() + +> **search**(`query`?): `Promise`\<`Cron`[]\> + +Defined in: [client.ts:276](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L276) + +##### Parameters + +###### query? + +Query options. + +####### assistantId? + +`string` + +####### limit? + +`number` + +####### offset? + +`number` + +####### threadId? + +`string` + +##### Returns + +`Promise`\<`Cron`[]\> + +List of crons. + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / RunsClient + +## Class: RunsClient\ + +Defined in: [client.ts:776](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L776) + +### Extends + +- `BaseClient` + +### Type Parameters + +• **TStateType** = `DefaultValues` + +• **TUpdateType** = `TStateType` + +• **TCustomEventType** = `unknown` + +### Constructors + +#### new RunsClient() + +> **new RunsClient**\<`TStateType`, `TUpdateType`, `TCustomEventType`\>(`config`?): [`RunsClient`](#classesrunsclientmd)\<`TStateType`, `TUpdateType`, `TCustomEventType`\> + +Defined in: [client.ts:88](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L88) + +##### Parameters + +###### config? + +[`ClientConfig`](#interfacesclientconfigmd) + +##### Returns + +[`RunsClient`](#classesrunsclientmd)\<`TStateType`, `TUpdateType`, `TCustomEventType`\> + +##### Inherited from + +`BaseClient.constructor` + +### Methods + +#### cancel() + +> **cancel**(`threadId`, `runId`, `wait`, `action`): `Promise`\<`void`\> + +Defined in: [client.ts:1063](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1063) + +Cancel a run. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### runId + +`string` + +The ID of the run. + +###### wait + +`boolean` = `false` + +Whether to block when canceling + +###### action + +`CancelAction` = `"interrupt"` + +Action to take when cancelling the run. Possible values are `interrupt` or `rollback`. Default is `interrupt`. + +##### Returns + +`Promise`\<`void`\> + +*** + +#### create() + +> **create**(`threadId`, `assistantId`, `payload`?): `Promise`\<`Run`\> + +Defined in: [client.ts:885](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L885) + +Create a run. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### assistantId + +`string` + +Assistant ID to use for this run. + +###### payload? + +`RunsCreatePayload` + +Payload for creating a run. + +##### Returns + +`Promise`\<`Run`\> + +The created run. + +*** + +#### createBatch() + +> **createBatch**(`payloads`): `Promise`\<`Run`[]\> + +Defined in: [client.ts:921](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L921) + +Create a batch of stateless background runs. + +##### Parameters + +###### payloads + +`RunsCreatePayload` & `object`[] + +An array of payloads for creating runs. + +##### Returns + +`Promise`\<`Run`[]\> + +An array of created runs. + +*** + +#### delete() + +> **delete**(`threadId`, `runId`): `Promise`\<`void`\> + +Defined in: [client.ts:1157](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1157) + +Delete a run. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### runId + +`string` + +The ID of the run. + +##### Returns + +`Promise`\<`void`\> + +*** + +#### get() + +> **get**(`threadId`, `runId`): `Promise`\<`Run`\> + +Defined in: [client.ts:1050](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1050) + +Get a run by ID. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### runId + +`string` + +The ID of the run. + +##### Returns + +`Promise`\<`Run`\> + +The run. + +*** + +#### join() + +> **join**(`threadId`, `runId`, `options`?): `Promise`\<`void`\> + +Defined in: [client.ts:1085](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1085) + +Block until a run is done. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### runId + +`string` + +The ID of the run. + +###### options? + +####### signal? + +`AbortSignal` + +##### Returns + +`Promise`\<`void`\> + +*** + +#### joinStream() + +> **joinStream**(`threadId`, `runId`, `options`?): `AsyncGenerator`\<\{ `data`: `any`; `event`: `StreamEvent`; \}\> + +Defined in: [client.ts:1111](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1111) + +Stream output from a run in real-time, until the run is done. +Output is not buffered, so any output produced before this call will +not be received here. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### runId + +`string` + +The ID of the run. + +###### options? + +Additional options for controlling the stream behavior: + - signal: An AbortSignal that can be used to cancel the stream request + - cancelOnDisconnect: When true, automatically cancels the run if the client disconnects from the stream + - streamMode: Controls what types of events to receive from the stream (can be a single mode or array of modes) + Must be a subset of the stream modes passed when creating the run. Background runs default to having the union of all + stream modes enabled. + +`AbortSignal` | \{ `cancelOnDisconnect`: `boolean`; `signal`: `AbortSignal`; `streamMode`: `StreamMode` \| `StreamMode`[]; \} + +##### Returns + +`AsyncGenerator`\<\{ `data`: `any`; `event`: `StreamEvent`; \}\> + +An async generator yielding stream parts. + +*** + +#### list() + +> **list**(`threadId`, `options`?): `Promise`\<`Run`[]\> + +Defined in: [client.ts:1013](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1013) + +List all runs for a thread. + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### options? + +Filtering and pagination options. + +####### limit? + +`number` + +Maximum number of runs to return. +Defaults to 10 + +####### offset? + +`number` + +Offset to start from. +Defaults to 0. + +####### status? + +`RunStatus` + +Status of the run to filter by. + +##### Returns + +`Promise`\<`Run`[]\> + +List of runs. + +*** + +#### stream() + +Create a run and stream the results. + +##### Param + +The ID of the thread. + +##### Param + +Assistant ID to use for this run. + +##### Param + +Payload for creating a run. + +##### Call Signature + +> **stream**\<`TStreamMode`, `TSubgraphs`\>(`threadId`, `assistantId`, `payload`?): `TypedAsyncGenerator`\<`TStreamMode`, `TSubgraphs`, `TStateType`, `TUpdateType`, `TCustomEventType`\> + +Defined in: [client.ts:781](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L781) + +###### Type Parameters + +• **TStreamMode** *extends* `StreamMode` \| `StreamMode`[] = `StreamMode` + +• **TSubgraphs** *extends* `boolean` = `false` + +###### Parameters + +####### threadId + +`null` + +####### assistantId + +`string` + +####### payload? + +`Omit`\<`RunsStreamPayload`\<`TStreamMode`, `TSubgraphs`\>, `"multitaskStrategy"` \| `"onCompletion"`\> + +###### Returns + +`TypedAsyncGenerator`\<`TStreamMode`, `TSubgraphs`, `TStateType`, `TUpdateType`, `TCustomEventType`\> + +##### Call Signature + +> **stream**\<`TStreamMode`, `TSubgraphs`\>(`threadId`, `assistantId`, `payload`?): `TypedAsyncGenerator`\<`TStreamMode`, `TSubgraphs`, `TStateType`, `TUpdateType`, `TCustomEventType`\> + +Defined in: [client.ts:799](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L799) + +###### Type Parameters + +• **TStreamMode** *extends* `StreamMode` \| `StreamMode`[] = `StreamMode` + +• **TSubgraphs** *extends* `boolean` = `false` + +###### Parameters + +####### threadId + +`string` + +####### assistantId + +`string` + +####### payload? + +`RunsStreamPayload`\<`TStreamMode`, `TSubgraphs`\> + +###### Returns + +`TypedAsyncGenerator`\<`TStreamMode`, `TSubgraphs`, `TStateType`, `TUpdateType`, `TCustomEventType`\> + +*** + +#### wait() + +Create a run and wait for it to complete. + +##### Param + +The ID of the thread. + +##### Param + +Assistant ID to use for this run. + +##### Param + +Payload for creating a run. + +##### Call Signature + +> **wait**(`threadId`, `assistantId`, `payload`?): `Promise`\<`DefaultValues`\> + +Defined in: [client.ts:938](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L938) + +###### Parameters + +####### threadId + +`null` + +####### assistantId + +`string` + +####### payload? + +`Omit`\<`RunsWaitPayload`, `"multitaskStrategy"` \| `"onCompletion"`\> + +###### Returns + +`Promise`\<`DefaultValues`\> + +##### Call Signature + +> **wait**(`threadId`, `assistantId`, `payload`?): `Promise`\<`DefaultValues`\> + +Defined in: [client.ts:944](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L944) + +###### Parameters + +####### threadId + +`string` + +####### assistantId + +`string` + +####### payload? + +`RunsWaitPayload` + +###### Returns + +`Promise`\<`DefaultValues`\> + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / StoreClient + +## Class: StoreClient + +Defined in: [client.ts:1175](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1175) + +### Extends + +- `BaseClient` + +### Constructors + +#### new StoreClient() + +> **new StoreClient**(`config`?): [`StoreClient`](#classesstoreclientmd) + +Defined in: [client.ts:88](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L88) + +##### Parameters + +###### config? + +[`ClientConfig`](#interfacesclientconfigmd) + +##### Returns + +[`StoreClient`](#classesstoreclientmd) + +##### Inherited from + +`BaseClient.constructor` + +### Methods + +#### deleteItem() + +> **deleteItem**(`namespace`, `key`): `Promise`\<`void`\> + +Defined in: [client.ts:1296](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1296) + +Delete an item. + +##### Parameters + +###### namespace + +`string`[] + +A list of strings representing the namespace path. + +###### key + +`string` + +The unique identifier for the item. + +##### Returns + +`Promise`\<`void`\> + +Promise + +*** + +#### getItem() + +> **getItem**(`namespace`, `key`, `options`?): `Promise`\<`null` \| `Item`\> + +Defined in: [client.ts:1252](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1252) + +Retrieve a single item. + +##### Parameters + +###### namespace + +`string`[] + +A list of strings representing the namespace path. + +###### key + +`string` + +The unique identifier for the item. + +###### options? + +####### refreshTtl? + +`null` \| `boolean` + +Whether to refresh the TTL on this read operation. If null, uses the store's default behavior. + +##### Returns + +`Promise`\<`null` \| `Item`\> + +Promise + +##### Example + +```typescript +const item = await client.store.getItem( + ["documents", "user123"], + "item456", + { refreshTtl: true } +); +console.log(item); +// { +// namespace: ["documents", "user123"], +// key: "item456", +// value: { title: "My Document", content: "Hello World" }, +// createdAt: "2024-07-30T12:00:00Z", +// updatedAt: "2024-07-30T12:00:00Z" +// } +``` + +*** + +#### listNamespaces() + +> **listNamespaces**(`options`?): `Promise`\<`ListNamespaceResponse`\> + +Defined in: [client.ts:1392](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1392) + +List namespaces with optional match conditions. + +##### Parameters + +###### options? + +####### limit? + +`number` + +Maximum number of namespaces to return (default is 100). + +####### maxDepth? + +`number` + +Optional integer specifying the maximum depth of namespaces to return. + +####### offset? + +`number` + +Number of namespaces to skip before returning results (default is 0). + +####### prefix? + +`string`[] + +Optional list of strings representing the prefix to filter namespaces. + +####### suffix? + +`string`[] + +Optional list of strings representing the suffix to filter namespaces. + +##### Returns + +`Promise`\<`ListNamespaceResponse`\> + +Promise + +*** + +#### putItem() + +> **putItem**(`namespace`, `key`, `value`, `options`?): `Promise`\<`void`\> + +Defined in: [client.ts:1196](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1196) + +Store or update an item. + +##### Parameters + +###### namespace + +`string`[] + +A list of strings representing the namespace path. + +###### key + +`string` + +The unique identifier for the item within the namespace. + +###### value + +`Record`\<`string`, `any`\> + +A dictionary containing the item's data. + +###### options? + +####### index? + +`null` \| `false` \| `string`[] + +Controls search indexing - null (use defaults), false (disable), or list of field paths to index. + +####### ttl? + +`null` \| `number` + +Optional time-to-live in minutes for the item, or null for no expiration. + +##### Returns + +`Promise`\<`void`\> + +Promise + +##### Example + +```typescript +await client.store.putItem( + ["documents", "user123"], + "item456", + { title: "My Document", content: "Hello World" }, + { ttl: 60 } // expires in 60 minutes +); +``` + +*** + +#### searchItems() + +> **searchItems**(`namespacePrefix`, `options`?): `Promise`\<`SearchItemsResponse`\> + +Defined in: [client.ts:1347](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L1347) + +Search for items within a namespace prefix. + +##### Parameters + +###### namespacePrefix + +`string`[] + +List of strings representing the namespace prefix. + +###### options? + +####### filter? + +`Record`\<`string`, `any`\> + +Optional dictionary of key-value pairs to filter results. + +####### limit? + +`number` + +Maximum number of items to return (default is 10). + +####### offset? + +`number` + +Number of items to skip before returning results (default is 0). + +####### query? + +`string` + +Optional search query. + +####### refreshTtl? + +`null` \| `boolean` + +Whether to refresh the TTL on items returned by this search. If null, uses the store's default behavior. + +##### Returns + +`Promise`\<`SearchItemsResponse`\> + +Promise + +##### Example + +```typescript +const results = await client.store.searchItems( + ["documents"], + { + filter: { author: "John Doe" }, + limit: 5, + refreshTtl: true + } +); +console.log(results); +// { +// items: [ +// { +// namespace: ["documents", "user123"], +// key: "item789", +// value: { title: "Another Document", author: "John Doe" }, +// createdAt: "2024-07-30T12:00:00Z", +// updatedAt: "2024-07-30T12:00:00Z" +// }, +// // ... additional items ... +// ] +// } +``` + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / ThreadsClient + +## Class: ThreadsClient\ + +Defined in: [client.ts:489](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L489) + +### Extends + +- `BaseClient` + +### Type Parameters + +• **TStateType** = `DefaultValues` + +• **TUpdateType** = `TStateType` + +### Constructors + +#### new ThreadsClient() + +> **new ThreadsClient**\<`TStateType`, `TUpdateType`\>(`config`?): [`ThreadsClient`](#classesthreadsclientmd)\<`TStateType`, `TUpdateType`\> + +Defined in: [client.ts:88](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L88) + +##### Parameters + +###### config? + +[`ClientConfig`](#interfacesclientconfigmd) + +##### Returns + +[`ThreadsClient`](#classesthreadsclientmd)\<`TStateType`, `TUpdateType`\> + +##### Inherited from + +`BaseClient.constructor` + +### Methods + +#### copy() + +> **copy**(`threadId`): `Promise`\<`Thread`\<`TStateType`\>\> + +Defined in: [client.ts:566](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L566) + +Copy an existing thread + +##### Parameters + +###### threadId + +`string` + +ID of the thread to be copied + +##### Returns + +`Promise`\<`Thread`\<`TStateType`\>\> + +Newly copied thread + +*** + +#### create() + +> **create**(`payload`?): `Promise`\<`Thread`\<`TStateType`\>\> + +Defined in: [client.ts:511](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L511) + +Create a new thread. + +##### Parameters + +###### payload? + +Payload for creating a thread. + +####### graphId? + +`string` + +Graph ID to associate with the thread. + +####### ifExists? + +`OnConflictBehavior` + +How to handle duplicate creation. + +**Default** + +```ts +"raise" +``` + +####### metadata? + +`Metadata` + +Metadata for the thread. + +####### supersteps? + +`object`[] + +Apply a list of supersteps when creating a thread, each containing a sequence of updates. + +Used for copying a thread between deployments. + +####### threadId? + +`string` + +ID of the thread to create. + +If not provided, a random UUID will be generated. + +##### Returns + +`Promise`\<`Thread`\<`TStateType`\>\> + +The created thread. + +*** + +#### delete() + +> **delete**(`threadId`): `Promise`\<`void`\> + +Defined in: [client.ts:599](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L599) + +Delete a thread. + +##### Parameters + +###### threadId + +`string` + +ID of the thread. + +##### Returns + +`Promise`\<`void`\> + +*** + +#### get() + +> **get**\<`ValuesType`\>(`threadId`): `Promise`\<`Thread`\<`ValuesType`\>\> + +Defined in: [client.ts:499](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L499) + +Get a thread by ID. + +##### Type Parameters + +• **ValuesType** = `TStateType` + +##### Parameters + +###### threadId + +`string` + +ID of the thread. + +##### Returns + +`Promise`\<`Thread`\<`ValuesType`\>\> + +The thread. + +*** + +#### getHistory() + +> **getHistory**\<`ValuesType`\>(`threadId`, `options`?): `Promise`\<`ThreadState`\<`ValuesType`\>[]\> + +Defined in: [client.ts:752](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L752) + +Get all past states for a thread. + +##### Type Parameters + +• **ValuesType** = `TStateType` + +##### Parameters + +###### threadId + +`string` + +ID of the thread. + +###### options? + +Additional options. + +####### before? + +`Config` + +####### checkpoint? + +`Partial`\<`Omit`\<`Checkpoint`, `"thread_id"`\>\> + +####### limit? + +`number` + +####### metadata? + +`Metadata` + +##### Returns + +`Promise`\<`ThreadState`\<`ValuesType`\>[]\> + +List of thread states. + +*** + +#### getState() + +> **getState**\<`ValuesType`\>(`threadId`, `checkpoint`?, `options`?): `Promise`\<`ThreadState`\<`ValuesType`\>\> + +Defined in: [client.ts:659](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L659) + +Get state for a thread. + +##### Type Parameters + +• **ValuesType** = `TStateType` + +##### Parameters + +###### threadId + +`string` + +ID of the thread. + +###### checkpoint? + +`string` | `Checkpoint` + +###### options? + +####### subgraphs? + +`boolean` + +##### Returns + +`Promise`\<`ThreadState`\<`ValuesType`\>\> + +Thread state. + +*** + +#### patchState() + +> **patchState**(`threadIdOrConfig`, `metadata`): `Promise`\<`void`\> + +Defined in: [client.ts:722](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L722) + +Patch the metadata of a thread. + +##### Parameters + +###### threadIdOrConfig + +Thread ID or config to patch the state of. + +`string` | `Config` + +###### metadata + +`Metadata` + +Metadata to patch the state with. + +##### Returns + +`Promise`\<`void`\> + +*** + +#### search() + +> **search**\<`ValuesType`\>(`query`?): `Promise`\<`Thread`\<`ValuesType`\>[]\> + +Defined in: [client.ts:611](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L611) + +List threads + +##### Type Parameters + +• **ValuesType** = `TStateType` + +##### Parameters + +###### query? + +Query options + +####### limit? + +`number` + +Maximum number of threads to return. +Defaults to 10 + +####### metadata? + +`Metadata` + +Metadata to filter threads by. + +####### offset? + +`number` + +Offset to start from. + +####### sortBy? + +`ThreadSortBy` + +Sort by. + +####### sortOrder? + +`SortOrder` + +Sort order. +Must be one of 'asc' or 'desc'. + +####### status? + +`ThreadStatus` + +Thread status to filter on. +Must be one of 'idle', 'busy', 'interrupted' or 'error'. + +##### Returns + +`Promise`\<`Thread`\<`ValuesType`\>[]\> + +List of threads + +*** + +#### update() + +> **update**(`threadId`, `payload`?): `Promise`\<`Thread`\<`DefaultValues`\>\> + +Defined in: [client.ts:579](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L579) + +Update a thread. + +##### Parameters + +###### threadId + +`string` + +ID of the thread. + +###### payload? + +Payload for updating the thread. + +####### metadata? + +`Metadata` + +Metadata for the thread. + +##### Returns + +`Promise`\<`Thread`\<`DefaultValues`\>\> + +The updated thread. + +*** + +#### updateState() + +> **updateState**\<`ValuesType`\>(`threadId`, `options`): `Promise`\<`Pick`\<`Config`, `"configurable"`\>\> + +Defined in: [client.ts:693](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L693) + +Add state to a thread. + +##### Type Parameters + +• **ValuesType** = `TUpdateType` + +##### Parameters + +###### threadId + +`string` + +The ID of the thread. + +###### options + +####### asNode? + +`string` + +####### checkpoint? + +`Checkpoint` + +####### checkpointId? + +`string` + +####### values + +`ValuesType` + +##### Returns + +`Promise`\<`Pick`\<`Config`, `"configurable"`\>\> + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / getApiKey + +## Function: getApiKey() + +> **getApiKey**(`apiKey`?): `undefined` \| `string` + +Defined in: [client.ts:53](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L53) + +Get the API key from the environment. +Precedence: + 1. explicit argument + 2. LANGGRAPH_API_KEY + 3. LANGSMITH_API_KEY + 4. LANGCHAIN_API_KEY + +### Parameters + +#### apiKey? + +`string` + +Optional API key provided as an argument + +### Returns + +`undefined` \| `string` + +The API key if found, otherwise undefined + + + + +[**@langchain/langgraph-sdk**](#readmemd) + +*** + +[@langchain/langgraph-sdk](#readmemd) / ClientConfig + +## Interface: ClientConfig + +Defined in: [client.ts:71](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L71) + +### Properties + +#### apiKey? + +> `optional` **apiKey**: `string` + +Defined in: [client.ts:73](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L73) + +*** + +#### apiUrl? + +> `optional` **apiUrl**: `string` + +Defined in: [client.ts:72](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L72) + +*** + +#### callerOptions? + +> `optional` **callerOptions**: `AsyncCallerParams` + +Defined in: [client.ts:74](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L74) + +*** + +#### defaultHeaders? + +> `optional` **defaultHeaders**: `Record`\<`string`, `undefined` \| `null` \| `string`\> + +Defined in: [client.ts:76](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L76) + +*** + +#### timeoutMs? + +> `optional` **timeoutMs**: `number` + +Defined in: [client.ts:75](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/client.ts#L75) + + + + +**@langchain/langgraph-sdk** + +*** + +## @langchain/langgraph-sdk/react + +### Interfaces + +- [UseStream](#reactinterfacesusestreammd) +- [UseStreamOptions](#reactinterfacesusestreamoptionsmd) + +### Type Aliases + +- [MessageMetadata](#reacttype-aliasesmessagemetadatamd) + +### Functions + +- [useStream](#reactfunctionsusestreammd) + + + + +[**@langchain/langgraph-sdk**](#reactreadmemd) + +*** + +[@langchain/langgraph-sdk](#reactreadmemd) / useStream + +## Function: useStream() + +> **useStream**\<`StateType`, `Bag`\>(`options`): [`UseStream`](#reactinterfacesusestreammd)\<`StateType`, `Bag`\> + +Defined in: [react/stream.tsx:618](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L618) + +### Type Parameters + +• **StateType** *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\> + +• **Bag** *extends* `object` = `BagTemplate` + +### Parameters + +#### options + +[`UseStreamOptions`](#reactinterfacesusestreamoptionsmd)\<`StateType`, `Bag`\> + +### Returns + +[`UseStream`](#reactinterfacesusestreammd)\<`StateType`, `Bag`\> + + + + +[**@langchain/langgraph-sdk**](#reactreadmemd) + +*** + +[@langchain/langgraph-sdk](#reactreadmemd) / UseStream + +## Interface: UseStream\ + +Defined in: [react/stream.tsx:507](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L507) + +### Type Parameters + +• **StateType** *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\> + +• **Bag** *extends* `BagTemplate` = `BagTemplate` + +### Properties + +#### assistantId + +> **assistantId**: `string` + +Defined in: [react/stream.tsx:592](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L592) + +The ID of the assistant to use. + +*** + +#### branch + +> **branch**: `string` + +Defined in: [react/stream.tsx:542](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L542) + +The current branch of the thread. + +*** + +#### client + +> **client**: `Client` + +Defined in: [react/stream.tsx:587](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L587) + +LangGraph SDK client used to send request and receive responses. + +*** + +#### error + +> **error**: `unknown` + +Defined in: [react/stream.tsx:519](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L519) + +Last seen error from the thread or during streaming. + +*** + +#### experimental\_branchTree + +> **experimental\_branchTree**: `Sequence`\<`StateType`\> + +Defined in: [react/stream.tsx:558](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L558) + +**`Experimental`** + +Tree of all branches for the thread. + +*** + +#### getMessagesMetadata() + +> **getMessagesMetadata**: (`message`, `index`?) => `undefined` \| [`MessageMetadata`](#reacttype-aliasesmessagemetadatamd)\<`StateType`\> + +Defined in: [react/stream.tsx:579](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L579) + +Get the metadata for a message, such as first thread state the message +was seen in and branch information. + +##### Parameters + +###### message + +`Message` + +The message to get the metadata for. + +###### index? + +`number` + +The index of the message in the thread. + +##### Returns + +`undefined` \| [`MessageMetadata`](#reacttype-aliasesmessagemetadatamd)\<`StateType`\> + +The metadata for the message. + +*** + +#### history + +> **history**: `ThreadState`\<`StateType`\>[] + +Defined in: [react/stream.tsx:552](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L552) + +Flattened history of thread states of a thread. + +*** + +#### interrupt + +> **interrupt**: `undefined` \| `Interrupt`\<`GetInterruptType`\<`Bag`\>\> + +Defined in: [react/stream.tsx:563](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L563) + +Get the interrupt value for the stream if interrupted. + +*** + +#### isLoading + +> **isLoading**: `boolean` + +Defined in: [react/stream.tsx:524](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L524) + +Whether the stream is currently running. + +*** + +#### messages + +> **messages**: `Message`[] + +Defined in: [react/stream.tsx:569](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L569) + +Messages inferred from the thread. +Will automatically update with incoming message chunks. + +*** + +#### setBranch() + +> **setBranch**: (`branch`) => `void` + +Defined in: [react/stream.tsx:547](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L547) + +Set the branch of the thread. + +##### Parameters + +###### branch + +`string` + +##### Returns + +`void` + +*** + +#### stop() + +> **stop**: () => `void` + +Defined in: [react/stream.tsx:529](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L529) + +Stops the stream. + +##### Returns + +`void` + +*** + +#### submit() + +> **submit**: (`values`, `options`?) => `void` + +Defined in: [react/stream.tsx:534](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L534) + +Create and stream a run to the thread. + +##### Parameters + +###### values + +`undefined` | `null` | `GetUpdateType`\<`Bag`, `StateType`\> + +###### options? + +`SubmitOptions`\<`StateType`, `GetConfigurableType`\<`Bag`\>\> + +##### Returns + +`void` + +*** + +#### values + +> **values**: `StateType` + +Defined in: [react/stream.tsx:514](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L514) + +The current values of the thread. + + + + +[**@langchain/langgraph-sdk**](#reactreadmemd) + +*** + +[@langchain/langgraph-sdk](#reactreadmemd) / UseStreamOptions + +## Interface: UseStreamOptions\ + +Defined in: [react/stream.tsx:408](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L408) + +### Type Parameters + +• **StateType** *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\> + +• **Bag** *extends* `BagTemplate` = `BagTemplate` + +### Properties + +#### apiKey? + +> `optional` **apiKey**: `string` + +Defined in: [react/stream.tsx:430](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L430) + +The API key to use. + +*** + +#### apiUrl? + +> `optional` **apiUrl**: `string` + +Defined in: [react/stream.tsx:425](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L425) + +The URL of the API to use. + +*** + +#### assistantId + +> **assistantId**: `string` + +Defined in: [react/stream.tsx:415](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L415) + +The ID of the assistant to use. + +*** + +#### callerOptions? + +> `optional` **callerOptions**: `AsyncCallerParams` + +Defined in: [react/stream.tsx:435](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L435) + +Custom call options, such as custom fetch implementation. + +*** + +#### client? + +> `optional` **client**: `Client`\<`DefaultValues`, `DefaultValues`, `unknown`\> + +Defined in: [react/stream.tsx:420](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L420) + +Client used to send requests. + +*** + +#### defaultHeaders? + +> `optional` **defaultHeaders**: `Record`\<`string`, `undefined` \| `null` \| `string`\> + +Defined in: [react/stream.tsx:440](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L440) + +Default headers to send with requests. + +*** + +#### messagesKey? + +> `optional` **messagesKey**: `string` + +Defined in: [react/stream.tsx:448](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L448) + +Specify the key within the state that contains messages. +Defaults to "messages". + +##### Default + +```ts +"messages" +``` + +*** + +#### onCustomEvent()? + +> `optional` **onCustomEvent**: (`data`, `options`) => `void` + +Defined in: [react/stream.tsx:470](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L470) + +Callback that is called when a custom event is received. + +##### Parameters + +###### data + +`GetCustomEventType`\<`Bag`\> + +###### options + +####### mutate + +(`update`) => `void` + +##### Returns + +`void` + +*** + +#### onDebugEvent()? + +> `optional` **onDebugEvent**: (`data`) => `void` + +Defined in: [react/stream.tsx:494](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L494) + +**`Internal`** + +Callback that is called when a debug event is received. + This API is experimental and subject to change. + +##### Parameters + +###### data + +`unknown` + +##### Returns + +`void` + +*** + +#### onError()? + +> `optional` **onError**: (`error`) => `void` + +Defined in: [react/stream.tsx:453](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L453) + +Callback that is called when an error occurs. + +##### Parameters + +###### error + +`unknown` + +##### Returns + +`void` + +*** + +#### onFinish()? + +> `optional` **onFinish**: (`state`) => `void` + +Defined in: [react/stream.tsx:458](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L458) + +Callback that is called when the stream is finished. + +##### Parameters + +###### state + +`ThreadState`\<`StateType`\> + +##### Returns + +`void` + +*** + +#### onLangChainEvent()? + +> `optional` **onLangChainEvent**: (`data`) => `void` + +Defined in: [react/stream.tsx:488](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L488) + +Callback that is called when a LangChain event is received. + +##### Parameters + +###### data + +####### data + +`unknown` + +####### event + +`string` & `object` \| `"on_tool_start"` \| `"on_tool_stream"` \| `"on_tool_end"` \| `"on_chat_model_start"` \| `"on_chat_model_stream"` \| `"on_chat_model_end"` \| `"on_llm_start"` \| `"on_llm_stream"` \| `"on_llm_end"` \| `"on_chain_start"` \| `"on_chain_stream"` \| `"on_chain_end"` \| `"on_retriever_start"` \| `"on_retriever_stream"` \| `"on_retriever_end"` \| `"on_prompt_start"` \| `"on_prompt_stream"` \| `"on_prompt_end"` + +####### metadata + +`Record`\<`string`, `unknown`\> + +####### name + +`string` + +####### parent_ids + +`string`[] + +####### run_id + +`string` + +####### tags + +`string`[] + +##### Returns + +`void` + +##### See + +https://langchain-ai.github.io/langgraph/cloud/how-tos/stream_events/#stream-graph-in-events-mode for more details. + +*** + +#### onMetadataEvent()? + +> `optional` **onMetadataEvent**: (`data`) => `void` + +Defined in: [react/stream.tsx:482](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L482) + +Callback that is called when a metadata event is received. + +##### Parameters + +###### data + +####### run_id + +`string` + +####### thread_id + +`string` + +##### Returns + +`void` + +*** + +#### onThreadId()? + +> `optional` **onThreadId**: (`threadId`) => `void` + +Defined in: [react/stream.tsx:504](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L504) + +Callback that is called when the thread ID is updated (ie when a new thread is created). + +##### Parameters + +###### threadId + +`string` + +##### Returns + +`void` + +*** + +#### onUpdateEvent()? + +> `optional` **onUpdateEvent**: (`data`) => `void` + +Defined in: [react/stream.tsx:463](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L463) + +Callback that is called when an update event is received. + +##### Parameters + +###### data + +##### Returns + +`void` + +*** + +#### threadId? + +> `optional` **threadId**: `null` \| `string` + +Defined in: [react/stream.tsx:499](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L499) + +The ID of the thread to fetch history and current values from. + + + + +[**@langchain/langgraph-sdk**](#reactreadmemd) + +*** + +[@langchain/langgraph-sdk](#reactreadmemd) / MessageMetadata + +## Type Alias: MessageMetadata\ + +> **MessageMetadata**\<`StateType`\>: `object` + +Defined in: [react/stream.tsx:169](https://github.com/langchain-ai/langgraph/blob/d4f644877db6264bd46d0b00fc4c37f174e502d5/libs/sdk-js/src/react/stream.tsx#L169) + +### Type Parameters + +• **StateType** *extends* `Record`\<`string`, `unknown`\> + +### Type declaration + +#### branch + +> **branch**: `string` \| `undefined` + +The branch of the message. + +#### branchOptions + +> **branchOptions**: `string`[] \| `undefined` + +The list of branches this message is part of. +This is useful for displaying branching controls. + +#### firstSeenState + +> **firstSeenState**: `ThreadState`\<`StateType`\> \| `undefined` + +The first thread state the message was seen in. + +#### messageId + +> **messageId**: `string` + +The ID of the message used. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index a59c835dd..7cfbb246f 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -263,7 +263,7 @@ nav: - Control Plane API: cloud/reference/api/api_ref_control_plane.md - CLI: cloud/reference/cli.md - SDK (Python): cloud/reference/sdk/python_sdk_ref.md - - SDK (JS/TS): cloud/reference/sdk/js_ts_sdk_ref.md + - SDK (JS/TS): https://langchain-ai.github.io/langgraphjs/reference/modules/sdk.html - RemoteGraph: reference/remote_graph.md - Environment variables: cloud/reference/env_var.md diff --git a/libs/sdk-js/.gitignore b/libs/sdk-js/.gitignore deleted file mode 100644 index db1a582d0..000000000 --- a/libs/sdk-js/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -index.cjs -index.js -index.d.ts -index.d.cts -client.cjs -client.js -client.d.ts -client.d.cts -auth.cjs -auth.js -auth.d.ts -auth.d.cts -react.cjs -react.js -react.d.ts -react.d.cts -react-ui.cjs -react-ui.js -react-ui.d.ts -react-ui.d.cts -react-ui/server.cjs -react-ui/server.js -react-ui/server.d.ts -react-ui/server.d.cts -node_modules -dist -.yarn -docs diff --git a/libs/sdk-js/.prettierrc b/libs/sdk-js/.prettierrc deleted file mode 100644 index 0967ef424..000000000 --- a/libs/sdk-js/.prettierrc +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/libs/sdk-js/LICENSE b/libs/sdk-js/LICENSE deleted file mode 100644 index fc0602fee..000000000 --- a/libs/sdk-js/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 LangChain, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/libs/sdk-js/README.md b/libs/sdk-js/README.md deleted file mode 100644 index fb47ef3cb..000000000 --- a/libs/sdk-js/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# LangGraph JS/TS SDK - -This repository contains the JS/TS SDK for interacting with the LangGraph REST API. - -## Quick Start - -To get started with the JS/TS SDK, [install the package](https://www.npmjs.com/package/@langchain/langgraph-sdk) - -```bash -yarn add @langchain/langgraph-sdk -``` - -You will need a running LangGraph API server. If you're running a server locally using `langgraph-cli`, SDK will automatically point at `http://localhost:8123`, otherwise -you would need to specify the server URL when creating a client. - -```js -import { Client } from "@langchain/langgraph-sdk"; - -const client = new Client(); - -// List all assistants -const assistants = await client.assistants.search({ - metadata: null, - offset: 0, - limit: 10, -}); - -// We auto-create an assistant for each graph you register in config. -const agent = assistants[0]; - -// Start a new thread -const thread = await client.threads.create(); - -// Start a streaming run -const messages = [{ role: "human", content: "what's the weather in la" }]; - -const streamResponse = client.runs.stream( - thread["thread_id"], - agent["assistant_id"], - { - input: { messages }, - } -); - -for await (const chunk of streamResponse) { - console.log(chunk); -} -``` - -## Documentation - -To generate documentation, run the following commands: - -1. Generate docs. - - yarn typedoc - -1. Consolidate doc files into one markdown file. - - npx concat-md --decrease-title-levels --ignore=js_ts_sdk_ref.md --start-title-level-at 2 docs > docs/js_ts_sdk_ref.md - -1. Copy `js_ts_sdk_ref.md` to MkDocs directory. - - cp docs/js_ts_sdk_ref.md ../../docs/docs/cloud/reference/sdk/js_ts_sdk_ref.md diff --git a/libs/sdk-js/jest.config.js b/libs/sdk-js/jest.config.js deleted file mode 100644 index 10218cfab..000000000 --- a/libs/sdk-js/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @type {import('jest').Config} */ -export default { - preset: 'ts-jest', - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - }, - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - useESM: true, - }, - ], - }, -}; diff --git a/libs/sdk-js/langchain.config.js b/libs/sdk-js/langchain.config.js deleted file mode 100644 index 0c8a691cd..000000000 --- a/libs/sdk-js/langchain.config.js +++ /dev/null @@ -1,27 +0,0 @@ -import { resolve, dirname } from "node:path"; -import { fileURLToPath } from "node:url"; - -/** - * @param {string} relativePath - * @returns {string} - */ -function abs(relativePath) { - return resolve(dirname(fileURLToPath(import.meta.url)), relativePath); -} - -export const config = { - internals: [/react/], - entrypoints: { - index: "index", - client: "client", - auth: "auth/index", - react: "react/index", - "react-ui": "react-ui/index", - "react-ui/server": "react-ui/server/index", - }, - tsConfigPath: resolve("./tsconfig.json"), - cjsSource: "./dist-cjs", - cjsDestination: "./dist", - additionalGitignorePaths: ["docs"], - abs, -}; diff --git a/libs/sdk-js/package.json b/libs/sdk-js/package.json deleted file mode 100644 index bc2b2fa5d..000000000 --- a/libs/sdk-js/package.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "name": "@langchain/langgraph-sdk", - "version": "0.0.89", - "description": "Client library for interacting with the LangGraph API", - "type": "module", - "packageManager": "yarn@1.22.19", - "scripts": { - "clean": "rm -rf dist/ dist-cjs/", - "build": "yarn clean && yarn lc_build --create-entrypoints --pre --tree-shaking", - "prepack": "yarn run build", - "format": "prettier --write src", - "lint": "prettier --check src && tsc --noEmit", - "test": "vitest", - "typedoc": "typedoc && typedoc src/react/index.ts --out docs/react --options typedoc.react.json && typedoc src/auth/index.ts --out docs/auth --options typedoc.auth.json" - }, - "main": "index.js", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.15", - "p-queue": "^6.6.2", - "p-retry": "4", - "uuid": "^9.0.0" - }, - "devDependencies": { - "@langchain/langgraph-api": "~0.0.41", - "@langchain/core": "^0.3.61", - "@langchain/langgraph": "^0.3.5", - "@langchain/scripts": "^0.1.4", - "@testing-library/dom": "^10.4.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "^14.6.1", - "@tsconfig/recommended": "^1.0.2", - "@types/node": "^20.12.12", - "@types/react": "^19.0.8", - "@types/react-dom": "^19.0.3", - "@types/uuid": "^9.0.1", - "@vitejs/plugin-react": "^4.4.1", - "concat-md": "^0.5.1", - "hono": "^4.8.2", - "jsdom": "^26.1.0", - "msw": "^2.8.2", - "prettier": "^3.2.5", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "typedoc": "^0.27.7", - "typedoc-plugin-markdown": "^4.4.2", - "typescript": "^5.4.5", - "vitest": "^3.1.3" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.31 <0.4.0", - "react": "^18 || ^19" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "@langchain/core": { - "optional": true - } - }, - "exports": { - ".": { - "types": { - "import": "./index.d.ts", - "require": "./index.d.cts", - "default": "./index.d.ts" - }, - "import": "./index.js", - "require": "./index.cjs" - }, - "./client": { - "types": { - "import": "./client.d.ts", - "require": "./client.d.cts", - "default": "./client.d.ts" - }, - "import": "./client.js", - "require": "./client.cjs" - }, - "./auth": { - "types": { - "import": "./auth.d.ts", - "require": "./auth.d.cts", - "default": "./auth.d.ts" - }, - "import": "./auth.js", - "require": "./auth.cjs" - }, - "./react": { - "types": { - "import": "./react.d.ts", - "require": "./react.d.cts", - "default": "./react.d.ts" - }, - "import": "./react.js", - "require": "./react.cjs" - }, - "./react-ui": { - "types": { - "import": "./react-ui.d.ts", - "require": "./react-ui.d.cts", - "default": "./react-ui.d.ts" - }, - "import": "./react-ui.js", - "require": "./react-ui.cjs" - }, - "./react-ui/server": { - "types": { - "import": "./react-ui/server.d.ts", - "require": "./react-ui/server.d.cts", - "default": "./react-ui/server.d.ts" - }, - "import": "./react-ui/server.js", - "require": "./react-ui/server.cjs" - }, - "./package.json": "./package.json" - }, - "files": [ - "dist/", - "index.cjs", - "index.js", - "index.d.ts", - "index.d.cts", - "client.cjs", - "client.js", - "client.d.ts", - "client.d.cts", - "auth.cjs", - "auth.js", - "auth.d.ts", - "auth.d.cts", - "react.cjs", - "react.js", - "react.d.ts", - "react.d.cts", - "react-ui.cjs", - "react-ui.js", - "react-ui.d.ts", - "react-ui.d.cts", - "react-ui/server.cjs", - "react-ui/server.js", - "react-ui/server.d.ts", - "react-ui/server.d.cts" - ] -} diff --git a/libs/sdk-js/src/auth/error.ts b/libs/sdk-js/src/auth/error.ts deleted file mode 100644 index ace6df54c..000000000 --- a/libs/sdk-js/src/auth/error.ts +++ /dev/null @@ -1,80 +0,0 @@ -const HTTP_STATUS_MAPPING: { [key: number]: string } = { - 100: "Continue", - 101: "Switching Protocols", - 102: "Processing", - 103: "Early Hints", - 200: "OK", - 201: "Created", - 202: "Accepted", - 203: "Non-Authoritative Information", - 204: "No Content", - 205: "Reset Content", - 206: "Partial Content", - 207: "Multi-Status", - 208: "Already Reported", - 226: "IM Used", - 300: "Multiple Choices", - 301: "Moved Permanently", - 302: "Found", - 303: "See Other", - 304: "Not Modified", - 305: "Use Proxy", - 307: "Temporary Redirect", - 308: "Permanent Redirect", - 400: "Bad Request", - 401: "Unauthorized", - 402: "Payment Required", - 403: "Forbidden", - 404: "Not Found", - 405: "Method Not Allowed", - 406: "Not Acceptable", - 407: "Proxy Authentication Required", - 408: "Request Timeout", - 409: "Conflict", - 410: "Gone", - 411: "Length Required", - 412: "Precondition Failed", - 413: "Request Entity Too Large", - 414: "Request-URI Too Long", - 415: "Unsupported Media Type", - 416: "Requested Range Not Satisfiable", - 417: "Expectation Failed", - 418: "I'm a Teapot", - 421: "Misdirected Request", - 422: "Unprocessable Entity", - 423: "Locked", - 424: "Failed Dependency", - 425: "Too Early", - 426: "Upgrade Required", - 428: "Precondition Required", - 429: "Too Many Requests", - 431: "Request Header Fields Too Large", - 451: "Unavailable For Legal Reasons", - 500: "Internal Server Error", - 501: "Not Implemented", - 502: "Bad Gateway", - 503: "Service Unavailable", - 504: "Gateway Timeout", - 505: "HTTP Version Not Supported", - 506: "Variant Also Negotiates", - 507: "Insufficient Storage", - 508: "Loop Detected", - 510: "Not Extended", - 511: "Network Authentication Required", -}; - -export class HTTPException extends Error { - status: number; - headers: HeadersInit; - - constructor( - status: number, - options?: { message?: string; headers?: HeadersInit; cause?: unknown }, - ) { - super(options?.message ?? HTTP_STATUS_MAPPING[status] ?? "Unknown error", { - cause: options?.cause, - }); - this.status = status; - this.headers = options?.headers ?? {}; - } -} diff --git a/libs/sdk-js/src/auth/index.ts b/libs/sdk-js/src/auth/index.ts deleted file mode 100644 index c7b1ffb1f..000000000 --- a/libs/sdk-js/src/auth/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { - AuthenticateCallback, - AnyCallback, - CallbackEvent, - OnCallback, - BaseAuthReturn, - ToUserLike, - BaseUser, -} from "./types.js"; - -export class Auth< - TExtra = {}, - TAuthReturn extends BaseAuthReturn = BaseAuthReturn, - TUser extends BaseUser = ToUserLike, -> { - /** - * @internal - * @ignore - */ - "~handlerCache": { - authenticate?: AuthenticateCallback; - callbacks?: Record; - } = {}; - - authenticate( - cb: AuthenticateCallback, - ): Auth { - this["~handlerCache"].authenticate = cb; - return this as unknown as Auth; - } - - on(event: T, callback: OnCallback): this { - this["~handlerCache"].callbacks ??= {}; - const events: string[] = Array.isArray(event) ? event : [event]; - for (const event of events) { - this["~handlerCache"].callbacks[event] = callback as AnyCallback; - } - return this; - } -} - -export type { - Filters as AuthFilters, - EventValueMap as AuthEventValueMap, -} from "./types.js"; -export { HTTPException } from "./error.js"; diff --git a/libs/sdk-js/src/auth/types.ts b/libs/sdk-js/src/auth/types.ts deleted file mode 100644 index cc12c4e5b..000000000 --- a/libs/sdk-js/src/auth/types.ts +++ /dev/null @@ -1,411 +0,0 @@ -type Maybe = T | null | undefined; -type PromiseMaybe = Promise | T; - -interface AssistantConfig { - tags?: Maybe; - recursion_limit?: Maybe; - configurable?: Maybe<{ - thread_id?: Maybe; - thread_ts?: Maybe; - [key: string]: unknown; - }>; -} - -/** - * @inline - */ -interface AssistantCreate { - assistant_id?: Maybe; - metadata?: Maybe>; - config?: Maybe; - if_exists?: Maybe<"raise" | "do_nothing">; - name?: Maybe; - graph_id: string; -} - -/** - * @inline - */ -interface AssistantRead { - assistant_id: string; - metadata?: Maybe>; -} - -/** - * @inline - */ -interface AssistantUpdate { - assistant_id: string; - metadata?: Maybe>; - config?: Maybe; - graph_id?: Maybe; - name?: Maybe; - version?: Maybe; -} - -/** - * @inline - */ -interface AssistantDelete { - assistant_id: string; -} - -/** - * @inline - */ -interface AssistantSearch { - graph_id?: Maybe; - metadata?: Maybe>; - limit?: Maybe; - offset?: Maybe; -} - -/** - * @inline - */ -interface ThreadCreate { - thread_id?: Maybe; - metadata?: Maybe>; - if_exists?: Maybe<"raise" | "do_nothing">; -} - -/** - * @inline - */ -interface ThreadRead { - thread_id?: Maybe; -} - -/** - * @inline - */ -interface ThreadUpdate { - thread_id?: Maybe; - metadata?: Maybe>; - action?: Maybe<"interrupt" | "rollback">; -} - -/** - * @inline - */ -interface ThreadDelete { - thread_id?: Maybe; - run_id?: Maybe; -} - -/** - * @inline - */ -interface ThreadSearch { - thread_id?: Maybe; - status?: Maybe<"idle" | "busy" | "interrupted" | "error" | (string & {})>; - metadata?: Maybe>; - values?: Maybe>; - limit?: Maybe; - offset?: Maybe; -} - -/** - * @inline - */ -interface CronCreate { - payload?: Maybe>; - schedule: string; - cron_id?: Maybe; - thread_id?: Maybe; - user_id?: Maybe; - end_time?: Maybe; -} - -/** - * @inline - */ -interface CronRead { - cron_id: string; -} - -/** - * @inline - */ -interface CronUpdate { - cron_id: string; - payload?: Maybe>; - schedule?: Maybe; -} - -/** - * @inline - */ -interface CronDelete { - cron_id: string; -} - -/** - * @inline - */ -interface CronSearch { - assistant_id?: Maybe; - thread_id?: Maybe; - limit?: Maybe; - offset?: Maybe; -} - -/** - * @inline - */ -interface StorePut { - namespace: string[]; - key: string; - value: Record; -} - -/** - * @inline - */ -interface StoreGet { - namespace: Maybe; - key: string; -} - -/** - * @inline - */ -interface StoreSearch { - namespace?: Maybe; - filter?: Maybe>; - limit?: Maybe; - offset?: Maybe; - query?: Maybe; -} - -/** - * @inline - */ -interface StoreListNamespaces { - namespace?: Maybe; - suffix?: Maybe; - max_depth?: Maybe; - limit?: Maybe; - offset?: Maybe; -} - -/** - * @inline - */ -interface StoreDelete { - namespace?: Maybe; - key: string; -} - -/** - * @inline - */ -interface RunsCreate { - thread_id?: Maybe; - assistant_id: string; - run_id: string; - status: Maybe< - "pending" | "running" | "error" | "success" | "timeout" | "interrupted" - >; - metadata?: Maybe>; - prevent_insert_if_inflight?: Maybe; - multitask_strategy?: Maybe<"interrupt" | "rollback" | "reject" | "enqueue">; - if_not_exists?: Maybe<"reject" | "create">; - after_seconds?: Maybe; - kwargs: Record; -} - -export interface EventValueMap { - ["threads:create"]: ThreadCreate; - ["threads:read"]: ThreadRead; - ["threads:update"]: ThreadUpdate; - ["threads:delete"]: ThreadDelete; - ["threads:search"]: ThreadSearch; - ["threads:create_run"]: RunsCreate; - - ["assistants:create"]: AssistantCreate; - ["assistants:read"]: AssistantRead; - ["assistants:update"]: AssistantUpdate; - ["assistants:delete"]: AssistantDelete; - ["assistants:search"]: AssistantSearch; - - ["crons:create"]: CronCreate; - ["crons:read"]: CronRead; - ["crons:update"]: CronUpdate; - ["crons:delete"]: CronDelete; - ["crons:search"]: CronSearch; - - ["store:put"]: StorePut; - ["store:get"]: StoreGet; - ["store:search"]: StoreSearch; - ["store:list_namespaces"]: StoreListNamespaces; - ["store:delete"]: StoreDelete; -} -interface ResourceType { - threads: - | "threads:create" - | "threads:read" - | "threads:update" - | "threads:delete" - | "threads:search" - | "threads:create_run"; - - assistants: - | "assistants:create" - | "assistants:read" - | "assistants:update" - | "assistants:delete" - | "assistants:search"; - crons: - | "crons:create" - | "crons:read" - | "crons:update" - | "crons:delete" - | "crons:search"; - - store: - | "store:put" - | "store:get" - | "store:search" - | "store:list_namespaces" - | "store:delete"; -} -interface ActionType { - "*:create": "threads:create" | "assistants:create" | "crons:create"; - - "*:read": "threads:read" | "assistants:read" | "crons:read"; - - "*:update": "threads:update" | "assistants:update" | "crons:update"; - - "*:delete": - | "threads:delete" - | "assistants:delete" - | "crons:delete" - | "store:delete"; - - "*:search": - | "threads:search" - | "assistants:search" - | "crons:search" - | "store:search"; - - "*:create_run": "threads:create_run"; - - "*:put": "store:put"; - - "*:get": "store:get"; - - "*:list_namespaces": "store:list_namespaces"; -} - -export type BaseAuthReturn = - | { - is_authenticated?: boolean; - display_name?: string; - identity: string; - permissions: string[]; - } - | string; - -export interface BaseUser { - is_authenticated: boolean; - display_name: string; - identity: string; - permissions: string[]; -} - -export type ToUserLike = T extends string - ? { - is_authenticated: boolean; - display_name: string; - identity: string; - permissions: string[]; - } - : Omit & { - is_authenticated: boolean; - display_name: string; - }; - -type CallbackParameter< - Event extends string = string, - Resource extends string = string, - Action extends string = string, - Value extends unknown = unknown, - TUser extends BaseUser = BaseUser, -> = { - event: Event; - resource: Resource; - action: Action; - value: Value; - user: TUser; - permissions: string[]; -}; - -type ContextMap = { - [EventType in keyof EventValueMap]: CallbackParameter< - EventType, - EventType extends `${infer Resource}:${string}` ? Resource : never, - EventType extends `${string}:${infer Action}` ? Action : never, - EventValueMap[EventType], - BaseUser - >; -}; - -type ActionCallbackParameter< - T extends keyof ActionType, - TUser extends BaseUser = BaseUser, -> = ContextMap[ActionType[T]] & { user: TUser }; -type AuthCallbackParameter< - T extends keyof EventValueMap, - TUser extends BaseUser = BaseUser, -> = ContextMap[T] & { user: TUser }; -type ResourceCallbackParameter< - T extends keyof ResourceType, - TUser extends BaseUser = BaseUser, -> = ContextMap[ResourceType[T]] & { user: TUser }; - -export type Filters = { - [key in TKey]: string | { [op in "$contains" | "$eq"]?: string }; -}; - -export interface AuthenticateCallback { - (request: Request): PromiseMaybe; -} - -type OnKey = keyof ResourceType | keyof ActionType | keyof EventValueMap; - -type OnSingleParameter< - T extends OnKey, - TUser extends BaseUser = BaseUser, -> = T extends keyof ResourceType - ? ResourceCallbackParameter - : T extends keyof ActionType - ? ActionCallbackParameter - : T extends keyof EventValueMap - ? AuthCallbackParameter - : never; - -type OnParameter< - T extends "*" | OnKey | OnKey[], - TUser extends BaseUser = BaseUser, -> = T extends OnKey[] - ? OnSingleParameter - : T extends "*" - ? AuthCallbackParameter - : T extends OnKey - ? OnSingleParameter - : never; - -export type AnyCallback = ( - request: CallbackParameter, -) => void | boolean | Filters; - -export type CallbackEvent = "*" | OnKey | OnKey[]; - -export type OnCallback< - T extends CallbackEvent, - TUser extends BaseUser = BaseUser, - TMetadata extends Record = Record, -> = ( - request: OnParameter, -) => void | boolean | Filters; diff --git a/libs/sdk-js/src/client.ts b/libs/sdk-js/src/client.ts deleted file mode 100644 index ae68bc180..000000000 --- a/libs/sdk-js/src/client.ts +++ /dev/null @@ -1,1699 +0,0 @@ -import { - Assistant, - AssistantGraph, - AssistantSortBy, - AssistantVersion, - CancelAction, - Checkpoint, - Config, - Cron, - CronCreateForThreadResponse, - CronCreateResponse, - CronSortBy, - DefaultValues, - GraphSchema, - Item, - ListNamespaceResponse, - Metadata, - Run, - RunStatus, - SearchItemsResponse, - SortOrder, - Subgraphs, - Thread, - ThreadSortBy, - ThreadState, - ThreadStatus, -} from "./schema.js"; -import type { - Command, - CronsCreatePayload, - OnConflictBehavior, - RunsCreatePayload, - RunsStreamPayload, - RunsWaitPayload, - StreamEvent, -} from "./types.js"; -import type { StreamMode, TypedAsyncGenerator } from "./types.stream.js"; -import { AsyncCaller, AsyncCallerParams } from "./utils/async_caller.js"; -import { getEnvironmentVariable } from "./utils/env.js"; -import { mergeSignals } from "./utils/signals.js"; -import { BytesLineDecoder, SSEDecoder } from "./utils/sse.js"; -import { IterableReadableStream } from "./utils/stream.js"; - -type HeaderValue = string | undefined | null; - -function* iterateHeaders( - headers: HeadersInit | Record, -): IterableIterator<[string, string | null]> { - let iter: Iterable<(HeaderValue | HeaderValue | null[])[]>; - let shouldClear = false; - - if (headers instanceof Headers) { - const entries: [string, string][] = []; - headers.forEach((value, name) => { - entries.push([name, value]); - }); - iter = entries; - } else if (Array.isArray(headers)) { - iter = headers; - } else { - shouldClear = true; - iter = Object.entries(headers ?? {}); - } - - for (let item of iter) { - const name = item[0]; - if (typeof name !== "string") - throw new TypeError( - `Expected header name to be a string, got ${typeof name}`, - ); - const values = Array.isArray(item[1]) ? item[1] : [item[1]]; - let didClear = false; - - for (const value of values) { - if (value === undefined) continue; - - // New object keys should always overwrite older headers - // Yield a null to clear the header in the headers object - // before adding the new value - if (shouldClear && !didClear) { - didClear = true; - yield [name, null]; - } - yield [name, value]; - } - } -} - -function mergeHeaders( - ...headerObjects: ( - | HeadersInit - | Record - | undefined - | null - )[] -) { - const outputHeaders = new Headers(); - for (const headers of headerObjects) { - if (!headers) continue; - for (const [name, value] of iterateHeaders(headers)) { - if (value === null) outputHeaders.delete(name); - else outputHeaders.append(name, value); - } - } - const headerEntries: [string, string][] = []; - outputHeaders.forEach((value, name) => { - headerEntries.push([name, value]); - }); - return Object.fromEntries(headerEntries); -} - -/** - * Get the API key from the environment. - * Precedence: - * 1. explicit argument - * 2. LANGGRAPH_API_KEY - * 3. LANGSMITH_API_KEY - * 4. LANGCHAIN_API_KEY - * - * @param apiKey - Optional API key provided as an argument - * @returns The API key if found, otherwise undefined - */ -export function getApiKey(apiKey?: string): string | undefined { - if (apiKey) { - return apiKey; - } - - const prefixes = ["LANGGRAPH", "LANGSMITH", "LANGCHAIN"]; - - for (const prefix of prefixes) { - const envKey = getEnvironmentVariable(`${prefix}_API_KEY`); - if (envKey) { - // Remove surrounding quotes - return envKey.trim().replace(/^["']|["']$/g, ""); - } - } - - return undefined; -} - -const REGEX_RUN_METADATA = - /(\/threads\/(?.+))?\/runs\/(?.+)/; - -function getRunMetadataFromResponse( - response: Response, -): { run_id: string; thread_id?: string } | undefined { - const contentLocation = response.headers.get("Content-Location"); - if (!contentLocation) return undefined; - - const match = REGEX_RUN_METADATA.exec(contentLocation); - - if (!match?.groups?.run_id) return undefined; - return { - run_id: match.groups.run_id, - thread_id: match.groups.thread_id || undefined, - }; -} - -export type RequestHook = ( - url: URL, - init: RequestInit, -) => Promise | RequestInit; - -export interface ClientConfig { - apiUrl?: string; - apiKey?: string; - callerOptions?: AsyncCallerParams; - timeoutMs?: number; - defaultHeaders?: Record; - onRequest?: RequestHook; -} - -class BaseClient { - protected asyncCaller: AsyncCaller; - - protected timeoutMs: number | undefined; - - protected apiUrl: string; - - protected defaultHeaders: Record; - - protected onRequest?: RequestHook; - - constructor(config?: ClientConfig) { - const callerOptions = { - maxRetries: 4, - maxConcurrency: 4, - ...config?.callerOptions, - }; - - let defaultApiUrl = "http://localhost:8123"; - if ( - !config?.apiUrl && - typeof globalThis === "object" && - globalThis != null - ) { - const fetchSmb = Symbol.for("langgraph_api:fetch"); - const urlSmb = Symbol.for("langgraph_api:url"); - - const global = globalThis as unknown as { - [fetchSmb]?: typeof fetch; - [urlSmb]?: string; - }; - - if (global[fetchSmb]) callerOptions.fetch ??= global[fetchSmb]; - if (global[urlSmb]) defaultApiUrl = global[urlSmb]; - } - - this.asyncCaller = new AsyncCaller(callerOptions); - this.timeoutMs = config?.timeoutMs; - - // default limit being capped by Chrome - // https://github.com/nodejs/undici/issues/1373 - // Regex to remove trailing slash, if present - this.apiUrl = config?.apiUrl?.replace(/\/$/, "") || defaultApiUrl; - this.defaultHeaders = config?.defaultHeaders || {}; - this.onRequest = config?.onRequest; - const apiKey = getApiKey(config?.apiKey); - if (apiKey) { - this.defaultHeaders["x-api-key"] = apiKey; - } - } - - protected prepareFetchOptions( - path: string, - options?: RequestInit & { - json?: unknown; - params?: Record; - timeoutMs?: number | null; - withResponse?: boolean; - }, - ): [url: URL, init: RequestInit] { - const mutatedOptions = { - ...options, - headers: mergeHeaders(this.defaultHeaders, options?.headers), - }; - - if (mutatedOptions.json) { - mutatedOptions.body = JSON.stringify(mutatedOptions.json); - mutatedOptions.headers = mergeHeaders(mutatedOptions.headers, { - "content-type": "application/json", - }); - delete mutatedOptions.json; - } - - if (mutatedOptions.withResponse) { - delete mutatedOptions.withResponse; - } - - let timeoutSignal: AbortSignal | null = null; - if (typeof options?.timeoutMs !== "undefined") { - if (options.timeoutMs != null) { - timeoutSignal = AbortSignal.timeout(options.timeoutMs); - } - } else if (this.timeoutMs != null) { - timeoutSignal = AbortSignal.timeout(this.timeoutMs); - } - - mutatedOptions.signal = mergeSignals(timeoutSignal, mutatedOptions.signal); - const targetUrl = new URL(`${this.apiUrl}${path}`); - - if (mutatedOptions.params) { - for (const [key, value] of Object.entries(mutatedOptions.params)) { - if (value == null) continue; - - let strValue = - typeof value === "string" || typeof value === "number" - ? value.toString() - : JSON.stringify(value); - - targetUrl.searchParams.append(key, strValue); - } - delete mutatedOptions.params; - } - - return [targetUrl, mutatedOptions]; - } - - protected async fetch( - path: string, - options: RequestInit & { - json?: unknown; - params?: Record; - timeoutMs?: number | null; - signal?: AbortSignal; - withResponse: true; - }, - ): Promise<[T, Response]>; - - protected async fetch( - path: string, - options?: RequestInit & { - json?: unknown; - params?: Record; - timeoutMs?: number | null; - signal?: AbortSignal; - withResponse?: false; - }, - ): Promise; - - protected async fetch( - path: string, - options?: RequestInit & { - json?: unknown; - params?: Record; - timeoutMs?: number | null; - signal?: AbortSignal; - withResponse?: boolean; - }, - ): Promise { - const [url, init] = this.prepareFetchOptions(path, options); - - let finalInit = init; - if (this.onRequest) { - finalInit = await this.onRequest(url, init); - } - - const response = await this.asyncCaller.fetch(url, finalInit); - - const body = (() => { - if (response.status === 202 || response.status === 204) { - return undefined as T; - } - return response.json() as Promise; - })(); - - if (options?.withResponse) { - return [await body, response]; - } - - return body; - } -} - -export class CronsClient extends BaseClient { - /** - * - * @param threadId The ID of the thread. - * @param assistantId Assistant ID to use for this cron job. - * @param payload Payload for creating a cron job. - * @returns The created background run. - */ - async createForThread( - threadId: string, - assistantId: string, - payload?: CronsCreatePayload, - ): Promise { - const json: Record = { - schedule: payload?.schedule, - input: payload?.input, - config: payload?.config, - metadata: payload?.metadata, - assistant_id: assistantId, - interrupt_before: payload?.interruptBefore, - interrupt_after: payload?.interruptAfter, - webhook: payload?.webhook, - multitask_strategy: payload?.multitaskStrategy, - if_not_exists: payload?.ifNotExists, - checkpoint_during: payload?.checkpointDuring, - }; - return this.fetch( - `/threads/${threadId}/runs/crons`, - { - method: "POST", - json, - }, - ); - } - - /** - * - * @param assistantId Assistant ID to use for this cron job. - * @param payload Payload for creating a cron job. - * @returns - */ - async create( - assistantId: string, - payload?: CronsCreatePayload, - ): Promise { - const json: Record = { - schedule: payload?.schedule, - input: payload?.input, - config: payload?.config, - metadata: payload?.metadata, - assistant_id: assistantId, - interrupt_before: payload?.interruptBefore, - interrupt_after: payload?.interruptAfter, - webhook: payload?.webhook, - multitask_strategy: payload?.multitaskStrategy, - if_not_exists: payload?.ifNotExists, - checkpoint_during: payload?.checkpointDuring, - }; - return this.fetch(`/runs/crons`, { - method: "POST", - json, - }); - } - - /** - * - * @param cronId Cron ID of Cron job to delete. - */ - async delete(cronId: string): Promise { - await this.fetch(`/runs/crons/${cronId}`, { - method: "DELETE", - }); - } - - /** - * - * @param query Query options. - * @returns List of crons. - */ - async search(query?: { - assistantId?: string; - threadId?: string; - limit?: number; - offset?: number; - sortBy?: CronSortBy; - sortOrder?: SortOrder; - }): Promise { - return this.fetch("/runs/crons/search", { - method: "POST", - json: { - assistant_id: query?.assistantId ?? undefined, - thread_id: query?.threadId ?? undefined, - limit: query?.limit ?? 10, - offset: query?.offset ?? 0, - sort_by: query?.sortBy ?? undefined, - sort_order: query?.sortOrder ?? undefined, - }, - }); - } -} - -export class AssistantsClient extends BaseClient { - /** - * Get an assistant by ID. - * - * @param assistantId The ID of the assistant. - * @returns Assistant - */ - async get(assistantId: string): Promise { - return this.fetch(`/assistants/${assistantId}`); - } - - /** - * Get the JSON representation of the graph assigned to a runnable - * @param assistantId The ID of the assistant. - * @param options.xray Whether to include subgraphs in the serialized graph representation. If an integer value is provided, only subgraphs with a depth less than or equal to the value will be included. - * @returns Serialized graph - */ - async getGraph( - assistantId: string, - options?: { xray?: boolean | number }, - ): Promise { - return this.fetch(`/assistants/${assistantId}/graph`, { - params: { xray: options?.xray }, - }); - } - - /** - * Get the state and config schema of the graph assigned to a runnable - * @param assistantId The ID of the assistant. - * @returns Graph schema - */ - async getSchemas(assistantId: string): Promise { - return this.fetch(`/assistants/${assistantId}/schemas`); - } - - /** - * Get the schemas of an assistant by ID. - * - * @param assistantId The ID of the assistant to get the schema of. - * @param options Additional options for getting subgraphs, such as namespace or recursion extraction. - * @returns The subgraphs of the assistant. - */ - async getSubgraphs( - assistantId: string, - options?: { - namespace?: string; - recurse?: boolean; - }, - ): Promise { - if (options?.namespace) { - return this.fetch( - `/assistants/${assistantId}/subgraphs/${options.namespace}`, - { params: { recurse: options?.recurse } }, - ); - } - return this.fetch(`/assistants/${assistantId}/subgraphs`, { - params: { recurse: options?.recurse }, - }); - } - - /** - * Create a new assistant. - * @param payload Payload for creating an assistant. - * @returns The created assistant. - */ - async create(payload: { - graphId: string; - config?: Config; - metadata?: Metadata; - assistantId?: string; - ifExists?: OnConflictBehavior; - name?: string; - description?: string; - }): Promise { - return this.fetch("/assistants", { - method: "POST", - json: { - graph_id: payload.graphId, - config: payload.config, - metadata: payload.metadata, - assistant_id: payload.assistantId, - if_exists: payload.ifExists, - name: payload.name, - description: payload.description, - }, - }); - } - - /** - * Update an assistant. - * @param assistantId ID of the assistant. - * @param payload Payload for updating the assistant. - * @returns The updated assistant. - */ - async update( - assistantId: string, - payload: { - graphId?: string; - config?: Config; - metadata?: Metadata; - name?: string; - description?: string; - }, - ): Promise { - return this.fetch(`/assistants/${assistantId}`, { - method: "PATCH", - json: { - graph_id: payload.graphId, - config: payload.config, - metadata: payload.metadata, - name: payload.name, - description: payload.description, - }, - }); - } - - /** - * Delete an assistant. - * - * @param assistantId ID of the assistant. - */ - async delete(assistantId: string): Promise { - return this.fetch(`/assistants/${assistantId}`, { - method: "DELETE", - }); - } - - /** - * List assistants. - * @param query Query options. - * @returns List of assistants. - */ - async search(query?: { - graphId?: string; - metadata?: Metadata; - limit?: number; - offset?: number; - sortBy?: AssistantSortBy; - sortOrder?: SortOrder; - }): Promise { - return this.fetch("/assistants/search", { - method: "POST", - json: { - graph_id: query?.graphId ?? undefined, - metadata: query?.metadata ?? undefined, - limit: query?.limit ?? 10, - offset: query?.offset ?? 0, - sort_by: query?.sortBy ?? undefined, - sort_order: query?.sortOrder ?? undefined, - }, - }); - } - - /** - * List all versions of an assistant. - * - * @param assistantId ID of the assistant. - * @returns List of assistant versions. - */ - async getVersions( - assistantId: string, - payload?: { - metadata?: Metadata; - limit?: number; - offset?: number; - }, - ): Promise { - return this.fetch( - `/assistants/${assistantId}/versions`, - { - method: "POST", - json: { - metadata: payload?.metadata ?? undefined, - limit: payload?.limit ?? 10, - offset: payload?.offset ?? 0, - }, - }, - ); - } - - /** - * Change the version of an assistant. - * - * @param assistantId ID of the assistant. - * @param version The version to change to. - * @returns The updated assistant. - */ - async setLatest(assistantId: string, version: number): Promise { - return this.fetch(`/assistants/${assistantId}/latest`, { - method: "POST", - json: { version }, - }); - } -} - -export class ThreadsClient< - TStateType = DefaultValues, - TUpdateType = TStateType, -> extends BaseClient { - /** - * Get a thread by ID. - * - * @param threadId ID of the thread. - * @returns The thread. - */ - async get( - threadId: string, - ): Promise> { - return this.fetch>(`/threads/${threadId}`); - } - - /** - * Create a new thread. - * - * @param payload Payload for creating a thread. - * @returns The created thread. - */ - async create(payload?: { - /** - * Metadata for the thread. - */ - metadata?: Metadata; - /** - * ID of the thread to create. - * - * If not provided, a random UUID will be generated. - */ - threadId?: string; - /** - * How to handle duplicate creation. - * - * @default "raise" - */ - ifExists?: OnConflictBehavior; - /** - * Graph ID to associate with the thread. - */ - graphId?: string; - /** - * Apply a list of supersteps when creating a thread, each containing a sequence of updates. - * - * Used for copying a thread between deployments. - */ - supersteps?: Array<{ - updates: Array<{ values: unknown; command?: Command; asNode: string }>; - }>; - }): Promise> { - return this.fetch>(`/threads`, { - method: "POST", - json: { - metadata: { - ...payload?.metadata, - graph_id: payload?.graphId, - }, - thread_id: payload?.threadId, - if_exists: payload?.ifExists, - supersteps: payload?.supersteps?.map((s) => ({ - updates: s.updates.map((u) => ({ - values: u.values, - command: u.command, - as_node: u.asNode, - })), - })), - }, - }); - } - - /** - * Copy an existing thread - * @param threadId ID of the thread to be copied - * @returns Newly copied thread - */ - async copy(threadId: string): Promise> { - return this.fetch>(`/threads/${threadId}/copy`, { - method: "POST", - }); - } - - /** - * Update a thread. - * - * @param threadId ID of the thread. - * @param payload Payload for updating the thread. - * @returns The updated thread. - */ - async update( - threadId: string, - payload?: { - /** - * Metadata for the thread. - */ - metadata?: Metadata; - }, - ): Promise { - return this.fetch(`/threads/${threadId}`, { - method: "PATCH", - json: { metadata: payload?.metadata }, - }); - } - - /** - * Delete a thread. - * - * @param threadId ID of the thread. - */ - async delete(threadId: string): Promise { - return this.fetch(`/threads/${threadId}`, { - method: "DELETE", - }); - } - - /** - * List threads - * - * @param query Query options - * @returns List of threads - */ - async search(query?: { - /** - * Metadata to filter threads by. - */ - metadata?: Metadata; - /** - * Maximum number of threads to return. - * Defaults to 10 - */ - limit?: number; - /** - * Offset to start from. - */ - offset?: number; - /** - * Thread status to filter on. - */ - status?: ThreadStatus; - /** - * Sort by. - */ - sortBy?: ThreadSortBy; - /** - * Sort order. - * Must be one of 'asc' or 'desc'. - */ - sortOrder?: SortOrder; - }): Promise[]> { - return this.fetch[]>("/threads/search", { - method: "POST", - json: { - metadata: query?.metadata ?? undefined, - limit: query?.limit ?? 10, - offset: query?.offset ?? 0, - status: query?.status, - sort_by: query?.sortBy, - sort_order: query?.sortOrder, - }, - }); - } - - /** - * Get state for a thread. - * - * @param threadId ID of the thread. - * @returns Thread state. - */ - async getState( - threadId: string, - checkpoint?: Checkpoint | string, - options?: { subgraphs?: boolean }, - ): Promise> { - if (checkpoint != null) { - if (typeof checkpoint !== "string") { - return this.fetch>( - `/threads/${threadId}/state/checkpoint`, - { - method: "POST", - json: { checkpoint, subgraphs: options?.subgraphs }, - }, - ); - } - - // deprecated - return this.fetch>( - `/threads/${threadId}/state/${checkpoint}`, - { params: { subgraphs: options?.subgraphs } }, - ); - } - - return this.fetch>(`/threads/${threadId}/state`, { - params: { subgraphs: options?.subgraphs }, - }); - } - - /** - * Add state to a thread. - * - * @param threadId The ID of the thread. - * @returns - */ - async updateState( - threadId: string, - options: { - values: ValuesType; - checkpoint?: Checkpoint; - checkpointId?: string; - asNode?: string; - }, - ): Promise> { - return this.fetch>( - `/threads/${threadId}/state`, - { - method: "POST", - json: { - values: options.values, - checkpoint_id: options.checkpointId, - checkpoint: options.checkpoint, - as_node: options?.asNode, - }, - }, - ); - } - - /** - * Patch the metadata of a thread. - * - * @param threadIdOrConfig Thread ID or config to patch the state of. - * @param metadata Metadata to patch the state with. - */ - async patchState( - threadIdOrConfig: string | Config, - metadata: Metadata, - ): Promise { - let threadId: string; - - if (typeof threadIdOrConfig !== "string") { - if (typeof threadIdOrConfig.configurable?.thread_id !== "string") { - throw new Error( - "Thread ID is required when updating state with a config.", - ); - } - threadId = threadIdOrConfig.configurable.thread_id; - } else { - threadId = threadIdOrConfig; - } - - return this.fetch(`/threads/${threadId}/state`, { - method: "PATCH", - json: { metadata: metadata }, - }); - } - - /** - * Get all past states for a thread. - * - * @param threadId ID of the thread. - * @param options Additional options. - * @returns List of thread states. - */ - async getHistory( - threadId: string, - options?: { - limit?: number; - before?: Config; - checkpoint?: Partial>; - metadata?: Metadata; - }, - ): Promise[]> { - return this.fetch[]>( - `/threads/${threadId}/history`, - { - method: "POST", - json: { - limit: options?.limit ?? 10, - before: options?.before, - metadata: options?.metadata, - checkpoint: options?.checkpoint, - }, - }, - ); - } -} - -export class RunsClient< - TStateType = DefaultValues, - TUpdateType = TStateType, - TCustomEventType = unknown, -> extends BaseClient { - stream< - TStreamMode extends StreamMode | StreamMode[] = StreamMode, - TSubgraphs extends boolean = false, - >( - threadId: null, - assistantId: string, - payload?: Omit< - RunsStreamPayload, - "multitaskStrategy" | "onCompletion" - >, - ): TypedAsyncGenerator< - TStreamMode, - TSubgraphs, - TStateType, - TUpdateType, - TCustomEventType - >; - - stream< - TStreamMode extends StreamMode | StreamMode[] = StreamMode, - TSubgraphs extends boolean = false, - >( - threadId: string, - assistantId: string, - payload?: RunsStreamPayload, - ): TypedAsyncGenerator< - TStreamMode, - TSubgraphs, - TStateType, - TUpdateType, - TCustomEventType - >; - - /** - * Create a run and stream the results. - * - * @param threadId The ID of the thread. - * @param assistantId Assistant ID to use for this run. - * @param payload Payload for creating a run. - */ - async *stream< - TStreamMode extends StreamMode | StreamMode[] = StreamMode, - TSubgraphs extends boolean = false, - >( - threadId: string | null, - assistantId: string, - payload?: RunsStreamPayload, - ): TypedAsyncGenerator< - TStreamMode, - TSubgraphs, - TStateType, - TUpdateType, - TCustomEventType - > { - const json: Record = { - input: payload?.input, - command: payload?.command, - config: payload?.config, - metadata: payload?.metadata, - stream_mode: payload?.streamMode, - stream_subgraphs: payload?.streamSubgraphs, - stream_resumable: payload?.streamResumable, - feedback_keys: payload?.feedbackKeys, - assistant_id: assistantId, - interrupt_before: payload?.interruptBefore, - interrupt_after: payload?.interruptAfter, - checkpoint: payload?.checkpoint, - checkpoint_id: payload?.checkpointId, - webhook: payload?.webhook, - multitask_strategy: payload?.multitaskStrategy, - on_completion: payload?.onCompletion, - on_disconnect: payload?.onDisconnect, - after_seconds: payload?.afterSeconds, - if_not_exists: payload?.ifNotExists, - checkpoint_during: payload?.checkpointDuring, - }; - - const endpoint = - threadId == null ? `/runs/stream` : `/threads/${threadId}/runs/stream`; - - const response = await this.asyncCaller.fetch( - ...this.prepareFetchOptions(endpoint, { - method: "POST", - json, - timeoutMs: null, - signal: payload?.signal, - }), - ); - - const runMetadata = getRunMetadataFromResponse(response); - if (runMetadata) payload?.onRunCreated?.(runMetadata); - - const stream: ReadableStream<{ event: any; data: any }> = ( - response.body || new ReadableStream({ start: (ctrl) => ctrl.close() }) - ) - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - yield* IterableReadableStream.fromReadableStream(stream); - } - - /** - * Create a run. - * - * @param threadId The ID of the thread. - * @param assistantId Assistant ID to use for this run. - * @param payload Payload for creating a run. - * @returns The created run. - */ - async create( - threadId: string, - assistantId: string, - payload?: RunsCreatePayload, - ): Promise { - const json: Record = { - input: payload?.input, - command: payload?.command, - config: payload?.config, - metadata: payload?.metadata, - stream_mode: payload?.streamMode, - stream_subgraphs: payload?.streamSubgraphs, - stream_resumable: payload?.streamResumable, - assistant_id: assistantId, - interrupt_before: payload?.interruptBefore, - interrupt_after: payload?.interruptAfter, - webhook: payload?.webhook, - checkpoint: payload?.checkpoint, - checkpoint_id: payload?.checkpointId, - multitask_strategy: payload?.multitaskStrategy, - after_seconds: payload?.afterSeconds, - if_not_exists: payload?.ifNotExists, - checkpoint_during: payload?.checkpointDuring, - langsmith_tracer: payload?._langsmithTracer - ? { - project_name: payload?._langsmithTracer?.projectName, - example_id: payload?._langsmithTracer?.exampleId, - } - : undefined, - }; - - const [run, response] = await this.fetch(`/threads/${threadId}/runs`, { - method: "POST", - json, - signal: payload?.signal, - withResponse: true, - }); - - const runMetadata = getRunMetadataFromResponse(response); - if (runMetadata) payload?.onRunCreated?.(runMetadata); - - return run; - } - - /** - * Create a batch of stateless background runs. - * - * @param payloads An array of payloads for creating runs. - * @returns An array of created runs. - */ - async createBatch( - payloads: (RunsCreatePayload & { assistantId: string })[], - ): Promise { - const filteredPayloads = payloads - .map((payload) => ({ ...payload, assistant_id: payload.assistantId })) - .map((payload) => { - return Object.fromEntries( - Object.entries(payload).filter(([_, v]) => v !== undefined), - ); - }); - - return this.fetch("/runs/batch", { - method: "POST", - json: filteredPayloads, - }); - } - - async wait( - threadId: null, - assistantId: string, - payload?: Omit, - ): Promise; - - async wait( - threadId: string, - assistantId: string, - payload?: RunsWaitPayload, - ): Promise; - - /** - * Create a run and wait for it to complete. - * - * @param threadId The ID of the thread. - * @param assistantId Assistant ID to use for this run. - * @param payload Payload for creating a run. - * @returns The last values chunk of the thread. - */ - async wait( - threadId: string | null, - assistantId: string, - payload?: RunsWaitPayload, - ): Promise { - const json: Record = { - input: payload?.input, - command: payload?.command, - config: payload?.config, - metadata: payload?.metadata, - assistant_id: assistantId, - interrupt_before: payload?.interruptBefore, - interrupt_after: payload?.interruptAfter, - checkpoint: payload?.checkpoint, - checkpoint_id: payload?.checkpointId, - webhook: payload?.webhook, - multitask_strategy: payload?.multitaskStrategy, - on_completion: payload?.onCompletion, - on_disconnect: payload?.onDisconnect, - after_seconds: payload?.afterSeconds, - if_not_exists: payload?.ifNotExists, - checkpoint_during: payload?.checkpointDuring, - langsmith_tracer: payload?._langsmithTracer - ? { - project_name: payload?._langsmithTracer?.projectName, - example_id: payload?._langsmithTracer?.exampleId, - } - : undefined, - }; - const endpoint = - threadId == null ? `/runs/wait` : `/threads/${threadId}/runs/wait`; - const [run, response] = await this.fetch(endpoint, { - method: "POST", - json, - timeoutMs: null, - signal: payload?.signal, - withResponse: true, - }); - - const runMetadata = getRunMetadataFromResponse(response); - if (runMetadata) payload?.onRunCreated?.(runMetadata); - - const raiseError = - payload?.raiseError !== undefined ? payload.raiseError : true; - if ( - raiseError && - "__error__" in run && - typeof run.__error__ === "object" && - run.__error__ && - "error" in run.__error__ && - "message" in run.__error__ - ) { - throw new Error(`${run.__error__?.error}: ${run.__error__?.message}`); - } - return run; - } - - /** - * List all runs for a thread. - * - * @param threadId The ID of the thread. - * @param options Filtering and pagination options. - * @returns List of runs. - */ - async list( - threadId: string, - options?: { - /** - * Maximum number of runs to return. - * Defaults to 10 - */ - limit?: number; - - /** - * Offset to start from. - * Defaults to 0. - */ - offset?: number; - - /** - * Status of the run to filter by. - */ - status?: RunStatus; - }, - ): Promise { - return this.fetch(`/threads/${threadId}/runs`, { - params: { - limit: options?.limit ?? 10, - offset: options?.offset ?? 0, - status: options?.status ?? undefined, - }, - }); - } - - /** - * Get a run by ID. - * - * @param threadId The ID of the thread. - * @param runId The ID of the run. - * @returns The run. - */ - async get(threadId: string, runId: string): Promise { - return this.fetch(`/threads/${threadId}/runs/${runId}`); - } - - /** - * Cancel a run. - * - * @param threadId The ID of the thread. - * @param runId The ID of the run. - * @param wait Whether to block when canceling - * @param action Action to take when cancelling the run. Possible values are `interrupt` or `rollback`. Default is `interrupt`. - * @returns - */ - async cancel( - threadId: string, - runId: string, - wait: boolean = false, - action: CancelAction = "interrupt", - ): Promise { - return this.fetch(`/threads/${threadId}/runs/${runId}/cancel`, { - method: "POST", - params: { - wait: wait ? "1" : "0", - action: action, - }, - }); - } - - /** - * Block until a run is done. - * - * @param threadId The ID of the thread. - * @param runId The ID of the run. - * @returns - */ - async join( - threadId: string, - runId: string, - options?: { signal?: AbortSignal }, - ): Promise { - return this.fetch(`/threads/${threadId}/runs/${runId}/join`, { - timeoutMs: null, - signal: options?.signal, - }); - } - - /** - * Stream output from a run in real-time, until the run is done. - * - * @param threadId The ID of the thread. Can be set to `null` | `undefined` for stateless runs. - * @param runId The ID of the run. - * @param options Additional options for controlling the stream behavior: - * - signal: An AbortSignal that can be used to cancel the stream request - * - lastEventId: The ID of the last event received. Can be used to reconnect to a stream without losing events. - * - cancelOnDisconnect: When true, automatically cancels the run if the client disconnects from the stream - * - streamMode: Controls what types of events to receive from the stream (can be a single mode or array of modes) - * Must be a subset of the stream modes passed when creating the run. Background runs default to having the union of all - * stream modes enabled. - * @returns An async generator yielding stream parts. - */ - async *joinStream( - threadId: string | undefined | null, - runId: string, - options?: - | { - signal?: AbortSignal; - cancelOnDisconnect?: boolean; - lastEventId?: string; - streamMode?: StreamMode | StreamMode[]; - } - | AbortSignal, - ): AsyncGenerator<{ id?: string; event: StreamEvent; data: any }> { - const opts = - typeof options === "object" && - options != null && - options instanceof AbortSignal - ? { signal: options } - : options; - - const response = await this.asyncCaller.fetch( - ...this.prepareFetchOptions( - threadId != null - ? `/threads/${threadId}/runs/${runId}/stream` - : `/runs/${runId}/stream`, - { - method: "GET", - timeoutMs: null, - signal: opts?.signal, - headers: opts?.lastEventId - ? { "Last-Event-ID": opts.lastEventId } - : undefined, - params: { - cancel_on_disconnect: opts?.cancelOnDisconnect ? "1" : "0", - stream_mode: opts?.streamMode, - }, - }, - ), - ); - - const stream: ReadableStream<{ event: string; data: any }> = ( - response.body || new ReadableStream({ start: (ctrl) => ctrl.close() }) - ) - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - yield* IterableReadableStream.fromReadableStream(stream); - } - - /** - * Delete a run. - * - * @param threadId The ID of the thread. - * @param runId The ID of the run. - * @returns - */ - async delete(threadId: string, runId: string): Promise { - return this.fetch(`/threads/${threadId}/runs/${runId}`, { - method: "DELETE", - }); - } -} - -interface APIItem { - namespace: string[]; - key: string; - value: Record; - created_at: string; - updated_at: string; -} -interface APISearchItemsResponse { - items: APIItem[]; -} - -export class StoreClient extends BaseClient { - /** - * Store or update an item. - * - * @param namespace A list of strings representing the namespace path. - * @param key The unique identifier for the item within the namespace. - * @param value A dictionary containing the item's data. - * @param options.index Controls search indexing - null (use defaults), false (disable), or list of field paths to index. - * @param options.ttl Optional time-to-live in minutes for the item, or null for no expiration. - * @returns Promise - * - * @example - * ```typescript - * await client.store.putItem( - * ["documents", "user123"], - * "item456", - * { title: "My Document", content: "Hello World" }, - * { ttl: 60 } // expires in 60 minutes - * ); - * ``` - */ - async putItem( - namespace: string[], - key: string, - value: Record, - options?: { - index?: false | string[] | null; - ttl?: number | null; - }, - ): Promise { - namespace.forEach((label) => { - if (label.includes(".")) { - throw new Error( - `Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`, - ); - } - }); - - const payload = { - namespace, - key, - value, - index: options?.index, - ttl: options?.ttl, - }; - - return this.fetch("/store/items", { - method: "PUT", - json: payload, - }); - } - - /** - * Retrieve a single item. - * - * @param namespace A list of strings representing the namespace path. - * @param key The unique identifier for the item. - * @param options.refreshTtl Whether to refresh the TTL on this read operation. If null, uses the store's default behavior. - * @returns Promise - * - * @example - * ```typescript - * const item = await client.store.getItem( - * ["documents", "user123"], - * "item456", - * { refreshTtl: true } - * ); - * console.log(item); - * // { - * // namespace: ["documents", "user123"], - * // key: "item456", - * // value: { title: "My Document", content: "Hello World" }, - * // createdAt: "2024-07-30T12:00:00Z", - * // updatedAt: "2024-07-30T12:00:00Z" - * // } - * ``` - */ - async getItem( - namespace: string[], - key: string, - options?: { - refreshTtl?: boolean | null; - }, - ): Promise { - namespace.forEach((label) => { - if (label.includes(".")) { - throw new Error( - `Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`, - ); - } - }); - - const params: Record = { - namespace: namespace.join("."), - key, - }; - - if (options?.refreshTtl !== undefined) { - params.refresh_ttl = options.refreshTtl; - } - - const response = await this.fetch("/store/items", { - params, - }); - - return response - ? { - ...response, - createdAt: response.created_at, - updatedAt: response.updated_at, - } - : null; - } - - /** - * Delete an item. - * - * @param namespace A list of strings representing the namespace path. - * @param key The unique identifier for the item. - * @returns Promise - */ - async deleteItem(namespace: string[], key: string): Promise { - namespace.forEach((label) => { - if (label.includes(".")) { - throw new Error( - `Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`, - ); - } - }); - - return this.fetch("/store/items", { - method: "DELETE", - json: { namespace, key }, - }); - } - - /** - * Search for items within a namespace prefix. - * - * @param namespacePrefix List of strings representing the namespace prefix. - * @param options.filter Optional dictionary of key-value pairs to filter results. - * @param options.limit Maximum number of items to return (default is 10). - * @param options.offset Number of items to skip before returning results (default is 0). - * @param options.query Optional search query. - * @param options.refreshTtl Whether to refresh the TTL on items returned by this search. If null, uses the store's default behavior. - * @returns Promise - * - * @example - * ```typescript - * const results = await client.store.searchItems( - * ["documents"], - * { - * filter: { author: "John Doe" }, - * limit: 5, - * refreshTtl: true - * } - * ); - * console.log(results); - * // { - * // items: [ - * // { - * // namespace: ["documents", "user123"], - * // key: "item789", - * // value: { title: "Another Document", author: "John Doe" }, - * // createdAt: "2024-07-30T12:00:00Z", - * // updatedAt: "2024-07-30T12:00:00Z" - * // }, - * // // ... additional items ... - * // ] - * // } - * ``` - */ - async searchItems( - namespacePrefix: string[], - options?: { - filter?: Record; - limit?: number; - offset?: number; - query?: string; - refreshTtl?: boolean | null; - }, - ): Promise { - const payload = { - namespace_prefix: namespacePrefix, - filter: options?.filter, - limit: options?.limit ?? 10, - offset: options?.offset ?? 0, - query: options?.query, - refresh_ttl: options?.refreshTtl, - }; - - const response = await this.fetch( - "/store/items/search", - { - method: "POST", - json: payload, - }, - ); - return { - items: response.items.map((item) => ({ - ...item, - createdAt: item.created_at, - updatedAt: item.updated_at, - })), - }; - } - - /** - * List namespaces with optional match conditions. - * - * @param options.prefix Optional list of strings representing the prefix to filter namespaces. - * @param options.suffix Optional list of strings representing the suffix to filter namespaces. - * @param options.maxDepth Optional integer specifying the maximum depth of namespaces to return. - * @param options.limit Maximum number of namespaces to return (default is 100). - * @param options.offset Number of namespaces to skip before returning results (default is 0). - * @returns Promise - */ - async listNamespaces(options?: { - prefix?: string[]; - suffix?: string[]; - maxDepth?: number; - limit?: number; - offset?: number; - }): Promise { - const payload = { - prefix: options?.prefix, - suffix: options?.suffix, - max_depth: options?.maxDepth, - limit: options?.limit ?? 100, - offset: options?.offset ?? 0, - }; - - return this.fetch("/store/namespaces", { - method: "POST", - json: payload, - }); - } -} - -class UiClient extends BaseClient { - private static promiseCache: Record | undefined> = - {}; - - private static getOrCached(key: string, fn: () => Promise): Promise { - if (UiClient.promiseCache[key] != null) { - return UiClient.promiseCache[key] as Promise; - } - - const promise = fn(); - UiClient.promiseCache[key] = promise; - return promise; - } - - async getComponent(assistantId: string, agentName: string): Promise { - return UiClient["getOrCached"]( - `${this.apiUrl}-${assistantId}-${agentName}`, - async () => { - const response = await this.asyncCaller.fetch( - ...this.prepareFetchOptions(`/ui/${assistantId}`, { - headers: { - Accept: "text/html", - "Content-Type": "application/json", - }, - method: "POST", - json: { name: agentName }, - }), - ); - return response.text(); - }, - ); - } -} - -export class Client< - TStateType = DefaultValues, - TUpdateType = TStateType, - TCustomEventType = unknown, -> { - /** - * The client for interacting with assistants. - */ - public assistants: AssistantsClient; - - /** - * The client for interacting with threads. - */ - public threads: ThreadsClient; - - /** - * The client for interacting with runs. - */ - public runs: RunsClient; - - /** - * The client for interacting with cron runs. - */ - public crons: CronsClient; - - /** - * The client for interacting with the KV store. - */ - public store: StoreClient; - - /** - * The client for interacting with the UI. - * @internal Used by LoadExternalComponent and the API might change in the future. - */ - public "~ui": UiClient; - - /** - * @internal Used to obtain a stable key representing the client. - */ - private "~configHash": string | undefined; - - constructor(config?: ClientConfig) { - this["~configHash"] = (() => - JSON.stringify({ - apiUrl: config?.apiUrl, - apiKey: config?.apiKey, - timeoutMs: config?.timeoutMs, - defaultHeaders: config?.defaultHeaders, - - maxConcurrency: config?.callerOptions?.maxConcurrency, - maxRetries: config?.callerOptions?.maxRetries, - - callbacks: { - onFailedResponseHook: - config?.callerOptions?.onFailedResponseHook != null, - onRequest: config?.onRequest != null, - fetch: config?.callerOptions?.fetch != null, - }, - }))(); - - this.assistants = new AssistantsClient(config); - this.threads = new ThreadsClient(config); - this.runs = new RunsClient(config); - this.crons = new CronsClient(config); - this.store = new StoreClient(config); - this["~ui"] = new UiClient(config); - } -} - -/** - * @internal Used to obtain a stable key representing the client. - */ -export function getClientConfigHash(client: Client): string | undefined { - return client["~configHash"]; -} diff --git a/libs/sdk-js/src/index.ts b/libs/sdk-js/src/index.ts deleted file mode 100644 index 4318bbfc0..000000000 --- a/libs/sdk-js/src/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -export { Client, getApiKey } from "./client.js"; -export type { ClientConfig, RequestHook } from "./client.js"; - -export type { - Assistant, - AssistantBase, - AssistantGraph, - AssistantVersion, - Checkpoint, - Config, - Cron, - CronCreateForThreadResponse, - CronCreateResponse, - DefaultValues, - GraphSchema, - Interrupt, - Item, - ListNamespaceResponse, - Metadata, - Run, - SearchItem, - SearchItemsResponse, - Thread, - ThreadState, - ThreadStatus, - ThreadTask, -} from "./schema.js"; -export { overrideFetchImplementation } from "./singletons/fetch.js"; - -export type { - Command, - OnConflictBehavior, - RunsInvokePayload, -} from "./types.js"; -export type { - AIMessage, - FunctionMessage, - HumanMessage, - Message, - RemoveMessage, - SystemMessage, - ToolMessage, -} from "./types.messages.js"; -export type { - CustomStreamEvent, - DebugStreamEvent, - ErrorStreamEvent, - EventsStreamEvent, - FeedbackStreamEvent, - MessagesStreamEvent, - MessagesTupleStreamEvent, - MetadataStreamEvent, - StreamMode, - UpdatesStreamEvent, - ValuesStreamEvent, -} from "./types.stream.js"; diff --git a/libs/sdk-js/src/react-ui/client.tsx b/libs/sdk-js/src/react-ui/client.tsx deleted file mode 100644 index 1484f491d..000000000 --- a/libs/sdk-js/src/react-ui/client.tsx +++ /dev/null @@ -1,279 +0,0 @@ -"use client"; - -import { useStream } from "../react/index.js"; -import type { UIMessage } from "./types.js"; - -import * as React from "react"; -import * as ReactDOM from "react-dom"; -import * as JsxRuntime from "react/jsx-runtime"; -import type { UseStream } from "../react/stream.js"; - -const UseStreamContext = React.createContext<{ - stream: ReturnType; - meta: unknown; -}>(null!); - -type BagTemplate = { - ConfigurableType?: Record; - InterruptType?: unknown; - CustomEventType?: unknown; - UpdateType?: unknown; - MetaType?: unknown; -}; - -type GetMetaType = Bag extends { MetaType: unknown } - ? Bag["MetaType"] - : unknown; - -interface UseStreamContext< - StateType extends Record = Record, - Bag extends BagTemplate = BagTemplate, -> extends UseStream { - meta?: GetMetaType; -} - -export function useStreamContext< - StateType extends Record = Record, - Bag extends { - ConfigurableType?: Record; - InterruptType?: unknown; - CustomEventType?: unknown; - UpdateType?: unknown; - MetaType?: unknown; - } = BagTemplate, ->(): UseStreamContext { - const ctx = React.useContext(UseStreamContext); - if (!ctx) { - throw new Error( - "useStreamContext must be used within a LoadExternalComponent", - ); - } - - return new Proxy(ctx, { - get(target, prop: keyof UseStreamContext) { - if (prop === "meta") return target.meta; - return target.stream[prop]; - }, - }) as unknown as UseStreamContext; -} - -interface ComponentTarget { - comp: React.FunctionComponent | React.ComponentClass; - target: HTMLElement; -} - -class ComponentStore { - private cache: Record = {}; - private boundCache: Record< - string, - { - subscribe: (onStoreChange: () => void) => () => void; - getSnapshot: () => ComponentTarget | undefined; - } - > = {}; - private callbacks: Record< - string, - (( - comp: React.FunctionComponent | React.ComponentClass, - el: HTMLElement, - ) => void)[] - > = {}; - - respond( - shadowRootId: string, - comp: React.FunctionComponent | React.ComponentClass, - targetElement: HTMLElement, - ) { - this.cache[shadowRootId] = { comp, target: targetElement }; - this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement)); - } - - getBoundStore(shadowRootId: string) { - this.boundCache[shadowRootId] ??= { - subscribe: (onStoreChange: () => void) => { - this.callbacks[shadowRootId] ??= []; - this.callbacks[shadowRootId].push(onStoreChange); - return () => { - this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter( - (c) => c !== onStoreChange, - ); - }; - }, - getSnapshot: () => this.cache[shadowRootId], - }; - - return this.boundCache[shadowRootId]; - } -} - -const COMPONENT_STORE = new ComponentStore(); -const EXT_STORE_SYMBOL = Symbol.for("LGUI_EXT_STORE"); -const REQUIRE_SYMBOL = Symbol.for("LGUI_REQUIRE"); -const REQUIRE_EXTRA_SYMBOL = Symbol.for("LGUI_REQUIRE_EXTRA"); - -interface LoadExternalComponentProps - extends Pick, "style" | "className"> { - /** Stream of the assistant */ - stream: ReturnType; - - /** Namespace of UI components. Defaults to assistant ID. */ - namespace?: string; - - /** UI message to be rendered */ - message: UIMessage; - - /** Additional context to be passed to the child component */ - meta?: unknown; - - /** Fallback to be rendered when the component is loading */ - fallback?: React.ReactNode | Record; - - /** - * Map of components that can be rendered directly without fetching the UI code - * from the server. - */ - components?: Record; -} - -const isIterable = (value: unknown): value is Iterable => - value != null && typeof value === "object" && Symbol.iterator in value; - -const isPromise = (value: unknown): value is Promise => - value != null && - typeof value === "object" && - "then" in value && - typeof value.then === "function"; - -const isReactNode = (value: unknown): value is React.ReactNode => { - if (React.isValidElement(value)) return true; - if (value == null) return true; - if ( - typeof value === "string" || - typeof value === "number" || - typeof value === "bigint" || - typeof value === "boolean" - ) { - return true; - } - - if (isIterable(value)) return true; - if (isPromise(value)) return true; - - return false; -}; - -export function LoadExternalComponent({ - stream, - namespace, - message, - meta, - fallback, - components, - ...props -}: LoadExternalComponentProps) { - const ref = React.useRef(null); - const id = React.useId(); - const shadowRootId = `child-shadow-${id}`; - - const store = React.useMemo( - () => COMPONENT_STORE.getBoundStore(shadowRootId), - [shadowRootId], - ); - const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot); - - const clientComponent = components?.[message.name]; - const hasClientComponent = clientComponent != null; - - const fallbackComponent = isReactNode(fallback) - ? fallback - : typeof fallback === "object" && fallback != null - ? fallback?.[message.name] - : null; - - const uiNamespace = namespace ?? stream.assistantId; - const uiClient = stream.client["~ui"]; - React.useEffect(() => { - if (hasClientComponent) return; - uiClient.getComponent(uiNamespace, message.name).then((html) => { - const dom = ref.current; - if (!dom) return; - const root = dom.shadowRoot ?? dom.attachShadow({ mode: "open" }); - const fragment = document - .createRange() - .createContextualFragment( - html.replace("{{shadowRootId}}", shadowRootId), - ); - root.appendChild(fragment); - }); - }, [uiClient, uiNamespace, message.name, shadowRootId, hasClientComponent]); - - if (hasClientComponent) { - return ( - - {React.createElement(clientComponent, message.props)} - - ); - } - - return ( - <> -
- - - {state?.target != null - ? ReactDOM.createPortal( - React.createElement(state.comp, message.props), - state.target, - ) - : fallbackComponent} - - - ); -} - -declare global { - interface Window { - [EXT_STORE_SYMBOL]: ComponentStore; - [REQUIRE_SYMBOL]: (name: string) => unknown; - [REQUIRE_EXTRA_SYMBOL]: Record; - } -} - -export function experimental_loadShare(name: string, module: unknown) { - if (typeof window === "undefined") return; - - window[REQUIRE_EXTRA_SYMBOL] ??= {}; - window[REQUIRE_EXTRA_SYMBOL][name] = module; -} - -export function bootstrapUiContext() { - if (typeof window === "undefined") { - return; - } - - window[EXT_STORE_SYMBOL] = COMPONENT_STORE; - window[REQUIRE_SYMBOL] = (name: string) => { - if (name === "react") return React; - if (name === "react-dom") return ReactDOM; - if (name === "react/jsx-runtime") return JsxRuntime; - if (name === "@langchain/langgraph-sdk/react") return { useStream }; - if (name === "@langchain/langgraph-sdk/react-ui") { - return { - useStreamContext, - LoadExternalComponent: () => { - throw new Error("Nesting LoadExternalComponent is not supported"); - }, - }; - } - - if ( - window[REQUIRE_EXTRA_SYMBOL] != null && - typeof window[REQUIRE_EXTRA_SYMBOL] === "object" && - name in window[REQUIRE_EXTRA_SYMBOL] - ) { - return window[REQUIRE_EXTRA_SYMBOL][name]; - } - - throw new Error(`Unknown module...: ${name}`); - }; -} diff --git a/libs/sdk-js/src/react-ui/index.ts b/libs/sdk-js/src/react-ui/index.ts deleted file mode 100644 index e63e79d16..000000000 --- a/libs/sdk-js/src/react-ui/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { bootstrapUiContext } from "./client.js"; -bootstrapUiContext(); - -export { - useStreamContext, - LoadExternalComponent, - experimental_loadShare, -} from "./client.js"; -export { - uiMessageReducer, - isUIMessage, - isRemoveUIMessage, - type UIMessage, - type RemoveUIMessage, -} from "./types.js"; diff --git a/libs/sdk-js/src/react-ui/server/index.ts b/libs/sdk-js/src/react-ui/server/index.ts deleted file mode 100644 index 45c2c1e78..000000000 --- a/libs/sdk-js/src/react-ui/server/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { typedUi } from "./server.js"; -export { - uiMessageReducer, - type UIMessage, - type RemoveUIMessage, -} from "../types.js"; diff --git a/libs/sdk-js/src/react-ui/server/server.ts b/libs/sdk-js/src/react-ui/server/server.ts deleted file mode 100644 index 8eb14d17f..000000000 --- a/libs/sdk-js/src/react-ui/server/server.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { v4 as uuidv4 } from "uuid"; -import type { ComponentPropsWithoutRef, ElementType } from "react"; -import type { RemoveUIMessage, UIMessage } from "../types.js"; - -interface MessageLike { - id?: string; -} - -/** - * Helper to send and persist UI messages. Accepts a map of component names to React components - * as type argument to provide type safety. Will also write to the `options?.stateKey` state. - * - * @param config LangGraphRunnableConfig - * @param options - * @returns - */ -export const typedUi = >( - config: { - writer?: (chunk: unknown) => void; - runId?: string; - metadata?: Record; - tags?: string[]; - runName?: string; - configurable?: { - __pregel_send?: (writes_: [string, unknown][]) => void; - [key: string]: unknown; - }; - }, - options?: { - /** The key to write the UI messages to. Defaults to `ui`. */ - stateKey?: string; - }, -) => { - type PropMap = { [K in keyof Decl]: ComponentPropsWithoutRef }; - let items: (UIMessage | RemoveUIMessage)[] = []; - const stateKey = options?.stateKey ?? "ui"; - - const runId = (config.metadata?.run_id as string | undefined) ?? config.runId; - if (!runId) throw new Error("run_id is required"); - - function handlePush( - message: { - id?: string; - name: K; - props: PropMap[K]; - metadata?: Record; - }, - options?: { message?: MessageLike; merge?: boolean }, - ): UIMessage; - - function handlePush( - message: { - id?: string; - name: K; - props: Partial; - metadata?: Record; - }, - options: { message?: MessageLike; merge: true }, - ): UIMessage>; - - function handlePush( - message: { - id?: string; - name: K; - props: PropMap[K] | Partial; - metadata?: Record; - }, - options?: { message?: MessageLike; merge?: boolean }, - ): UIMessage> { - const evt: UIMessage> = { - type: "ui" as const, - id: message?.id ?? uuidv4(), - name: message?.name, - props: message?.props, - metadata: { - merge: options?.merge || undefined, - run_id: runId, - tags: config.tags, - name: config.runName, - ...message?.metadata, - ...(options?.message ? { message_id: options.message.id } : null), - }, - }; - items.push(evt); - config.writer?.(evt); - config.configurable?.__pregel_send?.([[stateKey, evt]]); - return evt; - } - - const handleDelete = (id: string): RemoveUIMessage => { - const evt: RemoveUIMessage = { type: "remove-ui", id }; - items.push(evt); - config.writer?.(evt); - config.configurable?.__pregel_send?.([[stateKey, evt]]); - return evt; - }; - - return { push: handlePush, delete: handleDelete, items }; -}; diff --git a/libs/sdk-js/src/react-ui/types.ts b/libs/sdk-js/src/react-ui/types.ts deleted file mode 100644 index 42499996d..000000000 --- a/libs/sdk-js/src/react-ui/types.ts +++ /dev/null @@ -1,66 +0,0 @@ -export interface UIMessage< - TName extends string = string, - TProps extends Record = Record, -> { - type: "ui"; - - id: string; - name: TName; - props: TProps; - metadata?: { - merge?: boolean; - run_id?: string; - name?: string; - tags?: string[]; - message_id?: string; - [key: string]: unknown; - }; -} - -export interface RemoveUIMessage { - type: "remove-ui"; - id: string; -} - -export function isUIMessage(message: unknown): message is UIMessage { - if (typeof message !== "object" || message == null) return false; - if (!("type" in message)) return false; - return message.type === "ui"; -} - -export function isRemoveUIMessage( - message: unknown, -): message is RemoveUIMessage { - if (typeof message !== "object" || message == null) return false; - if (!("type" in message)) return false; - return message.type === "remove-ui"; -} - -export function uiMessageReducer( - state: UIMessage[], - update: UIMessage | RemoveUIMessage | (UIMessage | RemoveUIMessage)[], -) { - const events = Array.isArray(update) ? update : [update]; - let newState = state.slice(); - - for (const event of events) { - if (event.type === "remove-ui") { - newState = newState.filter((ui) => ui.id !== event.id); - continue; - } - - const index = state.findIndex((ui) => ui.id === event.id); - if (index !== -1) { - newState[index] = - typeof event.metadata === "object" && - event.metadata != null && - event.metadata.merge - ? { ...event, props: { ...state[index].props, ...event.props } } - : event; - } else { - newState.push(event); - } - } - - return newState; -} diff --git a/libs/sdk-js/src/react/debug.tsx b/libs/sdk-js/src/react/debug.tsx deleted file mode 100644 index b5fc462fc..000000000 --- a/libs/sdk-js/src/react/debug.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import { ThreadState } from "../schema.js"; - -interface Node { - type: "node"; - value: ThreadState; - path: string[]; -} - -interface Fork { - type: "fork"; - items: Array>; -} - -interface Sequence { - type: "sequence"; - items: Array | Fork>; -} - -interface ValidFork { - type: "fork"; - items: Array>; -} - -interface ValidSequence { - type: "sequence"; - items: [Node, ...(Node | ValidFork)[]]; -} - -// forks -export type CheckpointBranchPath = string[]; - -export type MessageBranch = { - current: CheckpointBranchPath; - options: CheckpointBranchPath[]; -}; - -export function DebugSegmentsView(props: { - sequence: ValidSequence; -}) { - const concatContent = (value: ThreadState) => { - let content; - try { - content = value.values?.messages?.at(-1)?.content ?? ""; - } catch { - content = JSON.stringify(value.values); - } - - content = content.replace(/(\n|\r\n)/g, ""); - if (content.length <= 23) return content; - return `${content.slice(0, 10)}...${content.slice(-10)}`; - }; - - return ( -
- {props.sequence.items.map((item, index) => { - if (item.type === "fork") { - return ( -
- {item.items.map((fork, idx) => { - const [first] = fork.items; - return ( -
- - Fork{" "} - - ...{first.path.at(-1)?.slice(-4)} - - -
- -
-
- ); - })} -
- ); - } - - if (item.type === "node") { - return ( -
-
-                ({item.value.metadata?.step}) ...
-                {item.value.checkpoint.checkpoint_id?.slice(-4)} (
-                {item.value.metadata?.source}): {concatContent(item.value)}
-              
- -
- ); - } - - return null; - })} -
- ); -} diff --git a/libs/sdk-js/src/react/index.ts b/libs/sdk-js/src/react/index.ts deleted file mode 100644 index 9b7e22871..000000000 --- a/libs/sdk-js/src/react/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { - useStream, - type MessageMetadata, - type UseStream, - type UseStreamOptions, -} from "./stream.js"; diff --git a/libs/sdk-js/src/react/stream.tsx b/libs/sdk-js/src/react/stream.tsx deleted file mode 100644 index 4b7159ee1..000000000 --- a/libs/sdk-js/src/react/stream.tsx +++ /dev/null @@ -1,1264 +0,0 @@ -/* __LC_ALLOW_ENTRYPOINT_SIDE_EFFECTS__ */ -"use client"; - -import { Client, getClientConfigHash, type ClientConfig } from "../client.js"; -import type { - Command, - DisconnectMode, - MultitaskStrategy, - OnCompletionBehavior, -} from "../types.js"; -import type { Message } from "../types.messages.js"; -import type { - Checkpoint, - Config, - Interrupt, - Metadata, - ThreadState, -} from "../schema.js"; -import type { - CustomStreamEvent, - DebugStreamEvent, - ErrorStreamEvent, - EventsStreamEvent, - FeedbackStreamEvent, - MessagesStreamEvent, - MessagesTupleStreamEvent, - MetadataStreamEvent, - StreamMode, - UpdatesStreamEvent, - ValuesStreamEvent, -} from "../types.stream.js"; - -import { - type RefObject, - useCallback, - useEffect, - useMemo, - useRef, - useState, -} from "react"; -import { - type BaseMessageChunk, - type BaseMessage, - coerceMessageLikeToMessage, - convertToChunk, - isBaseMessageChunk, -} from "@langchain/core/messages"; - -class StreamError extends Error { - constructor(data: { error?: string; name?: string; message: string }) { - super(data.message); - this.name = data.name ?? data.error ?? "StreamError"; - } - - static isStructuredError(error: unknown): error is { - error?: string; - name?: string; - message: string; - } { - return typeof error === "object" && error != null && "message" in error; - } -} - -function tryConvertToChunk(message: BaseMessage): BaseMessageChunk | null { - try { - return convertToChunk(message); - } catch { - return null; - } -} - -class MessageTupleManager { - chunks: Record< - string, - { chunk?: BaseMessageChunk | BaseMessage; index?: number } - > = {}; - - constructor() { - this.chunks = {}; - } - - add(serialized: Message): string | null { - // TODO: this is sometimes sent from the API - // figure out how to prevent this or move this to LC.js - if (serialized.type.endsWith("MessageChunk")) { - serialized.type = serialized.type - .slice(0, -"MessageChunk".length) - .toLowerCase() as Message["type"]; - } - - const message = coerceMessageLikeToMessage(serialized); - const chunk = tryConvertToChunk(message); - - const id = (chunk ?? message).id; - if (!id) { - console.warn( - "No message ID found for chunk, ignoring in state", - serialized, - ); - return null; - } - - this.chunks[id] ??= {}; - if (chunk) { - const prev = this.chunks[id].chunk; - this.chunks[id].chunk = - (isBaseMessageChunk(prev) ? prev : null)?.concat(chunk) ?? chunk; - } else { - this.chunks[id].chunk = message; - } - - return id; - } - - clear() { - this.chunks = {}; - } - - get(id: string, defaultIndex: number) { - if (this.chunks[id] == null) return null; - this.chunks[id].index ??= defaultIndex; - - return this.chunks[id]; - } -} - -const toMessageDict = (chunk: BaseMessage): Message => { - const { type, data } = chunk.toDict(); - return { ...data, type } as Message; -}; - -function unique(array: T[]) { - return [...new Set(array)] as T[]; -} - -function findLastIndex(array: T[], predicate: (item: T) => boolean) { - for (let i = array.length - 1; i >= 0; i--) { - if (predicate(array[i])) return i; - } - return -1; -} - -interface Node { - type: "node"; - value: ThreadState; - path: string[]; -} - -interface Fork { - type: "fork"; - items: Array>; -} - -interface Sequence { - type: "sequence"; - items: Array | Fork>; -} - -interface ValidFork { - type: "fork"; - items: Array>; -} - -interface ValidSequence { - type: "sequence"; - items: [Node, ...(Node | ValidFork)[]]; -} - -export type MessageMetadata> = { - /** - * The ID of the message used. - */ - messageId: string; - - /** - * The first thread state the message was seen in. - */ - firstSeenState: ThreadState | undefined; - - /** - * The branch of the message. - */ - branch: string | undefined; - - /** - * The list of branches this message is part of. - * This is useful for displaying branching controls. - */ - branchOptions: string[] | undefined; -}; - -function getBranchSequence>( - history: ThreadState[], -) { - const childrenMap: Record[]> = {}; - - // First pass - collect nodes for each checkpoint - history.forEach((state) => { - const checkpointId = state.parent_checkpoint?.checkpoint_id ?? "$"; - childrenMap[checkpointId] ??= []; - childrenMap[checkpointId].push(state); - }); - - // Second pass - create a tree of sequences - type Task = { id: string; sequence: Sequence; path: string[] }; - const rootSequence: Sequence = { type: "sequence", items: [] }; - const queue: Task[] = [{ id: "$", sequence: rootSequence, path: [] }]; - - const paths: string[][] = []; - - const visited = new Set(); - while (queue.length > 0) { - const task = queue.shift()!; - if (visited.has(task.id)) continue; - visited.add(task.id); - - const children = childrenMap[task.id]; - if (children == null || children.length === 0) continue; - - // If we've encountered a fork (2+ children), push the fork - // to the sequence and add a new sequence for each child - let fork: Fork | undefined; - if (children.length > 1) { - fork = { type: "fork", items: [] }; - task.sequence.items.push(fork); - } - - for (const value of children) { - const id = value.checkpoint.checkpoint_id!; - - let sequence = task.sequence; - let path = task.path; - if (fork != null) { - sequence = { type: "sequence", items: [] }; - fork.items.unshift(sequence); - - path = path.slice(); - path.push(id); - paths.push(path); - } - - sequence.items.push({ type: "node", value, path }); - queue.push({ id, sequence, path }); - } - } - - return { rootSequence, paths }; -} - -const PATH_SEP = ">"; -const ROOT_ID = "$"; - -// Get flat view -function getBranchView>( - sequence: Sequence, - paths: string[][], - branch: string, -) { - const path = branch.split(PATH_SEP); - const pathMap: Record = {}; - - for (const path of paths) { - const parent = path.at(-2) ?? ROOT_ID; - pathMap[parent] ??= []; - pathMap[parent].unshift(path); - } - - const history: ThreadState[] = []; - const branchByCheckpoint: Record< - string, - { branch: string | undefined; branchOptions: string[] | undefined } - > = {}; - - const forkStack = path.slice(); - const queue: (Node | Fork)[] = [...sequence.items]; - - while (queue.length > 0) { - const item = queue.shift()!; - - if (item.type === "node") { - history.push(item.value); - branchByCheckpoint[item.value.checkpoint.checkpoint_id!] = { - branch: item.path.join(PATH_SEP), - branchOptions: (item.path.length > 0 - ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? [] - : [] - ).map((p) => p.join(PATH_SEP)), - }; - } - if (item.type === "fork") { - const forkId = forkStack.shift(); - const index = - forkId != null - ? item.items.findIndex((value) => { - const firstItem = value.items.at(0); - if (!firstItem || firstItem.type !== "node") return false; - return firstItem.value.checkpoint.checkpoint_id === forkId; - }) - : -1; - - const nextItems = item.items.at(index)?.items ?? []; - queue.push(...nextItems); - } - } - - return { history, branchByCheckpoint }; -} - -function fetchHistory>( - client: Client, - threadId: string, -) { - return client.threads.getHistory(threadId, { limit: 1000 }); -} - -function useThreadHistory>( - threadId: string | undefined | null, - client: Client, - clearCallbackRef: RefObject<(() => void) | undefined>, - submittingRef: RefObject, -) { - const [history, setHistory] = useState[]>([]); - - const clientHash = getClientConfigHash(client); - const clientRef = useRef(client); - clientRef.current = client; - - const fetcher = useCallback( - ( - threadId: string | undefined | null, - ): Promise[]> => { - if (threadId != null) { - const client = clientRef.current; - return fetchHistory(client, threadId).then((history) => { - setHistory(history); - return history; - }); - } - - setHistory([]); - clearCallbackRef.current?.(); - return Promise.resolve([]); - }, - [], - ); - - useEffect(() => { - if (submittingRef.current) return; - fetcher(threadId); - }, [fetcher, clientHash, submittingRef, threadId]); - - return { - data: history, - mutate: (mutateId?: string) => fetcher(mutateId ?? threadId), - }; -} - -const useControllableThreadId = (options?: { - threadId?: string | null; - onThreadId?: (threadId: string) => void; -}): [string | null, (threadId: string) => void] => { - const [localThreadId, _setLocalThreadId] = useState( - options?.threadId ?? null, - ); - - const onThreadIdRef = useRef(options?.onThreadId); - onThreadIdRef.current = options?.onThreadId; - - const onThreadId = useCallback((threadId: string) => { - _setLocalThreadId(threadId); - onThreadIdRef.current?.(threadId); - }, []); - - if (!options || !("threadId" in options)) { - return [localThreadId, onThreadId]; - } - - return [options.threadId ?? null, onThreadId]; -}; - -type BagTemplate = { - ConfigurableType?: Record; - InterruptType?: unknown; - CustomEventType?: unknown; - UpdateType?: unknown; -}; - -type GetUpdateType< - Bag extends BagTemplate, - StateType extends Record, -> = Bag extends { UpdateType: unknown } - ? Bag["UpdateType"] - : Partial; - -type GetConfigurableType = Bag extends { - ConfigurableType: Record; -} - ? Bag["ConfigurableType"] - : Record; - -type GetInterruptType = Bag extends { - InterruptType: unknown; -} - ? Bag["InterruptType"] - : unknown; - -type GetCustomEventType = Bag extends { - CustomEventType: unknown; -} - ? Bag["CustomEventType"] - : unknown; - -interface RunCallbackMeta { - run_id: string; - thread_id: string; -} - -export interface UseStreamOptions< - StateType extends Record = Record, - Bag extends BagTemplate = BagTemplate, -> { - /** - * The ID of the assistant to use. - */ - assistantId: string; - - /** - * Client used to send requests. - */ - client?: Client; - - /** - * The URL of the API to use. - */ - apiUrl?: ClientConfig["apiUrl"]; - - /** - * The API key to use. - */ - apiKey?: ClientConfig["apiKey"]; - - /** - * Custom call options, such as custom fetch implementation. - */ - callerOptions?: ClientConfig["callerOptions"]; - - /** - * Default headers to send with requests. - */ - defaultHeaders?: ClientConfig["defaultHeaders"]; - - /** - * Specify the key within the state that contains messages. - * Defaults to "messages". - * - * @default "messages" - */ - messagesKey?: string; - - /** - * Callback that is called when an error occurs. - */ - onError?: (error: unknown, run: RunCallbackMeta | undefined) => void; - - /** - * Callback that is called when the stream is finished. - */ - onFinish?: ( - state: ThreadState, - run: RunCallbackMeta | undefined, - ) => void; - - /** - * Callback that is called when a new stream is created. - */ - onCreated?: (run: RunCallbackMeta) => void; - - /** - * Callback that is called when an update event is received. - */ - onUpdateEvent?: ( - data: UpdatesStreamEvent>["data"], - ) => void; - - /** - * Callback that is called when a custom event is received. - */ - onCustomEvent?: ( - data: CustomStreamEvent>["data"], - options: { - mutate: ( - update: Partial | ((prev: StateType) => Partial), - ) => void; - }, - ) => void; - - /** - * Callback that is called when a metadata event is received. - */ - onMetadataEvent?: (data: MetadataStreamEvent["data"]) => void; - - /** - * Callback that is called when a LangChain event is received. - * @see https://langchain-ai.github.io/langgraph/cloud/how-tos/stream_events/#stream-graph-in-events-mode for more details. - */ - onLangChainEvent?: (data: EventsStreamEvent["data"]) => void; - - /** - * Callback that is called when a debug event is received. - * @internal This API is experimental and subject to change. - */ - onDebugEvent?: (data: DebugStreamEvent["data"]) => void; - - /** - * Callback that is called when the stream is stopped by the user. - * Provides a mutate function to update the stream state immediately - * without requiring a server roundtrip. - * - * @example - * ```typescript - * onStop: ({ mutate }) => { - * mutate((prev) => ({ - * ...prev, - * ui: prev.ui?.map(component => - * component.props.isLoading - * ? { ...component, props: { ...component.props, stopped: true, isLoading: false }} - * : component - * ) - * })); - * } - * ``` - */ - onStop?: (options: { - mutate: ( - update: Partial | ((prev: StateType) => Partial), - ) => void; - }) => void; - - /** - * The ID of the thread to fetch history and current values from. - */ - threadId?: string | null; - - /** - * Callback that is called when the thread ID is updated (ie when a new thread is created). - */ - onThreadId?: (threadId: string) => void; - - /** Will reconnect the stream on mount */ - reconnectOnMount?: boolean | (() => RunMetadataStorage); - - /** - * Initial values to display immediately when loading a thread. - * Useful for displaying cached thread data while official history loads. - * These values will be replaced when official thread data is fetched. - * - * Note: UI components from initialValues will render immediately if they're - * predefined in LoadExternalComponent's components prop, providing instant - * cached UI display without server fetches. - */ - initialValues?: StateType | null; -} - -interface RunMetadataStorage { - getItem(key: `lg:stream:${string}`): string | null; - setItem(key: `lg:stream:${string}`, value: string): void; - removeItem(key: `lg:stream:${string}`): void; -} - -export interface UseStream< - StateType extends Record = Record, - Bag extends BagTemplate = BagTemplate, -> { - /** - * The current values of the thread. - */ - values: StateType; - - /** - * Last seen error from the thread or during streaming. - */ - error: unknown; - - /** - * Whether the stream is currently running. - */ - isLoading: boolean; - - /** - * Stops the stream. - */ - stop: () => void; - - /** - * Create and stream a run to the thread. - */ - submit: ( - values: GetUpdateType | null | undefined, - options?: SubmitOptions>, - ) => void; - - /** - * The current branch of the thread. - */ - branch: string; - - /** - * Set the branch of the thread. - */ - setBranch: (branch: string) => void; - - /** - * Flattened history of thread states of a thread. - */ - history: ThreadState[]; - - /** - * Tree of all branches for the thread. - * @experimental - */ - experimental_branchTree: Sequence; - - /** - * Get the interrupt value for the stream if interrupted. - */ - interrupt: Interrupt> | undefined; - - /** - * Messages inferred from the thread. - * Will automatically update with incoming message chunks. - */ - messages: Message[]; - - /** - * Get the metadata for a message, such as first thread state the message - * was seen in and branch information. - - * @param message - The message to get the metadata for. - * @param index - The index of the message in the thread. - * @returns The metadata for the message. - */ - getMessagesMetadata: ( - message: Message, - index?: number, - ) => MessageMetadata | undefined; - - /** - * LangGraph SDK client used to send request and receive responses. - */ - client: Client; - - /** - * The ID of the assistant to use. - */ - assistantId: string; - - /** - * Join an active stream. - */ - joinStream: ( - runId: string, - lastEventId?: string, - options?: { streamMode?: StreamMode | StreamMode[] }, - ) => Promise; -} - -type ConfigWithConfigurable> = - Config & { configurable?: ConfigurableType }; - -interface SubmitOptions< - StateType extends Record = Record, - ConfigurableType extends Record = Record, -> { - config?: ConfigWithConfigurable; - checkpoint?: Omit | null; - command?: Command; - interruptBefore?: "*" | string[]; - interruptAfter?: "*" | string[]; - metadata?: Metadata; - multitaskStrategy?: MultitaskStrategy; - onCompletion?: OnCompletionBehavior; - onDisconnect?: DisconnectMode; - feedbackKeys?: string[]; - streamMode?: Array; - optimisticValues?: - | Partial - | ((prev: StateType) => Partial); - /** - * Whether or not to stream the nodes of any subgraphs called - * by the assistant. - * @default false - */ - streamSubgraphs?: boolean; - streamResumable?: boolean; - /** - * The ID to use when creating a new thread. When provided, this ID will be used - * for thread creation when threadId is `null` or `undefined`. - * This enables optimistic UI updates where you know the thread ID - * before the thread is actually created. - */ - threadId?: string; -} - -function useStreamValuesState>() { - type Kind = "stream" | "stop"; - type Values = StateType | null; - type Update = Values | ((prev: Values, kind?: Kind) => Values); - type Mutate = Partial | ((prev: StateType) => Partial); - - const [values, setValues] = useState<[values: StateType, kind: Kind] | null>( - null, - ); - - const setStreamValues = useCallback( - (values: Update, kind: Kind = "stream") => { - if (typeof values === "function") { - setValues((prevTuple) => { - const [prevValues, prevKind] = prevTuple ?? [null, "stream"]; - const next = values(prevValues, prevKind); - - if (next == null) return null; - return [next, kind] as [StateType, Kind]; - }); - - return; - } - - if (values == null) setValues(null); - setValues([values, kind] as [StateType, Kind]); - }, - [], - ); - - const mutate = useCallback( - (kind: Kind, serverValues: StateType) => (update: Mutate) => { - setStreamValues((clientValues) => { - const prev = { ...serverValues, ...clientValues }; - const next = typeof update === "function" ? update(prev) : update; - return { ...prev, ...next }; - }, kind); - }, - [setStreamValues], - ); - - return [values?.[0] ?? null, setStreamValues, mutate] as [ - Values, - (update: Update, kind?: Kind) => void, - (kind: Kind, serverValues: StateType) => (update: Mutate) => void, - ]; -} - -export function useStream< - StateType extends Record = Record, - Bag extends { - ConfigurableType?: Record; - InterruptType?: unknown; - CustomEventType?: unknown; - UpdateType?: unknown; - } = BagTemplate, ->(options: UseStreamOptions): UseStream { - type UpdateType = GetUpdateType; - type CustomType = GetCustomEventType; - type InterruptType = GetInterruptType; - type ConfigurableType = GetConfigurableType; - - type EventStreamEvent = - | ValuesStreamEvent - | UpdatesStreamEvent - | CustomStreamEvent - | DebugStreamEvent - | MessagesStreamEvent - | MessagesTupleStreamEvent - | EventsStreamEvent - | MetadataStreamEvent - | ErrorStreamEvent - | FeedbackStreamEvent; - - let { assistantId, messagesKey, onCreated, onError, onFinish } = options; - - const reconnectOnMountRef = useRef(options.reconnectOnMount); - const runMetadataStorage = useMemo(() => { - if (typeof window === "undefined") return null; - const storage = reconnectOnMountRef.current; - if (storage === true) return window.sessionStorage; - if (typeof storage === "function") return storage(); - return null; - }, []); - - messagesKey ??= "messages"; - - const client = useMemo( - () => - options.client ?? - new Client({ - apiUrl: options.apiUrl, - apiKey: options.apiKey, - callerOptions: options.callerOptions, - defaultHeaders: options.defaultHeaders, - }), - [ - options.client, - options.apiKey, - options.apiUrl, - options.callerOptions, - options.defaultHeaders, - ], - ); - - const [threadId, onThreadId] = useControllableThreadId(options); - - const [branch, setBranch] = useState(""); - const [isLoading, setIsLoading] = useState(false); - - const [streamError, setStreamError] = useState(undefined); - const [streamValues, setStreamValues, getMutateFn] = - useStreamValuesState(); - - const messageManagerRef = useRef(new MessageTupleManager()); - const submittingRef = useRef(false); - const abortRef = useRef(null); - - const trackStreamModeRef = useRef< - Array<"values" | "updates" | "events" | "custom" | "messages-tuple"> - >([]); - - const trackStreamMode = useCallback( - (...mode: Exclude[]) => { - for (const m of mode) { - if (!trackStreamModeRef.current.includes(m)) { - trackStreamModeRef.current.push(m); - } - } - }, - [], - ); - - const hasUpdateListener = options.onUpdateEvent != null; - const hasCustomListener = options.onCustomEvent != null; - const hasLangChainListener = options.onLangChainEvent != null; - const hasDebugListener = options.onDebugEvent != null; - - const callbackStreamMode = useMemo(() => { - const modes: Exclude[] = []; - if (hasUpdateListener) modes.push("updates"); - if (hasCustomListener) modes.push("custom"); - if (hasLangChainListener) modes.push("events"); - if (hasDebugListener) modes.push("debug"); - return modes; - }, [ - hasUpdateListener, - hasCustomListener, - hasLangChainListener, - hasDebugListener, - ]); - - const clearCallbackRef = useRef<() => void>(null!); - clearCallbackRef.current = () => { - setStreamError(undefined); - setStreamValues(null); - }; - - // TODO: this should be done on the server to avoid pagination - // TODO: should we permit adapter? SWR / React Query? - // TODO: make this only when branching is expected - const history = useThreadHistory( - threadId, - client, - clearCallbackRef, - submittingRef, - ); - - const getMessages = useMemo(() => { - return (value: StateType) => - Array.isArray(value[messagesKey]) - ? (value[messagesKey] as Message[]) - : []; - }, [messagesKey]); - - const { rootSequence, paths } = getBranchSequence(history.data); - const { history: flatHistory, branchByCheckpoint } = getBranchView( - rootSequence, - paths, - branch, - ); - - const threadHead: ThreadState | undefined = flatHistory.at(-1); - const historyValues = - threadHead?.values ?? options.initialValues ?? ({} as StateType); - - const historyError = (() => { - const error = threadHead?.tasks?.at(-1)?.error; - if (error == null) return undefined; - try { - const parsed = JSON.parse(error) as unknown; - if (StreamError.isStructuredError(parsed)) { - return new StreamError(parsed); - } - - return parsed; - } catch { - // do nothing - } - return error; - })(); - - const messageMetadata = (() => { - const alreadyShown = new Set(); - return getMessages(historyValues).map( - (message, idx): MessageMetadata => { - const messageId = message.id ?? idx; - const firstSeenIdx = findLastIndex(history.data, (state) => - getMessages(state.values) - .map((m, idx) => m.id ?? idx) - .includes(messageId), - ); - - const firstSeen = history.data[firstSeenIdx] as - | ThreadState - | undefined; - - let branch = firstSeen - ? branchByCheckpoint[firstSeen.checkpoint.checkpoint_id!] - : undefined; - - if (!branch?.branch?.length) branch = undefined; - - // serialize branches - const optionsShown = branch?.branchOptions?.flat(2).join(","); - if (optionsShown) { - if (alreadyShown.has(optionsShown)) branch = undefined; - alreadyShown.add(optionsShown); - } - - return { - messageId: messageId.toString(), - firstSeenState: firstSeen, - - branch: branch?.branch, - branchOptions: branch?.branchOptions, - }; - }, - ); - })(); - - const stop = () => { - if (abortRef.current != null) abortRef.current.abort(); - abortRef.current = null; - - if (runMetadataStorage && threadId) { - const runId = runMetadataStorage.getItem(`lg:stream:${threadId}`); - if (runId) client.runs.cancel(threadId, runId); - runMetadataStorage.removeItem(`lg:stream:${threadId}`); - } - - options?.onStop?.({ mutate: getMutateFn("stop", historyValues) }); - }; - - async function consumeStream( - action: (signal: AbortSignal) => Promise<{ - onSuccess: () => Promise[]>; - stream: AsyncGenerator; - getCallbackMeta: () => { thread_id: string; run_id: string } | undefined; - }>, - ) { - let getCallbackMeta: - | (() => { thread_id: string; run_id: string } | undefined) - | undefined; - try { - setIsLoading(true); - setStreamError(undefined); - - submittingRef.current = true; - abortRef.current = new AbortController(); - - const run = await action(abortRef.current.signal); - getCallbackMeta = run.getCallbackMeta; - - let streamError: StreamError | undefined; - for await (const { event, data } of run.stream) { - if (event === "error") { - streamError = new StreamError(data); - break; - } - - if (event === "updates") options.onUpdateEvent?.(data); - if (event === "custom") - options.onCustomEvent?.(data, { - mutate: getMutateFn("stream", historyValues), - }); - if (event === "metadata") options.onMetadataEvent?.(data); - if (event === "events") options.onLangChainEvent?.(data); - if (event === "debug") options.onDebugEvent?.(data); - - if (event === "values") { - if ("__interrupt__" in data) { - // don't update values on interrupt values event - continue; - } - setStreamValues(data); - } - if (event === "messages") { - const [serialized] = data; - - const messageId = messageManagerRef.current.add(serialized); - if (!messageId) { - console.warn( - "Failed to add message to manager, no message ID found", - ); - continue; - } - - setStreamValues((streamValues) => { - const values = { ...historyValues, ...streamValues }; - - // Assumption: we're concatenating the message - const messages = getMessages(values).slice(); - const { chunk, index } = - messageManagerRef.current.get(messageId, messages.length) ?? {}; - - if (!chunk || index == null) return values; - messages[index] = toMessageDict(chunk); - - return { ...values, [messagesKey!]: messages }; - }); - } - } - - // TODO: stream created checkpoints to avoid an unnecessary network request - const result = await run.onSuccess(); - setStreamValues((values, kind) => { - // Do not clear out the user values set on `stop`. - if (kind === "stop") return values; - return null; - }); - if (streamError != null) throw streamError; - - const lastHead = result.at(0); - if (lastHead) onFinish?.(lastHead, getCallbackMeta?.()); - } catch (error) { - if ( - !( - error instanceof Error && - (error.name === "AbortError" || error.name === "TimeoutError") - ) - ) { - console.error(error); - setStreamError(error); - onError?.(error, getCallbackMeta?.()); - } - } finally { - setIsLoading(false); - - // Assumption: messages are already handled, we can clear the manager - messageManagerRef.current.clear(); - submittingRef.current = false; - abortRef.current = null; - } - } - - const joinStream = async ( - runId: string, - lastEventId?: string, - options?: { streamMode?: StreamMode | StreamMode[] }, - ) => { - lastEventId ??= "-1"; - if (!threadId) return; - await consumeStream(async (signal: AbortSignal) => { - const stream = client.runs.joinStream(threadId, runId, { - signal, - lastEventId, - streamMode: options?.streamMode, - }) as AsyncGenerator; - - return { - onSuccess: () => { - runMetadataStorage?.removeItem(`lg:stream:${threadId}`); - return history.mutate(threadId); - }, - stream, - getCallbackMeta: () => ({ thread_id: threadId, run_id: runId }), - }; - }); - }; - - const submit = async ( - values: UpdateType | null | undefined, - submitOptions?: SubmitOptions, - ) => { - await consumeStream(async (signal: AbortSignal) => { - // Unbranch things - const newPath = submitOptions?.checkpoint?.checkpoint_id - ? branchByCheckpoint[submitOptions?.checkpoint?.checkpoint_id]?.branch - : undefined; - - if (newPath != null) setBranch(newPath ?? ""); - - setStreamValues(() => { - if (submitOptions?.optimisticValues != null) { - return { - ...historyValues, - ...(typeof submitOptions.optimisticValues === "function" - ? submitOptions.optimisticValues(historyValues) - : submitOptions.optimisticValues), - }; - } - - return { ...historyValues }; - }); - - let usableThreadId = threadId; - if (!usableThreadId) { - const thread = await client.threads.create({ - threadId: submitOptions?.threadId, - }); - onThreadId(thread.thread_id); - usableThreadId = thread.thread_id; - } - - const streamMode = unique([ - ...(submitOptions?.streamMode ?? []), - ...trackStreamModeRef.current, - ...callbackStreamMode, - ]); - - const checkpoint = - submitOptions?.checkpoint ?? threadHead?.checkpoint ?? undefined; - // @ts-expect-error - if (checkpoint != null) delete checkpoint.thread_id; - let rejoinKey: `lg:stream:${string}` | undefined; - let callbackMeta: RunCallbackMeta | undefined; - const streamResumable = - submitOptions?.streamResumable ?? !!runMetadataStorage; - - const stream = client.runs.stream(usableThreadId, assistantId, { - input: values as Record, - config: submitOptions?.config, - command: submitOptions?.command, - - interruptBefore: submitOptions?.interruptBefore, - interruptAfter: submitOptions?.interruptAfter, - metadata: submitOptions?.metadata, - multitaskStrategy: submitOptions?.multitaskStrategy, - onCompletion: submitOptions?.onCompletion, - onDisconnect: - submitOptions?.onDisconnect ?? - (streamResumable ? "continue" : "cancel"), - - signal, - - checkpoint, - streamMode, - streamSubgraphs: submitOptions?.streamSubgraphs, - streamResumable, - onRunCreated(params) { - callbackMeta = { - run_id: params.run_id, - thread_id: params.thread_id ?? usableThreadId, - }; - - if (runMetadataStorage) { - rejoinKey = `lg:stream:${callbackMeta.thread_id}`; - runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id); - } - onCreated?.(callbackMeta); - }, - }) as AsyncGenerator; - - return { - stream, - getCallbackMeta: () => callbackMeta, - onSuccess: () => { - if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey); - return history.mutate(usableThreadId); - }, - }; - }); - }; - - const reconnectKey = useMemo(() => { - if (!runMetadataStorage || isLoading) return undefined; - if (typeof window === "undefined") return undefined; - const runId = runMetadataStorage?.getItem(`lg:stream:${threadId}`); - if (!runId) return undefined; - return { runId, threadId }; - }, [runMetadataStorage, isLoading, threadId]); - - const shouldReconnect = !!runMetadataStorage; - const reconnectRef = useRef({ threadId, shouldReconnect }); - - const joinStreamRef = useRef(joinStream); - joinStreamRef.current = joinStream; - - useEffect(() => { - // reset shouldReconnect when switching threads - if (reconnectRef.current.threadId !== threadId) { - reconnectRef.current = { threadId, shouldReconnect }; - } - }, [threadId, shouldReconnect]); - - useEffect(() => { - if (reconnectKey && reconnectRef.current.shouldReconnect) { - reconnectRef.current.shouldReconnect = false; - joinStreamRef.current?.(reconnectKey.runId); - } - }, [reconnectKey]); - - const error = streamError ?? historyError; - const values = streamValues ?? historyValues; - - return { - get values() { - trackStreamMode("values"); - return values; - }, - - client, - assistantId, - - error, - isLoading, - - stop, - submit, - - joinStream, - - branch, - setBranch, - - history: flatHistory, - experimental_branchTree: rootSequence, - - get interrupt() { - // Don't show the interrupt if the stream is loading - if (isLoading) return undefined; - - const interrupts = threadHead?.tasks?.at(-1)?.interrupts; - if (interrupts == null || interrupts.length === 0) { - // check if there's a next task present - const next = threadHead?.next ?? []; - if (!next.length || error != null) return undefined; - return { when: "breakpoint" }; - } - - // Return only the current interrupt - return interrupts.at(-1) as Interrupt | undefined; - }, - - get messages() { - trackStreamMode("messages-tuple", "values"); - return getMessages(values); - }, - - getMessagesMetadata( - message: Message, - index?: number, - ): MessageMetadata | undefined { - trackStreamMode("messages-tuple", "values"); - return messageMetadata?.find( - (m) => m.messageId === (message.id ?? index), - ); - }, - }; -} diff --git a/libs/sdk-js/src/schema.ts b/libs/sdk-js/src/schema.ts deleted file mode 100644 index 877cc7a18..000000000 --- a/libs/sdk-js/src/schema.ts +++ /dev/null @@ -1,334 +0,0 @@ -import type { JSONSchema7 } from "json-schema"; - -type Optional = T | null | undefined; - -export type RunStatus = - | "pending" - | "running" - | "error" - | "success" - | "timeout" - | "interrupted"; - -export type ThreadStatus = "idle" | "busy" | "interrupted" | "error"; - -type MultitaskStrategy = "reject" | "interrupt" | "rollback" | "enqueue"; - -export type CancelAction = "interrupt" | "rollback"; - -export type Config = { - /** - * Tags for this call and any sub-calls (eg. a Chain calling an LLM). - * You can use these to filter calls. - */ - tags?: string[]; - - /** - * Maximum number of times a call can recurse. - * If not provided, defaults to 25. - */ - recursion_limit?: number; - - /** - * Runtime values for attributes previously made configurable on this Runnable. - */ - configurable?: { - /** - * ID of the thread - */ - thread_id?: Optional; - - /** - * Timestamp of the state checkpoint - */ - checkpoint_id?: Optional; - - [key: string]: unknown; - }; -}; - -export interface GraphSchema { - /** - * The ID of the graph. - */ - graph_id: string; - - /** - * The schema for the input state. - * Missing if unable to generate JSON schema from graph. - */ - input_schema?: JSONSchema7 | null | undefined; - - /** - * The schema for the output state. - * Missing if unable to generate JSON schema from graph. - */ - output_schema?: JSONSchema7 | null | undefined; - - /** - * The schema for the graph state. - * Missing if unable to generate JSON schema from graph. - */ - state_schema?: JSONSchema7 | null | undefined; - - /** - * The schema for the graph config. - * Missing if unable to generate JSON schema from graph. - */ - config_schema?: JSONSchema7 | null | undefined; -} - -export type Subgraphs = Record; - -export type Metadata = Optional<{ - source?: "input" | "loop" | "update" | (string & {}); - - step?: number; - - writes?: Record | null; - - parents?: Record; - - [key: string]: unknown; -}>; - -export interface AssistantBase { - /** The ID of the assistant. */ - assistant_id: string; - - /** The ID of the graph. */ - graph_id: string; - - /** The assistant config. */ - config: Config; - - /** The time the assistant was created. */ - created_at: string; - - /** The assistant metadata. */ - metadata: Metadata; - - /** The version of the assistant. */ - version: number; - - /** The name of the assistant */ - name: string; - - /** The description of the assistant */ - description?: string; -} - -export interface AssistantVersion extends AssistantBase {} - -export interface Assistant extends AssistantBase { - /** The last time the assistant was updated. */ - updated_at: string; -} - -export interface AssistantGraph { - nodes: Array<{ - id: string | number; - name?: string; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - data?: Record | string; - metadata?: unknown; - }>; - edges: Array<{ - source: string; - target: string; - data?: string; - conditional?: boolean; - }>; -} - -/** - * An interrupt thrown inside a thread. - */ -export interface Interrupt { - value?: TValue; - when: "during" | (string & {}); - resumable?: boolean; - ns?: string[]; -} - -export interface Thread { - /** The ID of the thread. */ - thread_id: string; - - /** The time the thread was created. */ - created_at: string; - - /** The last time the thread was updated. */ - updated_at: string; - - /** The thread metadata. */ - metadata: Metadata; - - /** The status of the thread */ - status: ThreadStatus; - - /** The current state of the thread. */ - values: ValuesType; - - /** Interrupts which were thrown in this thread */ - interrupts: Record>; -} - -export interface Cron { - /** The ID of the cron */ - cron_id: string; - - /** The ID of the assistant */ - assistant_id: string; - - /** The ID of the thread */ - thread_id: Optional; - - /** The end date to stop running the cron. */ - end_time: Optional; - - /** The schedule to run, cron format. */ - schedule: string; - - /** The time the cron was created. */ - created_at: string; - - /** The last time the cron was updated. */ - updated_at: string; - - /** The run payload to use for creating new run. */ - payload: Record; - - /** The user ID of the cron */ - user_id: Optional; - - /** The next run date of the cron */ - next_run_date: Optional; - - /** The metadata of the cron */ - metadata: Record; -} - -export type DefaultValues = Record[] | Record; - -export interface ThreadState { - /** The state values */ - values: ValuesType; - - /** The next nodes to execute. If empty, the thread is done until new input is received */ - next: string[]; - - /** Checkpoint of the thread state */ - checkpoint: Checkpoint; - - /** Metadata for this state */ - metadata: Metadata; - - /** Time of state creation */ - created_at: Optional; - - /** The parent checkpoint. If missing, this is the root checkpoint */ - parent_checkpoint: Optional; - - /** Tasks to execute in this step. If already attempted, may contain an error */ - tasks: Array; -} - -export interface ThreadTask { - id: string; - name: string; - result?: unknown; - error: Optional; - interrupts: Array; - checkpoint: Optional; - state: Optional; -} - -export interface Run { - /** The ID of the run */ - run_id: string; - - /** The ID of the thread */ - thread_id: string; - - /** The assistant that wwas used for this run */ - assistant_id: string; - - /** The time the run was created */ - created_at: string; - - /** The last time the run was updated */ - updated_at: string; - - /** The status of the run. */ - status: RunStatus; - - /** Run metadata */ - metadata: Metadata; - - /** Strategy to handle concurrent runs on the same thread */ - multitask_strategy: Optional; -} - -export type Checkpoint = { - thread_id: string; - checkpoint_ns: string; - checkpoint_id: Optional; - checkpoint_map: Optional>; -}; - -export interface ListNamespaceResponse { - namespaces: string[][]; -} -export interface Item { - namespace: string[]; - key: string; - value: Record; - createdAt: string; - updatedAt: string; -} - -export interface SearchItem extends Item { - score?: number; -} -export interface SearchItemsResponse { - items: SearchItem[]; -} - -export interface CronCreateResponse { - cron_id: string; - assistant_id: string; - thread_id: string | undefined; - user_id: string; - payload: Record; - schedule: string; - next_run_date: string; - end_time: string | undefined; - created_at: string; - updated_at: string; - metadata: Metadata; -} - -export interface CronCreateForThreadResponse - extends Omit { - thread_id: string; -} - -export type AssistantSortBy = - | "assistant_id" - | "graph_id" - | "name" - | "created_at" - | "updated_at"; - -export type ThreadSortBy = "thread_id" | "status" | "created_at" | "updated_at"; - -export type CronSortBy = - | "cron_id" - | "assistant_id" - | "thread_id" - | "created_at" - | "updated_at" - | "next_run_date"; - -export type SortOrder = "asc" | "desc"; diff --git a/libs/sdk-js/src/singletons/fetch.ts b/libs/sdk-js/src/singletons/fetch.ts deleted file mode 100644 index 8ed71b000..000000000 --- a/libs/sdk-js/src/singletons/fetch.ts +++ /dev/null @@ -1,29 +0,0 @@ -// Wrap the default fetch call due to issues with illegal invocations -// in some environments: -// https://stackoverflow.com/questions/69876859/why-does-bind-fix-failed-to-execute-fetch-on-window-illegal-invocation-err -// @ts-expect-error Broad typing to support a range of fetch implementations -const DEFAULT_FETCH_IMPLEMENTATION = (...args: any[]) => fetch(...args); - -const LANGSMITH_FETCH_IMPLEMENTATION_KEY = Symbol.for( - "lg:fetch_implementation", -); - -/** - * Overrides the fetch implementation used for LangSmith calls. - * You should use this if you need to use an implementation of fetch - * other than the default global (e.g. for dealing with proxies). - * @param fetch The new fetch function to use. - */ -export const overrideFetchImplementation = (fetch: (...args: any[]) => any) => { - (globalThis as any)[LANGSMITH_FETCH_IMPLEMENTATION_KEY] = fetch; -}; - -/** - * @internal - */ -export const _getFetchImplementation: () => (...args: any[]) => any = () => { - return ( - (globalThis as any)[LANGSMITH_FETCH_IMPLEMENTATION_KEY] ?? - DEFAULT_FETCH_IMPLEMENTATION - ); -}; diff --git a/libs/sdk-js/src/tests/fetch.test.ts b/libs/sdk-js/src/tests/fetch.test.ts deleted file mode 100644 index dc23b80c5..000000000 --- a/libs/sdk-js/src/tests/fetch.test.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; -import { Client } from "../client.js"; -import { overrideFetchImplementation } from "../singletons/fetch.js"; - -describe.each([["global"], ["mocked"]])( - "Client uses %s fetch", - (description: string) => { - let globalFetchMock: ReturnType; - let overriddenFetch: ReturnType; - - let expectedFetchMock: ReturnType; - let unexpectedFetchMock: ReturnType; - - beforeEach(() => { - globalFetchMock = vi.fn(() => - Promise.resolve({ - ok: true, - json: () => - Promise.resolve({ - batch_ingest_config: { - use_multipart_endpoint: true, - }, - }), - text: () => Promise.resolve(""), - headers: new Headers({}), - }), - ); - overriddenFetch = vi.fn(() => - Promise.resolve({ - ok: true, - json: () => - Promise.resolve({ - batch_ingest_config: { - use_multipart_endpoint: true, - }, - }), - text: () => Promise.resolve(""), - headers: new Headers({}), - }), - ); - expectedFetchMock = - description === "mocked" ? overriddenFetch : globalFetchMock; - unexpectedFetchMock = - description === "mocked" ? globalFetchMock : overriddenFetch; - - if (description === "mocked") { - overrideFetchImplementation(overriddenFetch); - } else { - overrideFetchImplementation(globalFetchMock); - } - // Mock global fetch - (globalThis as any).fetch = globalFetchMock; - }); - - afterEach(() => { - vi.restoreAllMocks(); - }); - - describe("createRuns", () => { - it("should create an example with the given input and generation", async () => { - const client = new Client({ apiKey: "test-api-key" }); - - const thread = await client.threads.create(); - expect(expectedFetchMock).toHaveBeenCalledTimes(1); - expect(unexpectedFetchMock).not.toHaveBeenCalled(); - - vi.clearAllMocks(); // Clear all mocks before the next operation - - // Then clear & run the function - await client.runs.create(thread.thread_id, "somegraph", { - input: { foo: "bar" }, - }); - expect(expectedFetchMock).toHaveBeenCalledTimes(1); - expect(unexpectedFetchMock).not.toHaveBeenCalled(); - }); - }); - - describe("header coalescing", () => { - it("should properly merge headers with conflicting name casing", async () => { - const client = new Client({ apiKey: "test-api-key" }); - await (client.threads as any).fetch("/test", { - headers: { "X-Api-Key": "custom-value" }, - }); - expect(expectedFetchMock).toHaveBeenCalledWith( - expect.any(URL), - expect.objectContaining({ - headers: expect.objectContaining({ - "x-api-key": "custom-value", - }), - }), - ); - }); - - it("should properly merge headers from multiple sources", async () => { - const client = new Client({ - apiKey: "test-api-key", - defaultHeaders: { - "x-default": "default-value", - "x-override": "default-value", - }, - }); - - await (client.threads as any).fetch("/test", { - headers: { - "x-custom": "custom-value", - "x-override": "custom-value", - }, - }); - - expect(expectedFetchMock).toHaveBeenCalledWith( - expect.any(URL), - expect.objectContaining({ - headers: expect.objectContaining({ - "x-api-key": "test-api-key", - "x-default": "default-value", - "x-custom": "custom-value", - "x-override": "custom-value", - }), - }), - ); - - vi.clearAllMocks(); - - // Test with null/undefined values - await (client.threads as any).fetch("/test", { - headers: { - "x-null": null, - "x-undefined": undefined, - "x-empty": "", - }, - }); - - expect(expectedFetchMock).toHaveBeenCalledWith( - expect.any(URL), - expect.objectContaining({ - headers: expect.objectContaining({ - "x-api-key": "test-api-key", - "x-default": "default-value", - }), - }), - ); - expect(expectedFetchMock).not.toHaveBeenCalledWith( - expect.any(URL), - expect.objectContaining({ - headers: expect.objectContaining({ - "x-null": null, - "x-undefined": undefined, - }), - }), - ); - }); - - it("should handle Headers object input", async () => { - const client = new Client({ apiKey: "test-api-key" }); - const headers = new Headers(); - headers.append("x-custom", "custom-value"); - headers.append("x-multi", "value1"); - headers.append("x-multi", "value2"); - - await (client.threads as any).fetch("/test", { headers }); - - expect(expectedFetchMock).toHaveBeenCalledWith( - expect.any(URL), - expect.objectContaining({ - headers: expect.objectContaining({ - "x-api-key": "test-api-key", - "x-custom": "custom-value", - "x-multi": "value1, value2", - }), - }), - ); - }); - - it("should handle array of header tuples", async () => { - const client = new Client({ - apiKey: "test-api-key", - defaultHeaders: { - "x-custom": "custom-value", - }, - }); - const headers = [ - ["x-multi", "value1"], - ["x-multi", "value2"], - ]; - - await (client.threads as any).fetch("/test", { headers }); - - expect(expectedFetchMock).toHaveBeenCalledWith( - expect.any(URL), - expect.objectContaining({ - headers: expect.objectContaining({ - "x-api-key": "test-api-key", - "x-custom": "custom-value", - "x-multi": "value1, value2", - }), - }), - ); - }); - }); - }, -); diff --git a/libs/sdk-js/src/tests/sse.test.ts b/libs/sdk-js/src/tests/sse.test.ts deleted file mode 100644 index 1dd6a6d94..000000000 --- a/libs/sdk-js/src/tests/sse.test.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { describe, test, expect } from "vitest"; -import { Readable } from "node:stream"; -import { IterableReadableStream } from "../utils/stream.js"; -import { BytesLineDecoder, SSEDecoder } from "../utils/sse.js"; - -const gather = async (stream: ReadableStream): Promise => { - const results: T[] = []; - const iterator = IterableReadableStream.fromReadableStream(stream); - for await (const chunk of iterator) results.push(chunk); - return results; -}; - -const textEncoder = new TextEncoder(); -const textDecoder = new TextDecoder(); - -describe("BytesLineDecoder", () => { - const createStream = (chunks: Uint8Array[]) => { - return Readable.toWeb(Readable.from(chunks)) as ReadableStream; - }; - - test("handles single line with newline", async () => { - const input = createStream([textEncoder.encode("hello\n")]); - const decoded = input.pipeThrough(BytesLineDecoder()); - const results = await gather(decoded); - - expect(results.length).toBe(1); - expect(textDecoder.decode(results[0])).toBe("hello"); - }); - - test("handles multiple lines", async () => { - const input = createStream([textEncoder.encode("line1\nline2\nline3\n")]); - const decoded = input.pipeThrough(BytesLineDecoder()); - const results = await gather(decoded); - - expect(results.length).toBe(3); - expect(textDecoder.decode(results[0])).toBe("line1"); - expect(textDecoder.decode(results[1])).toBe("line2"); - expect(textDecoder.decode(results[2])).toBe("line3"); - }); - - test("handles split chunks", async () => { - const input = createStream([ - textEncoder.encode("li"), - textEncoder.encode("ne1\nli"), - textEncoder.encode("ne2\n"), - ]); - const decoded = input.pipeThrough(BytesLineDecoder()); - const results = await gather(decoded); - - expect(results.length).toBe(2); - expect(textDecoder.decode(results[0])).toBe("line1"); - expect(textDecoder.decode(results[1])).toBe("line2"); - }); - - test("handles CR LF line endings", async () => { - const input = createStream([textEncoder.encode("line1\r\nline2\r\n")]); - const decoded = input.pipeThrough(BytesLineDecoder()); - const results = await gather(decoded); - - expect(results.length).toBe(2); - expect(textDecoder.decode(results[0])).toBe("line1"); - expect(textDecoder.decode(results[1])).toBe("line2"); - }); - - test("handles split CR LF", async () => { - const input = createStream([ - textEncoder.encode("line1\r"), - textEncoder.encode("\nline2\r\n"), - ]); - const decoded = input.pipeThrough(BytesLineDecoder()); - const results = await gather(decoded); - - expect(results.length).toBe(2); - expect(textDecoder.decode(results[0])).toBe("line1"); - expect(textDecoder.decode(results[1])).toBe("line2"); - }); - - test("handles stale line", async () => { - const input = createStream([textEncoder.encode("hello")]); - const decoded = input.pipeThrough(BytesLineDecoder()); - const results = await gather(decoded); - - expect(results.length).toBe(1); - expect(textDecoder.decode(results[0])).toBe("hello"); - }); -}); - -describe("SSEDecoder", () => { - const createStream = (lines: string[]) => { - return Readable.toWeb( - Readable.from(lines.map((line) => textEncoder.encode(line))), - ) as ReadableStream; - }; - - test("decodes simple event", async () => { - const input = createStream([ - "event: test\n", - 'data: {"message": "hello"}\n', - "\n", - ]); - const decoded = input - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - const results = await gather(decoded); - expect(results.length).toBe(1); - expect(results[0]).toEqual({ - event: "test", - data: { message: "hello" }, - }); - }); - - test("ignores comments", async () => { - const input = createStream([ - ": this is a comment\n", - "event: test\n", - 'data: {"message": "hello"}\n', - ]); - const decoded = input - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - const results = await gather(decoded); - expect(results.length).toBe(1); - expect(results[0]).toEqual({ - event: "test", - data: { message: "hello" }, - }); - }); - - test("handles multiple events", async () => { - const input = createStream([ - "event: test1\n", - 'data: {"message": "hello"}\n', - "\n", - "event: test2\n", - 'data: {"message": "world"}\n', - "\n", - ]); - const decoded = input - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - const results = await gather(decoded); - expect(results.length).toBe(2); - expect(results[0]).toEqual({ - event: "test1", - data: { message: "hello" }, - }); - expect(results[1]).toEqual({ - event: "test2", - data: { message: "world" }, - }); - }); - - test("end event without data", async () => { - const input = createStream(["event: test\n"]); - const decoded = input - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - const results = await gather(decoded); - expect(results.length).toBe(1); - expect(results[0]).toEqual({ - event: "test", - data: null, - }); - }); - - test("end event without newline", async () => { - const input = createStream(["event: end"]); - const decoded = input - .pipeThrough(BytesLineDecoder()) - .pipeThrough(SSEDecoder()); - - const results = await gather(decoded); - expect(results.length).toBe(1); - expect(results[0]).toEqual({ - event: "end", - data: null, - }); - }); -}); diff --git a/libs/sdk-js/src/tests/stream.test.tsx b/libs/sdk-js/src/tests/stream.test.tsx deleted file mode 100644 index e05dde513..000000000 --- a/libs/sdk-js/src/tests/stream.test.tsx +++ /dev/null @@ -1,450 +0,0 @@ -import "@testing-library/jest-dom/vitest"; - -import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; -import { render, screen, waitFor } from "@testing-library/react"; -import { userEvent } from "@testing-library/user-event"; -import { setupServer } from "msw/node"; -import { http } from "msw"; -import { useStream } from "../react/stream.js"; -import type { Message } from "../types.messages.js"; - -import { StateGraph, MessagesAnnotation, START } from "@langchain/langgraph"; -import { MemorySaver } from "@langchain/langgraph-checkpoint"; -import { FakeStreamingChatModel } from "@langchain/core/utils/testing"; -import { AIMessage } from "@langchain/core/messages"; -import { createEmbedServer } from "@langchain/langgraph-api/experimental/embed"; -import { randomUUID } from "node:crypto"; -import { useState } from "react"; - -const threads = (() => { - const THREADS: Record< - string, - { thread_id: string; metadata: Record } - > = {}; - - return { - get: async (id: string) => THREADS[id], - put: async ( - threadId: string, - { metadata }: { metadata?: Record }, - ) => { - THREADS[threadId] = { thread_id: threadId, metadata: metadata ?? {} }; - }, - delete: async (threadId: string) => { - delete THREADS[threadId]; - }, - }; -})(); - -const checkpointer = new MemorySaver(); - -const model = new FakeStreamingChatModel({ responses: [new AIMessage("Hey")] }); -const agent = new StateGraph(MessagesAnnotation) - .addNode("agent", async (state: { messages: Message[] }) => { - const response = await model.invoke(state.messages); - return { messages: [response] }; - }) - .addEdge(START, "agent") - .compile(); - -const app = createEmbedServer({ graph: { agent }, checkpointer, threads }); -const server = setupServer(http.all("*", (ctx) => app.fetch(ctx.request))); - -function TestChatComponent() { - const { messages, isLoading, error, submit, stop } = useStream({ - assistantId: "agent", - apiKey: "test-api-key", - }); - - return ( -
-
- {messages.map((msg, i) => ( -
- {typeof msg.content === "string" - ? msg.content - : JSON.stringify(msg.content)} -
- ))} -
-
- {isLoading ? "Loading..." : "Not loading"} -
- {error ?
{String(error)}
: null} - - -
- ); -} - -describe("useStream", () => { - beforeEach(() => server.listen()); - - afterEach(() => { - server.resetHandlers(); - server.close(); - vi.clearAllMocks(); - }); - - it("renders initial state correctly", () => { - render(); - - expect(screen.getByTestId("loading")).toHaveTextContent("Not loading"); - expect(screen.getByTestId("messages")).toBeEmptyDOMElement(); - expect(screen.queryByTestId("error")).not.toBeInTheDocument(); - }); - - it("handles message submission and streaming", async () => { - const user = userEvent.setup(); - - render(); - - // Check loading state - await user.click(screen.getByTestId("submit")); - expect(screen.getByTestId("loading")).toHaveTextContent("Loading..."); - - // Wait for messages to appear - await waitFor(() => { - expect(screen.getByTestId("message-0")).toHaveTextContent("Hello"); - expect(screen.getByTestId("message-1")).toHaveTextContent("Hey"); - }); - - // Check final state - expect(screen.getByTestId("loading")).toHaveTextContent("Not loading"); - }); - - it("handles stop functionality", async () => { - const user = userEvent.setup(); - render(); - - // Start streaming and stop immediately - await user.click(screen.getByTestId("submit")); - await user.click(screen.getByTestId("stop")); - - // Check loading state is reset - await waitFor(() => { - expect(screen.getByTestId("loading")).toHaveTextContent("Not loading"); - }); - }); - - it("displays initial values immediately and clears them when submitting", async () => { - const user = userEvent.setup(); - - function TestCachedComponent() { - const { messages, values, submit } = useStream<{ - messages: Message[]; - }>({ - assistantId: "agent", - apiKey: "test-api-key", - initialValues: { - messages: [ - { id: "cached-1", type: "human", content: "Cached user message" }, - { id: "cached-2", type: "ai", content: "Cached AI response" }, - ], - }, - }); - - return ( -
-
- {messages.map((msg, i) => ( -
- {typeof msg.content === "string" - ? msg.content - : JSON.stringify(msg.content)} -
- ))} -
-
{JSON.stringify(values)}
- -
- ); - } - - render(); - - // Should immediately show cached messages - expect(screen.getByTestId("message-cached-0")).toHaveTextContent( - "Cached user message", - ); - expect(screen.getByTestId("message-cached-1")).toHaveTextContent( - "Cached AI response", - ); - - // Values should include initial values - expect(screen.getByTestId("values")).toHaveTextContent( - "Cached user message", - ); - - // Submitting should clear out the cached messages - await user.click(screen.getByTestId("submit")); - - // Wait for messages to appear - await waitFor(() => { - expect(screen.getByTestId("message-0")).toHaveTextContent("Hello"); - expect(screen.getByTestId("message-1")).toHaveTextContent("Hey"); - }); - }); - - it("accepts newThreadId option without errors", async () => { - const user = userEvent.setup(); - - const spy = vi.fn(); - const predeterminedThreadId = randomUUID(); - - // Test that newThreadId option can be passed without causing errors - function TestNewThreadComponent() { - const stream = useStream<{ messages: Message[] }>({ - assistantId: "agent", - apiKey: "test-api-key", - threadId: null, // Start with no thread - onThreadId: spy, // Mock callback - }); - - return ( -
-
- {stream.isLoading ? "Loading..." : "Not loading"} -
-
- {stream.client ? "Client ready" : "No client"} -
- -
- ); - } - - render(); - - // Should render without errors - expect(screen.getByTestId("loading")).toHaveTextContent("Not loading"); - expect(screen.getByTestId("thread-id")).toHaveTextContent("Client ready"); - - await user.click(screen.getByTestId("submit")); - expect(spy).toHaveBeenCalledWith(predeterminedThreadId); - expect(await threads.get(predeterminedThreadId)).toEqual({ - thread_id: predeterminedThreadId, - metadata: { - graph_id: "agent", - assistant_id: "agent", - }, - }); - }); - - it("onStop callback is called when stop is called", async () => { - const user = userEvent.setup(); - const onStopCallback = vi.fn(); - - function TestComponent() { - const { submit, stop } = useStream({ - assistantId: "agent", - apiKey: "test-api-key", - onStop: onStopCallback, - }); - - return ( -
- - -
- ); - } - - render(); - - // Start a stream and stop it - await user.click(screen.getByTestId("submit")); - await user.click(screen.getByTestId("stop")); - - // Verify onStop was called with mutate function - expect(onStopCallback).toHaveBeenCalledTimes(1); - expect(onStopCallback).toHaveBeenCalledWith( - expect.objectContaining({ - mutate: expect.any(Function), - }), - ); - }); - - it("onStop mutate function updates stream values immediately", async () => { - const user = userEvent.setup(); - - function TestComponent() { - const [stopped, setStopped] = useState(false); - const { submit, stop, messages } = useStream<{ messages: Message[] }>({ - assistantId: "agent", - apiKey: "test-api-key", - onStop: ({ mutate }) => { - setStopped(true); - mutate((prev) => ({ - ...prev, - messages: [ - ...(prev.messages ?? []), - { type: "ai", content: "Stream stopped" }, - ], - })); - }, - }); - - return ( -
-
- {stopped ? "Stopped" : "Not stopped"} -
-
- {messages.map((msg, i) => ( -
- {typeof msg.content === "string" - ? msg.content - : JSON.stringify(msg.content)} -
- ))} -
- - -
- ); - } - - render(); - - // Initial state - expect(screen.getByTestId("stopped-status")).toHaveTextContent( - "Not stopped", - ); - - // Start and stop stream - await user.click(screen.getByTestId("submit")); - await user.click(screen.getByTestId("stop")); - - // Verify state was updated immediately - await waitFor(() => { - expect(screen.getByTestId("stopped-status")).toHaveTextContent("Stopped"); - expect(screen.getByTestId("message-0")).toHaveTextContent( - "Stream stopped", - ); - }); - }); - - it("onStop handles functional updates correctly", async () => { - const user = userEvent.setup(); - - function TestComponent() { - const { submit, stop, values } = useStream({ - assistantId: "agent", - apiKey: "test-api-key", - initialValues: { - counter: 5, - items: ["item1", "item2"], - }, - onStop: ({ mutate }) => { - mutate((prev: any) => ({ - ...prev, - counter: (prev.counter || 0) + 10, - items: [...(prev.items || []), "stopped"], - })); - }, - }); - - return ( -
-
{(values as any).counter}
-
{(values as any).items?.join(", ")}
- - -
- ); - } - - render(); - - // Initial state - expect(screen.getByTestId("counter")).toHaveTextContent("5"); - expect(screen.getByTestId("items")).toHaveTextContent("item1, item2"); - - // Start and stop stream - await user.click(screen.getByTestId("submit")); - await user.click(screen.getByTestId("stop")); - - // Verify functional update was applied correctly - await waitFor(() => { - expect(screen.getByTestId("counter")).toHaveTextContent("15"); - expect(screen.getByTestId("items")).toHaveTextContent( - "item1, item2, stopped", - ); - }); - }); - - it("onStop is not called when stream completes naturally", async () => { - const user = userEvent.setup(); - - const onStopCallback = vi.fn(); - - function TestComponent() { - const { submit } = useStream({ - assistantId: "agent", - apiKey: "test-api-key", - onStop: onStopCallback, - }); - - return ( -
- -
- ); - } - - render(); - - // Start a stream and let it complete naturally - await user.click(screen.getByTestId("submit")); - - // Wait for stream to complete naturally - await waitFor(() => { - expect(onStopCallback).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/libs/sdk-js/src/types.messages.ts b/libs/sdk-js/src/types.messages.ts deleted file mode 100644 index 26b929535..000000000 --- a/libs/sdk-js/src/types.messages.ts +++ /dev/null @@ -1,101 +0,0 @@ -type ImageDetail = "auto" | "low" | "high"; -type MessageContentImageUrl = { - type: "image_url"; - image_url: string | { url: string; detail?: ImageDetail | undefined }; -}; - -type MessageContentText = { type: "text"; text: string }; -type MessageContentComplex = MessageContentText | MessageContentImageUrl; -type MessageContent = string | MessageContentComplex[]; - -/** - * Model-specific additional kwargs, which is passed back to the underlying LLM. - */ -type MessageAdditionalKwargs = Record; - -type BaseMessage = { - additional_kwargs?: MessageAdditionalKwargs | undefined; - content: MessageContent; - id?: string | undefined; - name?: string | undefined; - response_metadata?: Record | undefined; -}; - -export type HumanMessage = BaseMessage & { - type: "human"; - example?: boolean | undefined; -}; - -export type AIMessage = BaseMessage & { - type: "ai"; - example?: boolean | undefined; - tool_calls?: - | { - name: string; - args: { [x: string]: any }; - id?: string | undefined; - type?: "tool_call" | undefined; - }[] - | undefined; - invalid_tool_calls?: - | { - name?: string | undefined; - args?: string | undefined; - id?: string | undefined; - error?: string | undefined; - type?: "invalid_tool_call" | undefined; - }[] - | undefined; - usage_metadata?: - | { - input_tokens: number; - output_tokens: number; - total_tokens: number; - input_token_details?: - | { - audio?: number | undefined; - cache_read?: number | undefined; - cache_creation?: number | undefined; - } - | undefined; - output_token_details?: - | { audio?: number | undefined; reasoning?: number | undefined } - | undefined; - } - | undefined; -}; - -export type ToolMessage = BaseMessage & { - type: "tool"; - status?: "error" | "success" | undefined; - tool_call_id: string; - /** - * Artifact of the Tool execution which is not meant to be sent to the model. - * - * Should only be specified if it is different from the message content, e.g. if only - * a subset of the full tool output is being passed as message content but the full - * output is needed in other parts of the code. - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - artifact?: any; -}; - -export type SystemMessage = BaseMessage & { - type: "system"; -}; - -export type FunctionMessage = BaseMessage & { - type: "function"; -}; - -export type RemoveMessage = BaseMessage & { - type: "remove"; -}; - -export type Message = - | HumanMessage - | AIMessage - | ToolMessage - | SystemMessage - | FunctionMessage - | RemoveMessage; diff --git a/libs/sdk-js/src/types.stream.ts b/libs/sdk-js/src/types.stream.ts deleted file mode 100644 index 5d69c2b9f..000000000 --- a/libs/sdk-js/src/types.stream.ts +++ /dev/null @@ -1,231 +0,0 @@ -import type { Message } from "./types.messages.js"; - -/** - * Stream modes - * - "values": Stream only the state values. - * - "messages": Stream complete messages. - * - "messages-tuple": Stream (message chunk, metadata) tuples. - * - "updates": Stream updates to the state. - * - "events": Stream events occurring during execution. - * - "debug": Stream detailed debug information. - * - "custom": Stream custom events. - */ -export type StreamMode = - | "values" - | "messages" - | "updates" - | "events" - | "debug" - | "custom" - | "messages-tuple"; - -type MessageTupleMetadata = { - tags: string[]; - [key: string]: unknown; -}; - -type AsSubgraph = - { - id?: TEvent["id"]; - event: TEvent["event"] | `${TEvent["event"]}|${string}`; - data: TEvent["data"]; - }; - -/** - * Stream event with values after completion of each step. - */ -export type ValuesStreamEvent = { - id?: string; - event: "values"; - data: StateType; -}; - -/** @internal */ -export type SubgraphValuesStreamEvent = AsSubgraph< - ValuesStreamEvent ->; - -/** - * Stream event with message chunks coming from LLM invocations inside nodes. - */ -export type MessagesTupleStreamEvent = { - event: "messages"; - // TODO: add types for message and config, which do not depend on LangChain - // while making sure it's easy to keep them in sync. - data: [message: Message, config: MessageTupleMetadata]; -}; - -/** @internal */ -export type SubgraphMessagesTupleStreamEvent = - AsSubgraph; - -/** - * Metadata stream event with information about the run and thread - */ -export type MetadataStreamEvent = { - id?: string; - event: "metadata"; - data: { run_id: string; thread_id: string }; -}; - -/** - * Stream event with error information. - */ -export type ErrorStreamEvent = { - id?: string; - event: "error"; - data: { error: string; message: string }; -}; - -/** @internal */ -export type SubgraphErrorStreamEvent = AsSubgraph; - -/** - * Stream event with updates to the state after each step. - * The streamed outputs include the name of the node that - * produced the update as well as the update. - */ -export type UpdatesStreamEvent = { - id?: string; - event: "updates"; - data: { [node: string]: UpdateType }; -}; - -/** @internal */ -export type SubgraphUpdatesStreamEvent = AsSubgraph< - UpdatesStreamEvent ->; - -/** - * Streaming custom data from inside the nodes. - */ -export type CustomStreamEvent = { event: "custom"; data: T }; - -/** @internal */ -export type SubgraphCustomStreamEvent = AsSubgraph>; - -type MessagesMetadataStreamEvent = { - id?: string; - event: "messages/metadata"; - data: { [messageId: string]: { metadata: unknown } }; -}; -type MessagesCompleteStreamEvent = { - id?: string; - event: "messages/complete"; - data: Message[]; -}; -type MessagesPartialStreamEvent = { - id?: string; - event: "messages/partial"; - data: Message[]; -}; - -/** - * Message stream event specific to LangGraph Server. - * @deprecated Use `streamMode: "messages-tuple"` instead. - */ -export type MessagesStreamEvent = - | MessagesMetadataStreamEvent - | MessagesCompleteStreamEvent - | MessagesPartialStreamEvent; - -/** @internal */ -export type SubgraphMessagesStreamEvent = - | AsSubgraph - | AsSubgraph - | AsSubgraph; - -/** - * Stream event with detailed debug information. - */ -export type DebugStreamEvent = { id?: string; event: "debug"; data: unknown }; - -/** @internal */ -export type SubgraphDebugStreamEvent = AsSubgraph; - -/** - * Stream event with events occurring during execution. - */ -export type EventsStreamEvent = { - id?: string; - event: "events"; - data: { - event: - | `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` - | (string & {}); - name: string; - tags: string[]; - run_id: string; - metadata: Record; - parent_ids: string[]; - data: unknown; - }; -}; - -/** @internal */ -export type SubgraphEventsStreamEvent = AsSubgraph; - -/** - * Stream event with a feedback key to signed URL map. Set `feedbackKeys` in - * the `RunsStreamPayload` to receive this event. - */ -export type FeedbackStreamEvent = { - id?: string; - event: "feedback"; - data: { [feedbackKey: string]: string }; -}; - -type GetStreamModeMap< - TStreamMode extends StreamMode | StreamMode[], - TStateType = unknown, - TUpdateType = TStateType, - TCustomType = unknown, -> = - | { - values: ValuesStreamEvent; - updates: UpdatesStreamEvent; - custom: CustomStreamEvent; - debug: DebugStreamEvent; - messages: MessagesStreamEvent; - "messages-tuple": MessagesTupleStreamEvent; - events: EventsStreamEvent; - }[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] - | ErrorStreamEvent - | MetadataStreamEvent - | FeedbackStreamEvent; - -type GetSubgraphsStreamModeMap< - TStreamMode extends StreamMode | StreamMode[], - TStateType = unknown, - TUpdateType = TStateType, - TCustomType = unknown, -> = - | { - values: SubgraphValuesStreamEvent; - updates: SubgraphUpdatesStreamEvent; - custom: SubgraphCustomStreamEvent; - debug: SubgraphDebugStreamEvent; - messages: SubgraphMessagesStreamEvent; - "messages-tuple": SubgraphMessagesTupleStreamEvent; - events: SubgraphEventsStreamEvent; - }[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] - | SubgraphErrorStreamEvent - | MetadataStreamEvent - | FeedbackStreamEvent; - -export type TypedAsyncGenerator< - TStreamMode extends StreamMode | StreamMode[] = [], - TSubgraphs extends boolean = false, - TStateType = unknown, - TUpdateType = TStateType, - TCustomType = unknown, -> = AsyncGenerator< - TSubgraphs extends true - ? GetSubgraphsStreamModeMap< - TStreamMode, - TStateType, - TUpdateType, - TCustomType - > - : GetStreamModeMap ->; diff --git a/libs/sdk-js/src/types.ts b/libs/sdk-js/src/types.ts deleted file mode 100644 index 743f714b3..000000000 --- a/libs/sdk-js/src/types.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { LangChainTracer } from "@langchain/core/tracers/tracer_langchain"; -import { Checkpoint, Config, Metadata } from "./schema.js"; -import { StreamMode } from "./types.stream.js"; - -export type MultitaskStrategy = "reject" | "interrupt" | "rollback" | "enqueue"; -export type OnConflictBehavior = "raise" | "do_nothing"; -export type OnCompletionBehavior = "complete" | "continue"; -export type DisconnectMode = "cancel" | "continue"; -export type StreamEvent = - | "events" - | "metadata" - | "debug" - | "updates" - | "values" - | "messages/partial" - | "messages/metadata" - | "messages/complete" - | "messages" - | (string & {}); - -export interface Send { - node: string; - input: unknown | null; -} - -export interface Command { - /** - * An object to update the thread state with. - */ - update?: Record | [string, unknown][] | null; - - /** - * The value to return from an `interrupt` function call. - */ - resume?: unknown; - - /** - * Determine the next node to navigate to. Can be one of the following: - * - Name(s) of the node names to navigate to next. - * - `Send` command(s) to execute node(s) with provided input. - */ - goto?: Send | Send[] | string | string[]; -} - -export interface RunsInvokePayload { - /** - * Input to the run. Pass `null` to resume from the current state of the thread. - */ - input?: Record | null; - - /** - * Metadata for the run. - */ - metadata?: Metadata; - - /** - * Additional configuration for the run. - */ - config?: Config; - - /** - * Checkpoint ID for when creating a new run. - */ - checkpointId?: string; - - /** - * Checkpoint for when creating a new run. - */ - checkpoint?: Omit; - - /** - * Whether to checkpoint during the run (or only at the end/interruption). - */ - checkpointDuring?: boolean; - - /** - * Interrupt execution before entering these nodes. - */ - interruptBefore?: "*" | string[]; - - /** - * Interrupt execution after leaving these nodes. - */ - interruptAfter?: "*" | string[]; - - /** - * Strategy to handle concurrent runs on the same thread. Only relevant if - * there is a pending/inflight run on the same thread. One of: - * - "reject": Reject the new run. - * - "interrupt": Interrupt the current run, keeping steps completed until now, - and start a new one. - * - "rollback": Cancel and delete the existing run, rolling back the thread to - the state before it had started, then start the new run. - * - "enqueue": Queue up the new run to start after the current run finishes. - */ - multitaskStrategy?: MultitaskStrategy; - - /** - * Abort controller signal to cancel the run. - */ - signal?: AbortController["signal"]; - - /** - * Behavior to handle run completion. Only relevant if - * there is a pending/inflight run on the same thread. One of: - * - "complete": Complete the run. - * - "continue": Continue the run. - */ - onCompletion?: OnCompletionBehavior; - - /** - * Webhook to call when the run is complete. - */ - webhook?: string; - - /** - * Behavior to handle disconnection. Only relevant if - * there is a pending/inflight run on the same thread. One of: - * - "cancel": Cancel the run. - * - "continue": Continue the run. - */ - onDisconnect?: DisconnectMode; - - /** - * The number of seconds to wait before starting the run. - * Use to schedule future runs. - */ - afterSeconds?: number; - - /** - * Behavior if the specified run doesn't exist. Defaults to "reject". - */ - ifNotExists?: "create" | "reject"; - - /** - * One or more commands to invoke the graph with. - */ - command?: Command; - - /** - * Callback when a run is created. - */ - onRunCreated?: (params: { run_id: string; thread_id?: string }) => void; - - /** - * @internal - * For LangSmith tracing purposes only. Not part of the public API. - */ - _langsmithTracer?: LangChainTracer; -} - -export interface RunsStreamPayload< - TStreamMode extends StreamMode | StreamMode[] = [], - TSubgraphs extends boolean = false, -> extends RunsInvokePayload { - /** - * One of `"values"`, `"messages"`, `"messages-tuple"`, `"updates"`, `"events"`, `"debug"`, `"custom"`. - */ - streamMode?: TStreamMode; - - /** - * Stream output from subgraphs. By default, streams only the top graph. - */ - streamSubgraphs?: TSubgraphs; - - /** - * Whether the stream is considered resumable. - * If true, the stream can be resumed and replayed in its entirety even after disconnection. - */ - streamResumable?: boolean; - - /** - * Pass one or more feedbackKeys if you want to request short-lived signed URLs - * for submitting feedback to LangSmith with this key for this run. - */ - feedbackKeys?: string[]; -} - -export interface RunsCreatePayload extends RunsInvokePayload { - /** - * One of `"values"`, `"messages"`, `"messages-tuple"`, `"updates"`, `"events"`, `"debug"`, `"custom"`. - */ - streamMode?: StreamMode | Array; - - /** - * Stream output from subgraphs. By default, streams only the top graph. - */ - streamSubgraphs?: boolean; - - /** - * Whether the stream is considered resumable. - * If true, the stream can be resumed and replayed in its entirety even after disconnection. - */ - streamResumable?: boolean; -} - -export interface CronsCreatePayload extends RunsCreatePayload { - /** - * Schedule for running the Cron Job - */ - schedule: string; -} - -export interface RunsWaitPayload extends RunsStreamPayload { - /** - * Raise errors returned by the run. Default is `true`. - */ - raiseError?: boolean; -} diff --git a/libs/sdk-js/src/utils/async_caller.ts b/libs/sdk-js/src/utils/async_caller.ts deleted file mode 100644 index 5ee431622..000000000 --- a/libs/sdk-js/src/utils/async_caller.ts +++ /dev/null @@ -1,216 +0,0 @@ -import pRetry from "p-retry"; -import PQueueMod from "p-queue"; -import { _getFetchImplementation } from "../singletons/fetch.js"; - -const STATUS_NO_RETRY = [ - 400, // Bad Request - 401, // Unauthorized - 402, // Payment required - 403, // Forbidden - 404, // Not Found - 405, // Method Not Allowed - 406, // Not Acceptable - 407, // Proxy Authentication Required - 408, // Request Timeout - 409, // Conflict - 422, // Unprocessable Entity -]; - -type ResponseCallback = (response?: Response) => Promise; - -export interface AsyncCallerParams { - /** - * The maximum number of concurrent calls that can be made. - * Defaults to `Infinity`, which means no limit. - */ - maxConcurrency?: number; - /** - * The maximum number of retries that can be made for a single call, - * with an exponential backoff between each attempt. Defaults to 6. - */ - maxRetries?: number; - - onFailedResponseHook?: ResponseCallback; - - /** - * Specify a custom fetch implementation. - * - * By default we expect the `fetch` is available in the global scope. - */ - fetch?: typeof fetch | ((...args: any[]) => any); -} - -export interface AsyncCallerCallOptions { - signal?: AbortSignal; -} - -/** - * Do not rely on globalThis.Response, rather just - * do duck typing - */ -function isResponse(x: unknown): x is Response { - if (x == null || typeof x !== "object") return false; - return "status" in x && "statusText" in x && "text" in x; -} - -/** - * Utility error to properly handle failed requests - */ -class HTTPError extends Error { - status: number; - text: string; - - response?: Response; - - constructor(status: number, message: string, response?: Response) { - super(`HTTP ${status}: ${message}`); - this.status = status; - this.text = message; - this.response = response; - } - - static async fromResponse( - response: Response, - options?: { includeResponse?: boolean }, - ): Promise { - try { - return new HTTPError( - response.status, - await response.text(), - options?.includeResponse ? response : undefined, - ); - } catch { - return new HTTPError( - response.status, - response.statusText, - options?.includeResponse ? response : undefined, - ); - } - } -} - -/** - * A class that can be used to make async calls with concurrency and retry logic. - * - * This is useful for making calls to any kind of "expensive" external resource, - * be it because it's rate-limited, subject to network issues, etc. - * - * Concurrent calls are limited by the `maxConcurrency` parameter, which defaults - * to `Infinity`. This means that by default, all calls will be made in parallel. - * - * Retries are limited by the `maxRetries` parameter, which defaults to 5. This - * means that by default, each call will be retried up to 5 times, with an - * exponential backoff between each attempt. - */ -export class AsyncCaller { - protected maxConcurrency: AsyncCallerParams["maxConcurrency"]; - - protected maxRetries: AsyncCallerParams["maxRetries"]; - - private queue: (typeof import("p-queue"))["default"]["prototype"]; - - private onFailedResponseHook?: ResponseCallback; - - private customFetch?: typeof fetch; - - constructor(params: AsyncCallerParams) { - this.maxConcurrency = params.maxConcurrency ?? Infinity; - this.maxRetries = params.maxRetries ?? 4; - - if ("default" in PQueueMod) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.queue = new (PQueueMod.default as any)({ - concurrency: this.maxConcurrency, - }); - } else { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.queue = new (PQueueMod as any)({ concurrency: this.maxConcurrency }); - } - this.onFailedResponseHook = params?.onFailedResponseHook; - this.customFetch = params.fetch; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - call Promise>( - callable: T, - ...args: Parameters - ): Promise>> { - const onFailedResponseHook = this.onFailedResponseHook; - return this.queue.add( - () => - pRetry( - () => - callable(...(args as Parameters)).catch(async (error) => { - // eslint-disable-next-line no-instanceof/no-instanceof - if (error instanceof Error) { - throw error; - } else if (isResponse(error)) { - throw await HTTPError.fromResponse(error, { - includeResponse: !!onFailedResponseHook, - }); - } else { - throw new Error(error); - } - }), - { - async onFailedAttempt(error) { - if ( - error.message.startsWith("Cancel") || - error.message.startsWith("TimeoutError") || - error.message.startsWith("AbortError") - ) { - throw error; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - if ((error as any)?.code === "ECONNABORTED") { - throw error; - } - - if (error instanceof HTTPError) { - if (STATUS_NO_RETRY.includes(error.status)) { - throw error; - } - if (onFailedResponseHook && error.response) { - await onFailedResponseHook(error.response); - } - } - }, - // If needed we can change some of the defaults here, - // but they're quite sensible. - retries: this.maxRetries, - randomize: true, - }, - ), - { throwOnTimeout: true }, - ); - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - callWithOptions Promise>( - options: AsyncCallerCallOptions, - callable: T, - ...args: Parameters - ): Promise>> { - // Note this doesn't cancel the underlying request, - // when available prefer to use the signal option of the underlying call - if (options.signal) { - return Promise.race([ - this.call(callable, ...args), - new Promise((_, reject) => { - options.signal?.addEventListener("abort", () => { - reject(new Error("AbortError")); - }); - }), - ]); - } - return this.call(callable, ...args); - } - - fetch(...args: Parameters): ReturnType { - const fetchFn = - this.customFetch ?? (_getFetchImplementation() as typeof fetch); - return this.call(() => - fetchFn(...args).then((res) => (res.ok ? res : Promise.reject(res))), - ); - } -} diff --git a/libs/sdk-js/src/utils/env.ts b/libs/sdk-js/src/utils/env.ts deleted file mode 100644 index 738c14fd5..000000000 --- a/libs/sdk-js/src/utils/env.ts +++ /dev/null @@ -1,11 +0,0 @@ -export function getEnvironmentVariable(name: string): string | undefined { - // Certain setups (Deno, frontend) will throw an error if you try to access environment variables - try { - return typeof process !== "undefined" - ? // eslint-disable-next-line no-process-env - process.env?.[name] - : undefined; - } catch (e) { - return undefined; - } -} diff --git a/libs/sdk-js/src/utils/signals.ts b/libs/sdk-js/src/utils/signals.ts deleted file mode 100644 index 915753325..000000000 --- a/libs/sdk-js/src/utils/signals.ts +++ /dev/null @@ -1,22 +0,0 @@ -export function mergeSignals(...signals: (AbortSignal | null | undefined)[]) { - const nonZeroSignals = signals.filter( - (signal): signal is AbortSignal => signal != null, - ); - - if (nonZeroSignals.length === 0) return undefined; - if (nonZeroSignals.length === 1) return nonZeroSignals[0]; - - const controller = new AbortController(); - for (const signal of signals) { - if (signal?.aborted) { - controller.abort(signal.reason); - return controller.signal; - } - - signal?.addEventListener("abort", () => controller.abort(signal.reason), { - once: true, - }); - } - - return controller.signal; -} diff --git a/libs/sdk-js/src/utils/sse.ts b/libs/sdk-js/src/utils/sse.ts deleted file mode 100644 index a080922f5..000000000 --- a/libs/sdk-js/src/utils/sse.ts +++ /dev/null @@ -1,175 +0,0 @@ -const CR = "\r".charCodeAt(0); -const LF = "\n".charCodeAt(0); -const NULL = "\0".charCodeAt(0); -const COLON = ":".charCodeAt(0); -const SPACE = " ".charCodeAt(0); - -const TRAILING_NEWLINE = [CR, LF]; - -export function BytesLineDecoder() { - let buffer: Uint8Array[] = []; - let trailingCr = false; - - return new TransformStream({ - start() { - buffer = []; - trailingCr = false; - }, - - transform(chunk, controller) { - // See https://docs.python.org/3/glossary.html#term-universal-newlines - let text = chunk; - - // Handle trailing CR from previous chunk - if (trailingCr) { - text = joinArrays([[CR], text]); - trailingCr = false; - } - - // Check for trailing CR in current chunk - if (text.length > 0 && text.at(-1) === CR) { - trailingCr = true; - text = text.subarray(0, -1); - } - - if (!text.length) return; - const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1)!); - - const lastIdx = text.length - 1; - const { lines } = text.reduce<{ lines: Uint8Array[]; from: number }>( - (acc, cur, idx) => { - if (acc.from > idx) return acc; - - if (cur === CR || cur === LF) { - acc.lines.push(text.subarray(acc.from, idx)); - if (cur === CR && text[idx + 1] === LF) { - acc.from = idx + 2; - } else { - acc.from = idx + 1; - } - } - - if (idx === lastIdx && acc.from <= lastIdx) { - acc.lines.push(text.subarray(acc.from)); - } - - return acc; - }, - { lines: [], from: 0 }, - ); - - if (lines.length === 1 && !trailingNewline) { - buffer.push(lines[0]); - return; - } - - if (buffer.length) { - // Include existing buffer in first line - buffer.push(lines[0]); - lines[0] = joinArrays(buffer); - buffer = []; - } - - if (!trailingNewline) { - // If the last segment is not newline terminated, - // buffer it for the next chunk - if (lines.length) buffer = [lines.pop()!]; - } - - // Enqueue complete lines - for (const line of lines) { - controller.enqueue(line); - } - }, - - flush(controller) { - if (buffer.length) { - controller.enqueue(joinArrays(buffer)); - } - }, - }); -} - -interface StreamPart { - id: string | undefined; - event: string; - data: unknown; -} - -export function SSEDecoder() { - let event = ""; - let data: Uint8Array[] = []; - let lastEventId = ""; - let retry: number | null = null; - - const decoder = new TextDecoder(); - - return new TransformStream({ - transform(chunk, controller) { - // Handle empty line case - if (!chunk.length) { - if (!event && !data.length && !lastEventId && retry == null) return; - - const sse = { - id: lastEventId || undefined, - event, - data: data.length ? decodeArraysToJson(decoder, data) : null, - }; - - // NOTE: as per the SSE spec, do not reset lastEventId - event = ""; - data = []; - retry = null; - - controller.enqueue(sse); - return; - } - - // Ignore comments - if (chunk[0] === COLON) return; - - const sepIdx = chunk.indexOf(COLON); - if (sepIdx === -1) return; - - const fieldName = decoder.decode(chunk.subarray(0, sepIdx)); - let value = chunk.subarray(sepIdx + 1); - if (value[0] === SPACE) value = value.subarray(1); - - if (fieldName === "event") { - event = decoder.decode(value); - } else if (fieldName === "data") { - data.push(value); - } else if (fieldName === "id") { - if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value); - } else if (fieldName === "retry") { - const retryNum = Number.parseInt(decoder.decode(value)); - if (!Number.isNaN(retryNum)) retry = retryNum; - } - }, - - flush(controller) { - if (event) { - controller.enqueue({ - id: lastEventId || undefined, - event, - data: data.length ? decodeArraysToJson(decoder, data) : null, - }); - } - }, - }); -} - -function joinArrays(data: ArrayLike[]) { - const totalLength = data.reduce((acc, curr) => acc + curr.length, 0); - let merged = new Uint8Array(totalLength); - let offset = 0; - for (const c of data) { - merged.set(c, offset); - offset += c.length; - } - return merged; -} - -function decodeArraysToJson(decoder: TextDecoder, data: ArrayLike[]) { - return JSON.parse(decoder.decode(joinArrays(data))); -} diff --git a/libs/sdk-js/src/utils/stream.ts b/libs/sdk-js/src/utils/stream.ts deleted file mode 100644 index 510204992..000000000 --- a/libs/sdk-js/src/utils/stream.ts +++ /dev/null @@ -1,115 +0,0 @@ -// in this case don't quite match. -type IterableReadableStreamInterface = ReadableStream & AsyncIterable; - -/* - * Support async iterator syntax for ReadableStreams in all environments. - * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490 - */ -export class IterableReadableStream - extends ReadableStream - implements IterableReadableStreamInterface -{ - public reader: ReadableStreamDefaultReader; - - ensureReader() { - if (!this.reader) { - this.reader = this.getReader(); - } - } - - async next(): Promise> { - this.ensureReader(); - try { - const result = await this.reader.read(); - if (result.done) { - this.reader.releaseLock(); // release lock when stream becomes closed - return { - done: true, - value: undefined, - }; - } else { - return { - done: false, - value: result.value, - }; - } - } catch (e) { - this.reader.releaseLock(); // release lock when stream becomes errored - throw e; - } - } - - async return(): Promise> { - this.ensureReader(); - // If wrapped in a Node stream, cancel is already called. - if (this.locked) { - const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet - this.reader.releaseLock(); // release lock first - await cancelPromise; // now await it - } - return { done: true, value: undefined }; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - async throw(e: any): Promise> { - this.ensureReader(); - if (this.locked) { - const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet - this.reader.releaseLock(); // release lock first - await cancelPromise; // now await it - } - throw e; - } - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore Not present in Node 18 types, required in latest Node 22 - async [Symbol.asyncDispose]() { - await this.return(); - } - - [Symbol.asyncIterator]() { - return this; - } - - static fromReadableStream(stream: ReadableStream) { - // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream - const reader = stream.getReader(); - return new IterableReadableStream({ - start(controller) { - return pump(); - function pump(): Promise { - return reader.read().then(({ done, value }) => { - // When no more data needs to be consumed, close the stream - if (done) { - controller.close(); - return; - } - // Enqueue the next data chunk into our target stream - controller.enqueue(value); - return pump(); - }); - } - }, - cancel() { - reader.releaseLock(); - }, - }); - } - - static fromAsyncGenerator(generator: AsyncGenerator) { - return new IterableReadableStream({ - async pull(controller) { - const { value, done } = await generator.next(); - // When no more data needs to be consumed, close the stream - if (done) { - controller.close(); - } - // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled - controller.enqueue(value); - }, - async cancel(reason) { - await generator.return(reason); - }, - }); - } -} diff --git a/libs/sdk-js/tsconfig.cjs.json b/libs/sdk-js/tsconfig.cjs.json deleted file mode 100644 index 6f1705b8b..000000000 --- a/libs/sdk-js/tsconfig.cjs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "CommonJS", - "moduleResolution": "Node", - "declaration": false - }, - "exclude": ["node_modules", "dist", "**/tests"] -} diff --git a/libs/sdk-js/tsconfig.json b/libs/sdk-js/tsconfig.json deleted file mode 100644 index d5c1626ab..000000000 --- a/libs/sdk-js/tsconfig.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": "@tsconfig/recommended", - "compilerOptions": { - "target": "ES2021", - "lib": ["ES2021", "ES2022.Object", "ES2022.Error", "DOM"], - "module": "NodeNext", - "moduleResolution": "nodenext", - "esModuleInterop": true, - "declaration": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "useDefineForClassFields": true, - "strictPropertyInitialization": false, - "allowJs": true, - "strict": true, - "jsx": "react-jsx", - "outDir": "dist" - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "coverage"], - "includeVersion": true, - "typedocOptions": { - "entryPoints": ["src/client.ts"], - "readme": "none", - "out": "docs", - "plugin": ["typedoc-plugin-markdown"], - "excludePrivate": true, - "excludeProtected": true, - "excludeExternals": false - } -} diff --git a/libs/sdk-js/typedoc.auth.json b/libs/sdk-js/typedoc.auth.json deleted file mode 100644 index 1cb718f4a..000000000 --- a/libs/sdk-js/typedoc.auth.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "pageTitleTemplates": { - "index": "{projectName}/auth" - } -} diff --git a/libs/sdk-js/typedoc.react.json b/libs/sdk-js/typedoc.react.json deleted file mode 100644 index 6359dac1b..000000000 --- a/libs/sdk-js/typedoc.react.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "pageTitleTemplates": { - "index": "{projectName}/react" - } -} diff --git a/libs/sdk-js/vitest.config.ts b/libs/sdk-js/vitest.config.ts deleted file mode 100644 index 01f2a7fac..000000000 --- a/libs/sdk-js/vitest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import react from "@vitejs/plugin-react"; -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - plugins: [react()], - test: { - environment: "jsdom", - globals: true, - include: ["src/**/*.test.ts", "src/**/*.test.tsx"], - }, -}); diff --git a/libs/sdk-js/yarn.lock b/libs/sdk-js/yarn.lock deleted file mode 100644 index 0e4e00cc2..000000000 --- a/libs/sdk-js/yarn.lock +++ /dev/null @@ -1,5259 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adobe/css-tools@^4.4.0": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.2.tgz#c836b1bd81e6d62cd6cdf3ee4948bcdce8ea79c8" - integrity sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A== - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - -"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@asamuzakjp/css-color@^3.1.2": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-3.1.7.tgz#01fb8475bc8dc999ddc4b270ab2e31f82780d17f" - integrity sha512-Ok5fYhtwdyJQmU1PpEv6Si7Y+A4cYb8yNM9oiIJC9TzXPMuN9fvdonKJqcnz9TbFqV6bQ8z0giRq0iaOpGZV2g== - dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - lru-cache "^10.4.3" - -"@babel/code-frame@^7.0.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/compat-data@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" - integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== - -"@babel/core@^7.26.10": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6" - integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.1" - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helpers" "^7.27.1" - "@babel/parser" "^7.27.1" - "@babel/template" "^7.27.1" - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" - integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== - dependencies: - "@babel/parser" "^7.27.1" - "@babel/types" "^7.27.1" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/helper-compilation-targets@^7.27.1": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== - dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-validator-option" "^7.27.1" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-transforms@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" - integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-plugin-utils@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== - -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helpers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4" - integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ== - dependencies: - "@babel/template" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127" - integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/plugin-transform-react-jsx-self@^7.25.9": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz#af678d8506acf52c577cac73ff7fe6615c85fc92" - integrity sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-react-jsx-source@^7.25.9": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz#dcfe2c24094bb757bf73960374e7c55e434f19f0" - integrity sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/runtime@^7.12.5": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.1.tgz#9fce313d12c9a77507f264de74626e87fd0dc541" - integrity sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog== - -"@babel/template@^7.27.1": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" - integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.1" - "@babel/parser" "^7.27.1" - "@babel/template" "^7.27.1" - "@babel/types" "^7.27.1" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" - integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - -"@bundled-es-modules/cookie@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz#b41376af6a06b3e32a15241d927b840a9b4de507" - integrity sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw== - dependencies: - cookie "^0.7.2" - -"@bundled-es-modules/statuses@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz#761d10f44e51a94902c4da48675b71a76cc98872" - integrity sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg== - dependencies: - statuses "^2.0.1" - -"@bundled-es-modules/tough-cookie@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz#fa9cd3cedfeecd6783e8b0d378b4a99e52bde5d3" - integrity sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw== - dependencies: - "@types/tough-cookie" "^4.0.5" - tough-cookie "^4.1.4" - -"@cfworker/json-schema@^4.0.2": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@cfworker/json-schema/-/json-schema-4.1.1.tgz#4a2a3947ee9fa7b7c24be981422831b8674c3be6" - integrity sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@commander-js/extra-typings@^13.0.0": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@commander-js/extra-typings/-/extra-typings-13.1.0.tgz#026e29b04401c92fc4307223fbaadf1ff3e5551e" - integrity sha512-q5P52BYb1hwVWE6dtID7VvuJWrlfbCv4klj7BjUUOqMz4jbSZD4C9fJ9lRjL2jnBGTg+gDDlaXN51rkWcLk4fg== - -"@csstools/color-helpers@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.2.tgz#82592c9a7c2b83c293d9161894e2a6471feb97b8" - integrity sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA== - -"@csstools/css-calc@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.3.tgz#6f68affcb569a86b91965e8622d644be35a08423" - integrity sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw== - -"@csstools/css-color-parser@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.0.9.tgz#8d81b77d6f211495b5100ec4cad4c8828de49f6b" - integrity sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw== - dependencies: - "@csstools/color-helpers" "^5.0.2" - "@csstools/css-calc" "^2.1.3" - -"@csstools/css-parser-algorithms@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz#74426e93bd1c4dcab3e441f5cc7ba4fb35d94356" - integrity sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A== - -"@csstools/css-tokenizer@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz#a5502c8539265fecbd873c1e395a890339f119c2" - integrity sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw== - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@emnapi/core@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" - integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== - dependencies: - "@emnapi/wasi-threads" "1.0.2" - tslib "^2.4.0" - -"@emnapi/runtime@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" - integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.0.2", "@emnapi/wasi-threads@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" - integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== - dependencies: - tslib "^2.4.0" - -"@esbuild/aix-ppc64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz#830d6476cbbca0c005136af07303646b419f1162" - integrity sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q== - -"@esbuild/aix-ppc64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#4e0f91776c2b340e75558f60552195f6fad09f18" - integrity sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA== - -"@esbuild/android-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz#d11d4fc299224e729e2190cacadbcc00e7a9fd67" - integrity sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A== - -"@esbuild/android-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#bc766407f1718923f6b8079c8c61bf86ac3a6a4f" - integrity sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg== - -"@esbuild/android-arm@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.4.tgz#5660bd25080553dd2a28438f2a401a29959bd9b1" - integrity sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ== - -"@esbuild/android-arm@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz#4290d6d3407bae3883ad2cded1081a234473ce26" - integrity sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA== - -"@esbuild/android-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.4.tgz#18ddde705bf984e8cd9efec54e199ac18bc7bee1" - integrity sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ== - -"@esbuild/android-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz#40c11d9cbca4f2406548c8a9895d321bc3b35eff" - integrity sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw== - -"@esbuild/darwin-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz#b0b7fb55db8fc6f5de5a0207ae986eb9c4766e67" - integrity sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g== - -"@esbuild/darwin-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#49d8bf8b1df95f759ac81eb1d0736018006d7e34" - integrity sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ== - -"@esbuild/darwin-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz#e6813fdeba0bba356cb350a4b80543fbe66bf26f" - integrity sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A== - -"@esbuild/darwin-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#e27a5d92a14886ef1d492fd50fc61a2d4d87e418" - integrity sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ== - -"@esbuild/freebsd-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz#dc11a73d3ccdc308567b908b43c6698e850759be" - integrity sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ== - -"@esbuild/freebsd-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#97cede59d638840ca104e605cdb9f1b118ba0b1c" - integrity sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw== - -"@esbuild/freebsd-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz#91da08db8bd1bff5f31924c57a81dab26e93a143" - integrity sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ== - -"@esbuild/freebsd-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#71c77812042a1a8190c3d581e140d15b876b9c6f" - integrity sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw== - -"@esbuild/linux-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz#efc15e45c945a082708f9a9f73bfa8d4db49728a" - integrity sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ== - -"@esbuild/linux-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#f7b7c8f97eff8ffd2e47f6c67eb5c9765f2181b8" - integrity sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg== - -"@esbuild/linux-arm@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz#9b93c3e54ac49a2ede6f906e705d5d906f6db9e8" - integrity sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ== - -"@esbuild/linux-arm@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#2a0be71b6cd8201fa559aea45598dffabc05d911" - integrity sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw== - -"@esbuild/linux-ia32@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz#be8ef2c3e1d99fca2d25c416b297d00360623596" - integrity sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ== - -"@esbuild/linux-ia32@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#763414463cd9ea6fa1f96555d2762f9f84c61783" - integrity sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA== - -"@esbuild/linux-loong64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz#b0840a2707c3fc02eec288d3f9defa3827cd7a87" - integrity sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA== - -"@esbuild/linux-loong64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#428cf2213ff786a502a52c96cf29d1fcf1eb8506" - integrity sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg== - -"@esbuild/linux-mips64el@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz#2a198e5a458c9f0e75881a4e63d26ba0cf9df39f" - integrity sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg== - -"@esbuild/linux-mips64el@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#5cbcc7fd841b4cd53358afd33527cd394e325d96" - integrity sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg== - -"@esbuild/linux-ppc64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz#64f4ae0b923d7dd72fb860b9b22edb42007cf8f5" - integrity sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag== - -"@esbuild/linux-ppc64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#0d954ab39ce4f5e50f00c4f8c4fd38f976c13ad9" - integrity sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ== - -"@esbuild/linux-riscv64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz#fb2844b11fdddd39e29d291c7cf80f99b0d5158d" - integrity sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA== - -"@esbuild/linux-riscv64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#0e7dd30730505abd8088321e8497e94b547bfb1e" - integrity sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA== - -"@esbuild/linux-s390x@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz#1466876e0aa3560c7673e63fdebc8278707bc750" - integrity sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g== - -"@esbuild/linux-s390x@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#5669af81327a398a336d7e40e320b5bbd6e6e72d" - integrity sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ== - -"@esbuild/linux-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz#c10fde899455db7cba5f11b3bccfa0e41bf4d0cd" - integrity sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA== - -"@esbuild/linux-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#b2357dd153aa49038967ddc1ffd90c68a9d2a0d4" - integrity sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw== - -"@esbuild/netbsd-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz#02e483fbcbe3f18f0b02612a941b77be76c111a4" - integrity sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ== - -"@esbuild/netbsd-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#53b4dfb8fe1cee93777c9e366893bd3daa6ba63d" - integrity sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw== - -"@esbuild/netbsd-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz#ec401fb0b1ed0ac01d978564c5fc8634ed1dc2ed" - integrity sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw== - -"@esbuild/netbsd-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#a0206f6314ce7dc8713b7732703d0f58de1d1e79" - integrity sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ== - -"@esbuild/openbsd-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz#f272c2f41cfea1d91b93d487a51b5c5ca7a8c8c4" - integrity sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A== - -"@esbuild/openbsd-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#2a796c87c44e8de78001d808c77d948a21ec22fd" - integrity sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw== - -"@esbuild/openbsd-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz#2e25950bc10fa9db1e5c868e3d50c44f7c150fd7" - integrity sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw== - -"@esbuild/openbsd-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#28d0cd8909b7fa3953af998f2b2ed34f576728f0" - integrity sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg== - -"@esbuild/sunos-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz#cd596fa65a67b3b7adc5ecd52d9f5733832e1abd" - integrity sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q== - -"@esbuild/sunos-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#a28164f5b997e8247d407e36c90d3fd5ddbe0dc5" - integrity sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA== - -"@esbuild/win32-arm64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz#b4dbcb57b21eeaf8331e424c3999b89d8951dc88" - integrity sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ== - -"@esbuild/win32-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#6eadbead38e8bd12f633a5190e45eff80e24007e" - integrity sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw== - -"@esbuild/win32-ia32@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz#410842e5d66d4ece1757634e297a87635eb82f7a" - integrity sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg== - -"@esbuild/win32-ia32@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#bab6288005482f9ed2adb9ded7e88eba9a62cc0d" - integrity sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ== - -"@esbuild/win32-x64@0.25.4": - version "0.25.4" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz#0b17ec8a70b2385827d52314c1253160a0b9bacc" - integrity sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ== - -"@esbuild/win32-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz#7fc114af5f6563f19f73324b5d5ff36ece0803d1" - integrity sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g== - -"@gerrit0/mini-shiki@^1.24.0": - version "1.27.2" - resolved "https://registry.yarnpkg.com/@gerrit0/mini-shiki/-/mini-shiki-1.27.2.tgz#cf2a9fcb08a6581c78fc94821f0c854ec4b9f899" - integrity sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og== - dependencies: - "@shikijs/engine-oniguruma" "^1.27.2" - "@shikijs/types" "^1.27.2" - "@shikijs/vscode-textmate" "^10.0.1" - -"@hono/node-server@^1.12.0": - version "1.14.4" - resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-1.14.4.tgz#e6c27a8b40ae8fa8e49b58bc4b7554accfb2d298" - integrity sha512-DnxpshhYewr2q9ZN8ez/M5mmc3sucr8CT1sIgIy1bkeUXut9XWDkqHoFHRhWIQgkYnKpVRxunyhK7WzpJeJ6qQ== - -"@hono/zod-validator@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@hono/zod-validator/-/zod-validator-0.2.2.tgz#929a1c40aee5eac1ed9c84094d6d977e0b70187a" - integrity sha512-dSDxaPV70Py8wuIU2QNpoVEIOSzSXZ/6/B/h4xA7eOMz7+AarKTSGV8E6QwrdcCbBLkpqfJ4Q2TmBO0eP1tCBQ== - -"@inquirer/confirm@^5.0.0": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.10.tgz#de3732cb7ae9333bd3e354afee6a6ef8cf28d951" - integrity sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g== - dependencies: - "@inquirer/core" "^10.1.11" - "@inquirer/type" "^3.0.6" - -"@inquirer/core@^10.1.11": - version "10.1.11" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.11.tgz#4022032b5b6b35970e1c3fcfc522bc250ef8810d" - integrity sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw== - dependencies: - "@inquirer/figures" "^1.0.11" - "@inquirer/type" "^3.0.6" - ansi-escapes "^4.3.2" - cli-width "^4.1.0" - mute-stream "^2.0.0" - signal-exit "^4.1.0" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/figures@^1.0.11": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.11.tgz#4744e6db95288fea1dead779554859710a959a21" - integrity sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw== - -"@inquirer/type@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.6.tgz#2500e435fc2014c5250eec3279f42b70b64089bd" - integrity sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@isaacs/fs-minipass@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" - integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== - dependencies: - minipass "^7.0.4" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@langchain/core@^0.3.61": - version "0.3.61" - resolved "https://registry.yarnpkg.com/@langchain/core/-/core-0.3.61.tgz#73e0f7971e99bd45985d2ba58229e41b93b6149d" - integrity sha512-4O7fw5SXNSE+uBnathLQrhm3t+7dZGagt/5kt37A+pXw0AkudxEBvveg73sSnpBd9SIz3/Vc7F4k8rCKXGbEDA== - dependencies: - "@cfworker/json-schema" "^4.0.2" - ansi-styles "^5.0.0" - camelcase "6" - decamelize "1.2.0" - js-tiktoken "^1.0.12" - langsmith "^0.3.33" - mustache "^4.2.0" - p-queue "^6.6.2" - p-retry "4" - uuid "^10.0.0" - zod "^3.25.32" - zod-to-json-schema "^3.22.3" - -"@langchain/langgraph-api@~0.0.41": - version "0.0.41" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-api/-/langgraph-api-0.0.41.tgz#a8219651dfd097225e66129ce367ef8e0ae23d45" - integrity sha512-LxiVspoVRB5AYBoC04XmigFTjYtEut3Unf9dlwuMgdRMxfyiN/oI3Wuun9Q/Tfn7jYt3E8FVtUqCLgT1QUG3Rw== - dependencies: - "@babel/code-frame" "^7.26.2" - "@hono/node-server" "^1.12.0" - "@hono/zod-validator" "^0.2.2" - "@langchain/langgraph-ui" "0.0.41" - "@types/json-schema" "^7.0.15" - "@typescript/vfs" "^1.6.0" - dedent "^1.5.3" - dotenv "^16.4.7" - exit-hook "^4.0.0" - hono "^4.5.4" - langsmith "^0.3.33" - open "^10.1.0" - semver "^7.7.1" - stacktrace-parser "^0.1.10" - superjson "^2.2.2" - tsx "^4.19.3" - uuid "^10.0.0" - winston "^3.17.0" - winston-console-format "^1.0.8" - zod "^3.23.8" - -"@langchain/langgraph-checkpoint@~0.0.18": - version "0.0.18" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.18.tgz#2f7a9cdeda948ccc8d312ba9463810709d71d0b8" - integrity sha512-IS7zJj36VgY+4pf8ZjsVuUWef7oTwt1y9ylvwu0aLuOn1d0fg05Om9DLm3v2GZ2Df6bhLV1kfWAM0IAl9O5rQQ== - dependencies: - uuid "^10.0.0" - -"@langchain/langgraph-sdk@~0.0.32": - version "0.0.84" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.84.tgz#91f1bb431838c0f945326755681dcf3465ca4962" - integrity sha512-l0PFQyJ+6m6aclORNPPWlcRwgKcXVXsPaJCbCUYFABR3yf4cOpsjhUNR0cJ7+2cS400oieHjGRdGGyO/hbSjhg== - dependencies: - "@types/json-schema" "^7.0.15" - p-queue "^6.6.2" - p-retry "4" - uuid "^9.0.0" - -"@langchain/langgraph-ui@0.0.41": - version "0.0.41" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-ui/-/langgraph-ui-0.0.41.tgz#6c581f150274b397031b687b6a569a220532cb85" - integrity sha512-7PSSYCgijNRrDbYDj0VuxzPMgUSh4uAO0Z35p4GuB0CZliztUaZVtSGET0mRscT7+98HeWdt4GnpP1fLZt8bxg== - dependencies: - "@commander-js/extra-typings" "^13.0.0" - commander "^13.0.0" - esbuild "^0.25.0" - esbuild-plugin-tailwindcss "^2.0.1" - zod "^3.23.8" - -"@langchain/langgraph@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-0.3.5.tgz#57e6d2de3b10ce148b4a4288839b9e9d6b4405e0" - integrity sha512-7astlgnp6BdMQJqmr+cbDgR10FYWNCaDLnbfEDHpqhKCCajU59m5snOdl4Vtu5UM6V2k3lgatNqWoflBtxhIyg== - dependencies: - "@langchain/langgraph-checkpoint" "~0.0.18" - "@langchain/langgraph-sdk" "~0.0.32" - uuid "^10.0.0" - zod "^3.25.32" - -"@langchain/scripts@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@langchain/scripts/-/scripts-0.1.4.tgz#8c5d03d627686f20b9522213c12e2b329e73e381" - integrity sha512-O+mv2aqUIm3XWxYBrwFWMeTI3aHWeFR8OYjGFXKc1MGV/3LLao3PciyQvKUg1SL7FemHJ1ltDx74rKuEv8xxPA== - dependencies: - "@octokit/rest" "^21.0.2" - "@rollup/wasm-node" "^4.19.0" - axios "^1.6.7" - commander "^11.1.0" - glob "^10.3.10" - lodash "^4.17.21" - readline "^1.3.0" - rimraf "^5.0.1" - rollup "^4.5.2" - ts-morph "^21.0.1" - typescript "^5.4.5" - -"@mswjs/interceptors@^0.37.0": - version "0.37.6" - resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.37.6.tgz#2635319b7a81934e1ef1b5593ef7910347e2b761" - integrity sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w== - dependencies: - "@open-draft/deferred-promise" "^2.2.0" - "@open-draft/logger" "^0.3.0" - "@open-draft/until" "^2.0.0" - is-node-process "^1.2.0" - outvariant "^1.4.3" - strict-event-emitter "^0.5.1" - -"@napi-rs/wasm-runtime@^0.2.10": - version "0.2.11" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" - integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== - dependencies: - "@emnapi/core" "^1.4.3" - "@emnapi/runtime" "^1.4.3" - "@tybys/wasm-util" "^0.9.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@octokit/auth-token@^5.0.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-5.1.1.tgz#3bbfe905111332a17f72d80bd0b51a3e2fa2cf07" - integrity sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA== - -"@octokit/core@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-6.1.2.tgz#20442d0a97c411612da206411e356014d1d1bd17" - integrity sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg== - dependencies: - "@octokit/auth-token" "^5.0.0" - "@octokit/graphql" "^8.0.0" - "@octokit/request" "^9.0.0" - "@octokit/request-error" "^6.0.1" - "@octokit/types" "^13.0.0" - before-after-hook "^3.0.2" - universal-user-agent "^7.0.0" - -"@octokit/endpoint@^10.0.0": - version "10.1.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-10.1.1.tgz#1a9694e7aef6aa9d854dc78dd062945945869bcc" - integrity sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q== - dependencies: - "@octokit/types" "^13.0.0" - universal-user-agent "^7.0.2" - -"@octokit/graphql@^8.0.0": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-8.1.1.tgz#3cacab5f2e55d91c733e3bf481d3a3f8a5f639c4" - integrity sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg== - dependencies: - "@octokit/request" "^9.0.0" - "@octokit/types" "^13.0.0" - universal-user-agent "^7.0.0" - -"@octokit/openapi-types@^22.2.0": - version "22.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.2.0.tgz#75aa7dcd440821d99def6a60b5f014207ae4968e" - integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== - -"@octokit/plugin-paginate-rest@^11.0.0": - version "11.3.5" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz#a1929b3ba3dc7b63bc73bb6d3c7a3faf2a9c7649" - integrity sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ== - dependencies: - "@octokit/types" "^13.6.0" - -"@octokit/plugin-request-log@^5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz#ccb75d9705de769b2aa82bcd105cc96eb0c00f69" - integrity sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw== - -"@octokit/plugin-rest-endpoint-methods@^13.0.0": - version "13.2.6" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.6.tgz#b9d343dbe88a6cb70cc7fa16faa98f0a29ffe654" - integrity sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw== - dependencies: - "@octokit/types" "^13.6.1" - -"@octokit/request-error@^6.0.1": - version "6.1.5" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-6.1.5.tgz#907099e341c4e6179db623a0328d678024f54653" - integrity sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ== - dependencies: - "@octokit/types" "^13.0.0" - -"@octokit/request@^9.0.0": - version "9.1.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-9.1.3.tgz#42b693bc06238f43af3c037ebfd35621c6457838" - integrity sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA== - dependencies: - "@octokit/endpoint" "^10.0.0" - "@octokit/request-error" "^6.0.1" - "@octokit/types" "^13.1.0" - universal-user-agent "^7.0.2" - -"@octokit/rest@^21.0.2": - version "21.0.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-21.0.2.tgz#9b767dbc1098daea8310fd8b76bf7a97215d5972" - integrity sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ== - dependencies: - "@octokit/core" "^6.1.2" - "@octokit/plugin-paginate-rest" "^11.0.0" - "@octokit/plugin-request-log" "^5.3.1" - "@octokit/plugin-rest-endpoint-methods" "^13.0.0" - -"@octokit/types@^13.0.0", "@octokit/types@^13.1.0", "@octokit/types@^13.6.0", "@octokit/types@^13.6.1": - version "13.6.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.6.1.tgz#432fc6c0aaae54318e5b2d3e15c22ac97fc9b15f" - integrity sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g== - dependencies: - "@octokit/openapi-types" "^22.2.0" - -"@open-draft/deferred-promise@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz#4a822d10f6f0e316be4d67b4d4f8c9a124b073bd" - integrity sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA== - -"@open-draft/logger@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@open-draft/logger/-/logger-0.3.0.tgz#2b3ab1242b360aa0adb28b85f5d7da1c133a0954" - integrity sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ== - dependencies: - is-node-process "^1.2.0" - outvariant "^1.4.0" - -"@open-draft/until@^2.0.0", "@open-draft/until@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" - integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@rollup/rollup-android-arm-eabi@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8" - integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw== - -"@rollup/rollup-android-arm-eabi@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz#c228d00a41f0dbd6fb8b7ea819bbfbf1c1157a10" - integrity sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg== - -"@rollup/rollup-android-arm64@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1" - integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA== - -"@rollup/rollup-android-arm64@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz#e2b38d0c912169fd55d7e38d723aada208d37256" - integrity sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw== - -"@rollup/rollup-darwin-arm64@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce" - integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ== - -"@rollup/rollup-darwin-arm64@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz#1fddb3690f2ae33df16d334c613377f05abe4878" - integrity sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w== - -"@rollup/rollup-darwin-x64@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46" - integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg== - -"@rollup/rollup-darwin-x64@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz#818298d11c8109e1112590165142f14be24b396d" - integrity sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ== - -"@rollup/rollup-freebsd-arm64@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b" - integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw== - -"@rollup/rollup-freebsd-arm64@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz#91a28dc527d5bed7f9ecf0e054297b3012e19618" - integrity sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ== - -"@rollup/rollup-freebsd-x64@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e" - integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g== - -"@rollup/rollup-freebsd-x64@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz#28acadefa76b5c7bede1576e065b51d335c62c62" - integrity sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q== - -"@rollup/rollup-linux-arm-gnueabihf@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9" - integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA== - -"@rollup/rollup-linux-arm-gnueabihf@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz#819691464179cbcd9a9f9d3dc7617954840c6186" - integrity sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q== - -"@rollup/rollup-linux-arm-musleabihf@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42" - integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw== - -"@rollup/rollup-linux-arm-musleabihf@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz#d149207039e4189e267e8724050388effc80d704" - integrity sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg== - -"@rollup/rollup-linux-arm64-gnu@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102" - integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg== - -"@rollup/rollup-linux-arm64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz#fa72ebddb729c3c6d88973242f1a2153c83e86ec" - integrity sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg== - -"@rollup/rollup-linux-arm64-musl@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907" - integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA== - -"@rollup/rollup-linux-arm64-musl@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz#2054216e34469ab8765588ebf343d531fc3c9228" - integrity sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg== - -"@rollup/rollup-linux-loongarch64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz#818de242291841afbfc483a84f11e9c7a11959bc" - integrity sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75" - integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA== - -"@rollup/rollup-linux-powerpc64le-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz#0bb4cb8fc4a2c635f68c1208c924b2145eb647cb" - integrity sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q== - -"@rollup/rollup-linux-riscv64-gnu@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988" - integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw== - -"@rollup/rollup-linux-riscv64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz#4b3b8e541b7b13e447ae07774217d98c06f6926d" - integrity sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg== - -"@rollup/rollup-linux-riscv64-musl@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz#e065405e67d8bd64a7d0126c931bd9f03910817f" - integrity sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg== - -"@rollup/rollup-linux-s390x-gnu@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82" - integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ== - -"@rollup/rollup-linux-s390x-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz#dda3265bbbfe16a5d0089168fd07f5ebb2a866fe" - integrity sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ== - -"@rollup/rollup-linux-x64-gnu@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz#e473de5e4acb95fcf930a35cbb7d3e8080e57a6f" - integrity sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA== - -"@rollup/rollup-linux-x64-gnu@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz#90993269b8b995b4067b7b9d72ff1c360ef90a17" - integrity sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng== - -"@rollup/rollup-linux-x64-musl@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz#0af12dd2578c29af4037f0c834b4321429dd5b01" - integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q== - -"@rollup/rollup-linux-x64-musl@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz#fdf5b09fd121eb8d977ebb0fda142c7c0167b8de" - integrity sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA== - -"@rollup/rollup-win32-arm64-msvc@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871" - integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA== - -"@rollup/rollup-win32-arm64-msvc@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz#6397e1e012db64dfecfed0774cb9fcf89503d716" - integrity sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg== - -"@rollup/rollup-win32-ia32-msvc@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c" - integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg== - -"@rollup/rollup-win32-ia32-msvc@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz#df0991464a52a35506103fe18d29913bf8798a0c" - integrity sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA== - -"@rollup/rollup-win32-x64-msvc@4.24.4": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454" - integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg== - -"@rollup/rollup-win32-x64-msvc@4.40.2": - version "4.40.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz#8dae04d01a2cbd84d6297d99356674c6b993f0fc" - integrity sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA== - -"@rollup/wasm-node@^4.19.0": - version "4.24.4" - resolved "https://registry.yarnpkg.com/@rollup/wasm-node/-/wasm-node-4.24.4.tgz#11d78f5cc85b04e81468f245c2dc0885d06d663d" - integrity sha512-WKJUdPcM8YAYujafY95+2EapqU3F/nwfBkXh9AfkBvWBwFhsvNJABA86Br6graRH2vRE4FBsiqjFvFWOtEO6wg== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - fsevents "~2.3.2" - -"@shikijs/engine-oniguruma@^1.27.2": - version "1.29.2" - resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz#d879717ced61d44e78feab16f701f6edd75434f1" - integrity sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA== - dependencies: - "@shikijs/types" "1.29.2" - "@shikijs/vscode-textmate" "^10.0.1" - -"@shikijs/types@1.29.2", "@shikijs/types@^1.27.2": - version "1.29.2" - resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.29.2.tgz#a93fdb410d1af8360c67bf5fc1d1a68d58e21c4f" - integrity sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw== - dependencies: - "@shikijs/vscode-textmate" "^10.0.1" - "@types/hast" "^3.0.4" - -"@shikijs/vscode-textmate@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz#d06d45b67ac5e9b0088e3f67ebd3f25c6c3d711a" - integrity sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg== - -"@tailwindcss/node@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.10.tgz#7a53a224cdd79a926ed990bbf97c74de9dadf595" - integrity sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ== - dependencies: - "@ampproject/remapping" "^2.3.0" - enhanced-resolve "^5.18.1" - jiti "^2.4.2" - lightningcss "1.30.1" - magic-string "^0.30.17" - source-map-js "^1.2.1" - tailwindcss "4.1.10" - -"@tailwindcss/oxide-android-arm64@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.10.tgz#ad0f3cbfa219e1ee5fc8ad7170885feda397c4e3" - integrity sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ== - -"@tailwindcss/oxide-darwin-arm64@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.10.tgz#d8d744f93310b45ce16420a9addd1c4329848929" - integrity sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ== - -"@tailwindcss/oxide-darwin-x64@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.10.tgz#476490d1f95592a09801a53b48466e5065d7553f" - integrity sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ== - -"@tailwindcss/oxide-freebsd-x64@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.10.tgz#7b7ccb813592209216ed39187eb8510ce6b4fc9d" - integrity sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g== - -"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.10.tgz#9f223c7994da846b9f3c70ac0b5713371c9b3b32" - integrity sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ== - -"@tailwindcss/oxide-linux-arm64-gnu@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.10.tgz#58412e6a359a83144b30b415f637a52c8207f311" - integrity sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA== - -"@tailwindcss/oxide-linux-arm64-musl@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.10.tgz#3ed868b801a27e8cd35a615855bc94fd2786a6e8" - integrity sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ== - -"@tailwindcss/oxide-linux-x64-gnu@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.10.tgz#aca15cc4cf9dcd687eda0f5cd2bc1f4bfb485562" - integrity sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA== - -"@tailwindcss/oxide-linux-x64-musl@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.10.tgz#0c77d1e94e499a9f85c80013e6052dd98d3cfee4" - integrity sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA== - -"@tailwindcss/oxide-wasm32-wasi@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.10.tgz#6e749424db4f6e076371a66da7c4daf1fcd4f9df" - integrity sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q== - dependencies: - "@emnapi/core" "^1.4.3" - "@emnapi/runtime" "^1.4.3" - "@emnapi/wasi-threads" "^1.0.2" - "@napi-rs/wasm-runtime" "^0.2.10" - "@tybys/wasm-util" "^0.9.0" - tslib "^2.8.0" - -"@tailwindcss/oxide-win32-arm64-msvc@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.10.tgz#e1663b5a95425f0f458f616399ed9f6707d4a786" - integrity sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA== - -"@tailwindcss/oxide-win32-x64-msvc@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.10.tgz#de3d4e8b38c31caf2522ad0c6f0efdeb5034fc95" - integrity sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA== - -"@tailwindcss/oxide@4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.10.tgz#b8ad6ae678b54bb533c2074092aadebac0a6d8fe" - integrity sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q== - dependencies: - detect-libc "^2.0.4" - tar "^7.4.3" - optionalDependencies: - "@tailwindcss/oxide-android-arm64" "4.1.10" - "@tailwindcss/oxide-darwin-arm64" "4.1.10" - "@tailwindcss/oxide-darwin-x64" "4.1.10" - "@tailwindcss/oxide-freebsd-x64" "4.1.10" - "@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.10" - "@tailwindcss/oxide-linux-arm64-gnu" "4.1.10" - "@tailwindcss/oxide-linux-arm64-musl" "4.1.10" - "@tailwindcss/oxide-linux-x64-gnu" "4.1.10" - "@tailwindcss/oxide-linux-x64-musl" "4.1.10" - "@tailwindcss/oxide-wasm32-wasi" "4.1.10" - "@tailwindcss/oxide-win32-arm64-msvc" "4.1.10" - "@tailwindcss/oxide-win32-x64-msvc" "4.1.10" - -"@tailwindcss/postcss@^4.0.5": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.1.10.tgz#28e4edd9266a07e3fbfbdbf802563054c408d56b" - integrity sha512-B+7r7ABZbkXJwpvt2VMnS6ujcDoR2OOcFaqrLIo1xbcdxje4Vf+VgJdBzNNbrAjBj/rLZ66/tlQ1knIGNLKOBQ== - dependencies: - "@alloc/quick-lru" "^5.2.0" - "@tailwindcss/node" "4.1.10" - "@tailwindcss/oxide" "4.1.10" - postcss "^8.4.41" - tailwindcss "4.1.10" - -"@testing-library/dom@^10.4.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" - integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.3.0" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - -"@testing-library/jest-dom@^6.6.3": - version "6.6.3" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz#26ba906cf928c0f8172e182c6fe214eb4f9f2bd2" - integrity sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA== - dependencies: - "@adobe/css-tools" "^4.4.0" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.6.3" - lodash "^4.17.21" - redent "^3.0.0" - -"@testing-library/react@^16.3.0": - version "16.3.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.3.0.tgz#3a85bb9bdebf180cd76dba16454e242564d598a6" - integrity sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw== - dependencies: - "@babel/runtime" "^7.12.5" - -"@testing-library/user-event@^14.6.1": - version "14.6.1" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.6.1.tgz#13e09a32d7a8b7060fe38304788ebf4197cd2149" - integrity sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw== - -"@textlint/ast-node-types@^12.6.1": - version "12.6.1" - resolved "https://registry.yarnpkg.com/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz#35ecefe74e701d7f632c083d4fda89cab1b89012" - integrity sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA== - -"@textlint/markdown-to-ast@^12.1.1": - version "12.6.1" - resolved "https://registry.yarnpkg.com/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz#fcccb5733b3e76cd0db78a323763ab101f2d803b" - integrity sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ== - dependencies: - "@textlint/ast-node-types" "^12.6.1" - debug "^4.3.4" - mdast-util-gfm-autolink-literal "^0.1.3" - remark-footnotes "^3.0.0" - remark-frontmatter "^3.0.0" - remark-gfm "^1.0.0" - remark-parse "^9.0.0" - traverse "^0.6.7" - unified "^9.2.2" - -"@ts-morph/common@~0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.22.0.tgz#8951d451622a26472fbc3a227d6c3a90e687a683" - integrity sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw== - dependencies: - fast-glob "^3.3.2" - minimatch "^9.0.3" - mkdirp "^3.0.1" - path-browserify "^1.0.1" - -"@tsconfig/recommended@^1.0.2": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.6.tgz#217b78f9601215939d566a79d202a760ae185114" - integrity sha512-0IKu9GHYF1NGTJiYgfWwqnOQSlnE9V9R7YohHNNf0/fj/SyOZWzdd06JFr0fLpg1Mqw0kGbYg8w5xdkSqLKM9g== - -"@tybys/wasm-util@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" - integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== - dependencies: - tslib "^2.4.0" - -"@types/aria-query@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" - integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - -"@types/babel__core@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" - integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2" - integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== - dependencies: - "@babel/types" "^7.20.7" - -"@types/cookie@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" - integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== - -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/estree@1.0.7", "@types/estree@^1.0.0": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" - integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== - -"@types/hast@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/json-schema@^7.0.15": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/mdast@^3.0.0": - version "3.0.15" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" - integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== - dependencies: - "@types/unist" "^2" - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - -"@types/node@^20.12.12": - version "20.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" - integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== - dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/react-dom@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.0.3.tgz#0804dfd279a165d5a0ad8b53a5b9e65f338050a4" - integrity sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA== - -"@types/react@^19.0.8": - version "19.0.9" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.9.tgz#675255eb7d978bdaf71f9d08f6b740d41b0b7f32" - integrity sha512-FedNTYgmMwSZmD1Sru/W1gJKuiYCN/3SuBkmZkcxX+FpO5zL76B22A9YNfAKg4HQO3Neh/30AiynP6BELdU0qQ== - dependencies: - csstype "^3.0.2" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/statuses@^2.0.4": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/statuses/-/statuses-2.0.5.tgz#f61ab46d5352fd73c863a1ea4e1cef3b0b51ae63" - integrity sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A== - -"@types/tough-cookie@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/unist@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== - -"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== - -"@types/uuid@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" - integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== - -"@types/uuid@^9.0.1": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" - integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== - -"@typescript/vfs@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@typescript/vfs/-/vfs-1.6.1.tgz#fe7087d5a43715754f7ea9bf6e0b905176c9eebd" - integrity sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA== - dependencies: - debug "^4.1.1" - -"@vitejs/plugin-react@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz#d7d1e9c9616d7536b0953637edfee7c6cbe2fe0f" - integrity sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w== - dependencies: - "@babel/core" "^7.26.10" - "@babel/plugin-transform-react-jsx-self" "^7.25.9" - "@babel/plugin-transform-react-jsx-source" "^7.25.9" - "@types/babel__core" "^7.20.5" - react-refresh "^0.17.0" - -"@vitest/expect@3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.1.3.tgz#bbca175cd2f23d7de9448a215baed8f3d7abd7b7" - integrity sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg== - dependencies: - "@vitest/spy" "3.1.3" - "@vitest/utils" "3.1.3" - chai "^5.2.0" - tinyrainbow "^2.0.0" - -"@vitest/mocker@3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.1.3.tgz#121d0f2fcca20c9ccada9e2d6e761f7fc687f4ce" - integrity sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ== - dependencies: - "@vitest/spy" "3.1.3" - estree-walker "^3.0.3" - magic-string "^0.30.17" - -"@vitest/pretty-format@3.1.3", "@vitest/pretty-format@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.1.3.tgz#760b9eab5f253d7d2e7dcd28ef34570f584023d4" - integrity sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA== - dependencies: - tinyrainbow "^2.0.0" - -"@vitest/runner@3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.1.3.tgz#b268fa90fca38fab363f1107f057c0a2a141ee45" - integrity sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA== - dependencies: - "@vitest/utils" "3.1.3" - pathe "^2.0.3" - -"@vitest/snapshot@3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-3.1.3.tgz#39a8f9f8c6ba732ffde59adeacf0a549bef11e76" - integrity sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ== - dependencies: - "@vitest/pretty-format" "3.1.3" - magic-string "^0.30.17" - pathe "^2.0.3" - -"@vitest/spy@3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.1.3.tgz#ca81e2b4f0c3d6c75f35defa77c3336f39c8f605" - integrity sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ== - dependencies: - tinyspy "^3.0.2" - -"@vitest/utils@3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.1.3.tgz#4f31bdfd646cd82d30bfa730d7410cb59d529669" - integrity sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg== - dependencies: - "@vitest/pretty-format" "3.1.3" - loupe "^3.1.3" - tinyrainbow "^2.0.0" - -agent-base@^7.1.0, agent-base@^7.1.2: - version "7.1.3" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" - integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== - -anchor-markdown-header@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz#908f2031281766f44ac350380ca0de77ab7065b8" - integrity sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA== - dependencies: - emoji-regex "~10.1.0" - -ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -aria-query@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" - integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== - -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - -async@^3.2.3: - version "3.2.6" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -autoprefixer@^10.4.20: - version "10.4.21" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" - integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== - dependencies: - browserslist "^4.24.4" - caniuse-lite "^1.0.30001702" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.1.1" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -axios@^1.6.7: - version "1.8.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.2.tgz#fabe06e241dfe83071d4edfbcaa7b1c3a40f7979" - integrity sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -before-after-hook@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-3.0.2.tgz#d5665a5fa8b62294a5aa0a499f933f4a1016195d" - integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A== - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.24.0: - version "4.24.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" - integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== - dependencies: - caniuse-lite "^1.0.30001716" - electron-to-chromium "^1.5.149" - node-releases "^2.0.19" - update-browserslist-db "^1.1.3" - -browserslist@^4.24.4: - version "4.25.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c" - integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA== - dependencies: - caniuse-lite "^1.0.30001718" - electron-to-chromium "^1.5.160" - node-releases "^2.0.19" - update-browserslist-db "^1.1.3" - -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@6: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001718: - version "1.0.30001724" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz#312e163553dd70d2c0fb603d74810c85d8ed94a0" - integrity sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA== - -caniuse-lite@^1.0.30001716: - version "1.0.30001718" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz#dae13a9c80d517c30c6197515a96131c194d8f82" - integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== - -ccount@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" - integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== - -chai@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.2.0.tgz#1358ee106763624114addf84ab02697e411c9c05" - integrity sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw== - dependencies: - assertion-error "^2.0.1" - check-error "^2.1.1" - deep-eql "^5.0.1" - loupe "^3.1.0" - pathval "^2.0.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -check-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" - integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== - -chownr@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" - integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== - -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -code-block-writer@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-12.0.0.tgz#4dd58946eb4234105aff7f0035977b2afdc2a770" - integrity sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colors@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" - integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== - -commander@^13.0.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" - integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== - -concat-md@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/concat-md/-/concat-md-0.5.1.tgz#03c72343a5d81306aa5ae1040d6368ffbc444781" - integrity sha512-iZr6yxlwPQ5IZup2mvqgm+JI0jnu5yGkND2ra5DinBtcevDQPQiAGpf4RXOnor1UpKBUydqegDLfPY8b+FfI+Q== - dependencies: - doctoc "^2.2.1" - front-matter "^4.0.2" - globby "^11.1.0" - lodash.startcase "^4.4.0" - meow "^9.0.0" - transform-markdown-links "^2.0.0" - -console-table-printer@^2.12.1: - version "2.12.1" - resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.12.1.tgz#4a9646537a246a6d8de57075d4fae1e08abae267" - integrity sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ== - dependencies: - simple-wcswidth "^1.0.1" - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - -copy-anything@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" - integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w== - dependencies: - is-what "^4.1.8" - -cross-spawn@^7.0.0: - version "7.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" - integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssstyle@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.3.1.tgz#68a3c9f5a70aa97d5a6ebecc9805e511fc022eb8" - integrity sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q== - dependencies: - "@asamuzakjp/css-color" "^3.1.2" - rrweb-cssom "^0.8.0" - -csstype@^3.0.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -data-urls@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" - integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== - dependencies: - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - -debug@^4.0.0, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@1.2.0, decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.5.0: - version "10.5.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" - integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== - -dedent@^1.5.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" - integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== - -deep-eql@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" - integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== - -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - -default-browser@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" - integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -detect-libc@^2.0.3, detect-libc@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" - integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctoc@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/doctoc/-/doctoc-2.2.1.tgz#83f6a6bf4df97defbe027c9a82d13091a138ffe2" - integrity sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ== - dependencies: - "@textlint/markdown-to-ast" "^12.1.1" - anchor-markdown-header "^0.6.0" - htmlparser2 "^7.2.0" - minimist "^1.2.6" - underscore "^1.13.2" - update-section "^0.3.3" - -dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -dom-accessibility-api@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" - integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.2.0, domhandler@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dotenv@^16.4.7: - version "16.5.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" - integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -electron-to-chromium@^1.5.149: - version "1.5.155" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz#809dd0ae9ae1db87c358e0c0c17c09a2ffc432d1" - integrity sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng== - -electron-to-chromium@^1.5.160: - version "1.5.172" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.172.tgz#fe1d99028d8d6321668d0f1fed61d99ac896259c" - integrity sha512-fnKW9dGgmBfsebbYognQSv0CGGLFH1a5iV9EDYTBwmAQn+whbzHbLFlC+3XbHc8xaNtpO0etm8LOcRXs1qMRkQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emoji-regex@~10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.1.0.tgz#d50e383743c0f7a5945c47087295afc112e3cf66" - integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -enhanced-resolve@^5.18.1: - version "5.18.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" - integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -entities@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.0.tgz#09c9e29cb79b0a6459a9b9db9efb418ac5bb8e51" - integrity sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" - integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild-plugin-tailwindcss@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esbuild-plugin-tailwindcss/-/esbuild-plugin-tailwindcss-2.0.1.tgz#74ca9c8bcd183e9596db077423d7566c2ce5ba62" - integrity sha512-62CPYzyfcRE7OowGmWGKs9sz43QhCa/dZ5h6ruZhDg65B5Zsn++4EA4NKIwEMbAio9JV8+FJZNXzejNX/RjSkg== - dependencies: - "@tailwindcss/postcss" "^4.0.5" - autoprefixer "^10.4.20" - postcss "^8.5.1" - postcss-modules "^6.0.1" - -esbuild@^0.25.0: - version "0.25.4" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.4.tgz#bb9a16334d4ef2c33c7301a924b8b863351a0854" - integrity sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.4" - "@esbuild/android-arm" "0.25.4" - "@esbuild/android-arm64" "0.25.4" - "@esbuild/android-x64" "0.25.4" - "@esbuild/darwin-arm64" "0.25.4" - "@esbuild/darwin-x64" "0.25.4" - "@esbuild/freebsd-arm64" "0.25.4" - "@esbuild/freebsd-x64" "0.25.4" - "@esbuild/linux-arm" "0.25.4" - "@esbuild/linux-arm64" "0.25.4" - "@esbuild/linux-ia32" "0.25.4" - "@esbuild/linux-loong64" "0.25.4" - "@esbuild/linux-mips64el" "0.25.4" - "@esbuild/linux-ppc64" "0.25.4" - "@esbuild/linux-riscv64" "0.25.4" - "@esbuild/linux-s390x" "0.25.4" - "@esbuild/linux-x64" "0.25.4" - "@esbuild/netbsd-arm64" "0.25.4" - "@esbuild/netbsd-x64" "0.25.4" - "@esbuild/openbsd-arm64" "0.25.4" - "@esbuild/openbsd-x64" "0.25.4" - "@esbuild/sunos-x64" "0.25.4" - "@esbuild/win32-arm64" "0.25.4" - "@esbuild/win32-ia32" "0.25.4" - "@esbuild/win32-x64" "0.25.4" - -esbuild@~0.25.0: - version "0.25.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.5.tgz#71075054993fdfae76c66586f9b9c1f8d7edd430" - integrity sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.5" - "@esbuild/android-arm" "0.25.5" - "@esbuild/android-arm64" "0.25.5" - "@esbuild/android-x64" "0.25.5" - "@esbuild/darwin-arm64" "0.25.5" - "@esbuild/darwin-x64" "0.25.5" - "@esbuild/freebsd-arm64" "0.25.5" - "@esbuild/freebsd-x64" "0.25.5" - "@esbuild/linux-arm" "0.25.5" - "@esbuild/linux-arm64" "0.25.5" - "@esbuild/linux-ia32" "0.25.5" - "@esbuild/linux-loong64" "0.25.5" - "@esbuild/linux-mips64el" "0.25.5" - "@esbuild/linux-ppc64" "0.25.5" - "@esbuild/linux-riscv64" "0.25.5" - "@esbuild/linux-s390x" "0.25.5" - "@esbuild/linux-x64" "0.25.5" - "@esbuild/netbsd-arm64" "0.25.5" - "@esbuild/netbsd-x64" "0.25.5" - "@esbuild/openbsd-arm64" "0.25.5" - "@esbuild/openbsd-x64" "0.25.5" - "@esbuild/sunos-x64" "0.25.5" - "@esbuild/win32-arm64" "0.25.5" - "@esbuild/win32-ia32" "0.25.5" - "@esbuild/win32-x64" "0.25.5" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estree-walker@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" - integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== - dependencies: - "@types/estree" "^1.0.0" - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -exit-hook@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-4.0.0.tgz#c1e16ebd03d3166f837b1502dac755bb5c460d58" - integrity sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ== - -expect-type@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.1.tgz#af76d8b357cf5fa76c41c09dafb79c549e75f71f" - integrity sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw== - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -fast-glob@^3.2.9, fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fault@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - -fdir@^6.4.4: - version "6.4.4" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.4.tgz#1cfcf86f875a883e19a8fab53622cfe992e8d2f9" - integrity sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg== - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -front-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" - integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== - dependencies: - js-yaml "^3.13.1" - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -generic-names@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" - integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== - dependencies: - loader-utils "^3.2.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -get-tsconfig@^4.7.5: - version "4.10.1" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" - integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== - dependencies: - resolve-pkg-maps "^1.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^10.3.10, glob@^10.3.7: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.2.4: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphql@^16.8.1: - version "16.11.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" - integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -headers-polyfill@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-4.0.3.tgz#922a0155de30ecc1f785bcf04be77844ca95ad07" - integrity sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ== - -hono@^4.5.4, hono@^4.8.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/hono/-/hono-4.8.2.tgz#806ea770de3d799b7ff17dc9a17c430bf338ed99" - integrity sha512-hM+1RIn9PK1I6SiTNS6/y7O1mvg88awYLFEuEtoiMtRyT3SD2iu9pSFgbBXT3b1Ua4IwzvSTLvwO0SEhDxCi4w== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -html-encoding-sniffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" - integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== - dependencies: - whatwg-encoding "^3.1.1" - -htmlparser2@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - -http-proxy-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -https-proxy-agent@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" - integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== - dependencies: - agent-base "^7.1.2" - debug "4" - -iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ignore@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0, is-core-module@^2.5.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== - dependencies: - hasown "^2.0.2" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -is-node-process@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-node-process/-/is-node-process-1.2.0.tgz#ea02a1b90ddb3934a19aea414e88edef7e11d134" - integrity sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-what@^4.1.8: - version "4.1.16" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" - integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== - -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jiti@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" - integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== - -js-tiktoken@^1.0.12: - version "1.0.18" - resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.18.tgz#aaf68dda155bc693e6f0a572b9a359d569cb53df" - integrity sha512-hFYx4xYf6URgcttcGvGuOBJhTxPYZ2R5eIesqCaNRJmYH8sNmsfTeWg4yu//7u1VD/qIUkgKJTpGom9oHXmB4g== - dependencies: - base64-js "^1.5.1" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsdom@^26.1.0: - version "26.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-26.1.0.tgz#ab5f1c1cafc04bd878725490974ea5e8bf0c72b3" - integrity sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg== - dependencies: - cssstyle "^4.2.1" - data-urls "^5.0.0" - decimal.js "^10.5.0" - html-encoding-sniffer "^4.0.0" - http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.6" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.16" - parse5 "^7.2.1" - rrweb-cssom "^0.8.0" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^5.1.1" - w3c-xmlserializer "^5.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^3.1.1" - whatwg-mimetype "^4.0.0" - whatwg-url "^14.1.1" - ws "^8.18.0" - xml-name-validator "^5.0.0" - -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -langsmith@^0.3.33: - version "0.3.33" - resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.3.33.tgz#f6c56b338cd6a9aa139dbbafcf4b037320eb3041" - integrity sha512-imNIaBL6+ElE5eMzNHYwFxo6W/6rHlqcaUjCYoIeGdCYWlARxE3CTGKul5DJnaUgGP2CTLFeNXyvRx5HWC/4KQ== - dependencies: - "@types/uuid" "^10.0.0" - chalk "^4.1.2" - console-table-printer "^2.12.1" - p-queue "^6.6.2" - p-retry "4" - semver "^7.6.3" - uuid "^10.0.0" - -lightningcss-darwin-arm64@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae" - integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ== - -lightningcss-darwin-x64@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22" - integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA== - -lightningcss-freebsd-x64@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4" - integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig== - -lightningcss-linux-arm-gnueabihf@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908" - integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q== - -lightningcss-linux-arm64-gnu@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009" - integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw== - -lightningcss-linux-arm64-musl@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe" - integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ== - -lightningcss-linux-x64-gnu@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157" - integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw== - -lightningcss-linux-x64-musl@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26" - integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ== - -lightningcss-win32-arm64-msvc@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039" - integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA== - -lightningcss-win32-x64-msvc@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz#fd7dd008ea98494b85d24b4bea016793f2e0e352" - integrity sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg== - -lightningcss@1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.1.tgz#78e979c2d595bfcb90d2a8c0eb632fe6c5bfed5d" - integrity sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg== - dependencies: - detect-libc "^2.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.30.1" - lightningcss-darwin-x64 "1.30.1" - lightningcss-freebsd-x64 "1.30.1" - lightningcss-linux-arm-gnueabihf "1.30.1" - lightningcss-linux-arm64-gnu "1.30.1" - lightningcss-linux-arm64-musl "1.30.1" - lightningcss-linux-x64-gnu "1.30.1" - lightningcss-linux-x64-musl "1.30.1" - lightningcss-win32-arm64-msvc "1.30.1" - lightningcss-win32-x64-msvc "1.30.1" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== - dependencies: - uc.micro "^2.0.0" - -loader-utils@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" - integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.2.0, logform@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" - integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -longest-streak@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" - integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== - -loupe@^3.1.0, loupe@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2" - integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== - -lru-cache@^10.2.0, lru-cache@^10.4.3: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== - -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - -magic-string@^0.30.17: - version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -markdown-it@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.0" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.1.0" - -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" - integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== - dependencies: - repeat-string "^1.0.0" - -mdast-util-find-and-replace@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz#b7db1e873f96f66588c321f1363069abf607d1b5" - integrity sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA== - dependencies: - escape-string-regexp "^4.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" - -mdast-util-footnote@^0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz#4b226caeab4613a3362c144c94af0fdd6f7e0ef0" - integrity sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w== - dependencies: - mdast-util-to-markdown "^0.6.0" - micromark "~2.11.0" - -mdast-util-from-markdown@^0.8.0: - version "0.8.5" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" - -mdast-util-frontmatter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz#8bd5cd55e236c03e204a036f7372ebe9e6748240" - integrity sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ== - dependencies: - micromark-extension-frontmatter "^0.2.0" - -mdast-util-gfm-autolink-literal@^0.1.0, mdast-util-gfm-autolink-literal@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz#9c4ff399c5ddd2ece40bd3b13e5447d84e385fb7" - integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== - dependencies: - ccount "^1.0.0" - mdast-util-find-and-replace "^1.1.0" - micromark "^2.11.3" - -mdast-util-gfm-strikethrough@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz#45eea337b7fff0755a291844fbea79996c322890" - integrity sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA== - dependencies: - mdast-util-to-markdown "^0.6.0" - -mdast-util-gfm-table@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz#af05aeadc8e5ee004eeddfb324b2ad8c029b6ecf" - integrity sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ== - dependencies: - markdown-table "^2.0.0" - mdast-util-to-markdown "~0.6.0" - -mdast-util-gfm-task-list-item@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz#70c885e6b9f543ddd7e6b41f9703ee55b084af10" - integrity sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A== - dependencies: - mdast-util-to-markdown "~0.6.0" - -mdast-util-gfm@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz#8ecddafe57d266540f6881f5c57ff19725bd351c" - integrity sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ== - dependencies: - mdast-util-gfm-autolink-literal "^0.1.0" - mdast-util-gfm-strikethrough "^0.2.0" - mdast-util-gfm-table "^0.1.0" - mdast-util-gfm-task-list-item "^0.1.0" - mdast-util-to-markdown "^0.6.1" - -mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1, mdast-util-to-markdown@~0.6.0: - version "0.6.5" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" - integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== - dependencies: - "@types/unist" "^2.0.0" - longest-streak "^2.0.0" - mdast-util-to-string "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.0.0" - zwitch "^1.0.0" - -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== - -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromark-extension-footnote@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz#129b74ef4920ce96719b2c06102ee7abb2b88a20" - integrity sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ== - dependencies: - micromark "~2.11.0" - -micromark-extension-frontmatter@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz#61b8e92e9213e1d3c13f5a59e7862f5ca98dfa53" - integrity sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A== - dependencies: - fault "^1.0.0" - -micromark-extension-gfm-autolink-literal@~0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz#53866c1f0c7ef940ae7ca1f72c6faef8fed9f204" - integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== - dependencies: - micromark "~2.11.3" - -micromark-extension-gfm-strikethrough@~0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz#96cb83356ff87bf31670eefb7ad7bba73e6514d1" - integrity sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw== - dependencies: - micromark "~2.11.0" - -micromark-extension-gfm-table@~0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz#4d49f1ce0ca84996c853880b9446698947f1802b" - integrity sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA== - dependencies: - micromark "~2.11.0" - -micromark-extension-gfm-tagfilter@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz#d9f26a65adee984c9ccdd7e182220493562841ad" - integrity sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q== - -micromark-extension-gfm-task-list-item@~0.3.0: - version "0.3.3" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz#d90c755f2533ed55a718129cee11257f136283b8" - integrity sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ== - dependencies: - micromark "~2.11.0" - -micromark-extension-gfm@^0.3.0: - version "0.3.3" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz#36d1a4c089ca8bdfd978c9bd2bf1a0cb24e2acfe" - integrity sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A== - dependencies: - micromark "~2.11.0" - micromark-extension-gfm-autolink-literal "~0.5.0" - micromark-extension-gfm-strikethrough "~0.6.5" - micromark-extension-gfm-table "~0.4.0" - micromark-extension-gfm-tagfilter "~0.3.0" - micromark-extension-gfm-task-list-item "~0.3.0" - -micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3: - version "2.11.4" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== - dependencies: - debug "^4.0.0" - parse-entities "^2.0.0" - -micromatch@^4.0.4: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimatch@^9.0.3, minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -minizlib@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574" - integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA== - dependencies: - minipass "^7.1.2" - -mkdirp@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" - integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -msw@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/msw/-/msw-2.8.2.tgz#a35545275403da472f4ed2152cd3c77000db544c" - integrity sha512-ugu8RBgUj6//RD0utqDDPdS+QIs36BKYkDAM6u59hcMVtFM4PM0vW4l3G1R+1uCWP2EWFUG8reT/gPXVEtx7/w== - dependencies: - "@bundled-es-modules/cookie" "^2.0.1" - "@bundled-es-modules/statuses" "^1.0.1" - "@bundled-es-modules/tough-cookie" "^0.1.6" - "@inquirer/confirm" "^5.0.0" - "@mswjs/interceptors" "^0.37.0" - "@open-draft/deferred-promise" "^2.2.0" - "@open-draft/until" "^2.1.0" - "@types/cookie" "^0.6.0" - "@types/statuses" "^2.0.4" - graphql "^16.8.1" - headers-polyfill "^4.0.2" - is-node-process "^1.2.0" - outvariant "^1.4.3" - path-to-regexp "^6.3.0" - picocolors "^1.1.1" - strict-event-emitter "^0.5.1" - type-fest "^4.26.1" - yargs "^17.7.2" - -mustache@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" - integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== - -mute-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" - integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== - -nanoid@^3.3.11, nanoid@^3.3.8: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -node-releases@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -nwsapi@^2.2.16: - version "2.2.20" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.20.tgz#22e53253c61e7b0e7e93cef42c891154bcca11ef" - integrity sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== - -object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -open@^10.1.0: - version "10.1.2" - resolved "https://registry.yarnpkg.com/open/-/open-10.1.2.tgz#d5df40984755c9a9c3c93df8156a12467e882925" - integrity sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^3.1.0" - -outvariant@^1.4.0, outvariant@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873" - integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-retry@4: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@^7.2.1: - version "7.3.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" - integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== - dependencies: - entities "^6.0.0" - -path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" - integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathe@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" - integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== - -pathval@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" - integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== - -picocolors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-modules-extract-imports@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== - -postcss-modules-local-by-default@^4.0.5: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" - integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^7.0.0" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" - integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== - dependencies: - postcss-selector-parser "^7.0.0" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-6.0.1.tgz#e3e895918c060c14fa6a22f84ba14a4286f436a5" - integrity sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ== - dependencies: - generic-names "^4.0.0" - icss-utils "^5.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.1.0" - postcss-modules-local-by-default "^4.0.5" - postcss-modules-scope "^3.2.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.3" - -postcss-selector-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" - integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.4.41, postcss@^8.5.1: - version "8.5.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== - dependencies: - nanoid "^3.3.11" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -postcss@^8.5.3: - version "8.5.3" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" - integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - -pretty-format@^27.0.2: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -psl@^1.1.33: - version "1.15.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" - integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== - dependencies: - punycode "^2.3.1" - -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - -punycode@^2.1.1, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -react-dom@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0.tgz#43446f1f01c65a4cd7f7588083e686a6726cfb57" - integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ== - dependencies: - scheduler "^0.25.0" - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-refresh@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53" - integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ== - -react@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/react/-/react-19.0.0.tgz#6e1969251b9f108870aa4bff37a0ce9ddfaaabdd" - integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^3.4.0, readable-stream@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" - integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" - -remark-footnotes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-3.0.0.tgz#5756b56f8464fa7ed80dbba0c966136305d8cb8d" - integrity sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg== - dependencies: - mdast-util-footnote "^0.1.0" - micromark-extension-footnote "^0.3.0" - -remark-frontmatter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz#ca5d996361765c859bd944505f377d6b186a6ec6" - integrity sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA== - dependencies: - mdast-util-frontmatter "^0.2.0" - micromark-extension-frontmatter "^0.2.0" - -remark-gfm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-1.0.0.tgz#9213643001be3f277da6256464d56fd28c3b3c0d" - integrity sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA== - dependencies: - mdast-util-gfm "^0.1.0" - micromark-extension-gfm "^0.3.0" - -remark-parse@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" - integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== - dependencies: - mdast-util-from-markdown "^0.8.0" - -repeat-string@^1.0.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve@^1.10.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^5.0.1: - version "5.0.10" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" - integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== - dependencies: - glob "^10.3.7" - -rollup@^4.34.9: - version "4.40.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.40.2.tgz#778e88b7a197542682b3e318581f7697f55f0619" - integrity sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg== - dependencies: - "@types/estree" "1.0.7" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.40.2" - "@rollup/rollup-android-arm64" "4.40.2" - "@rollup/rollup-darwin-arm64" "4.40.2" - "@rollup/rollup-darwin-x64" "4.40.2" - "@rollup/rollup-freebsd-arm64" "4.40.2" - "@rollup/rollup-freebsd-x64" "4.40.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.40.2" - "@rollup/rollup-linux-arm-musleabihf" "4.40.2" - "@rollup/rollup-linux-arm64-gnu" "4.40.2" - "@rollup/rollup-linux-arm64-musl" "4.40.2" - "@rollup/rollup-linux-loongarch64-gnu" "4.40.2" - "@rollup/rollup-linux-powerpc64le-gnu" "4.40.2" - "@rollup/rollup-linux-riscv64-gnu" "4.40.2" - "@rollup/rollup-linux-riscv64-musl" "4.40.2" - "@rollup/rollup-linux-s390x-gnu" "4.40.2" - "@rollup/rollup-linux-x64-gnu" "4.40.2" - "@rollup/rollup-linux-x64-musl" "4.40.2" - "@rollup/rollup-win32-arm64-msvc" "4.40.2" - "@rollup/rollup-win32-ia32-msvc" "4.40.2" - "@rollup/rollup-win32-x64-msvc" "4.40.2" - fsevents "~2.3.2" - -rollup@^4.5.2: - version "4.24.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.4.tgz#fdc76918de02213c95447c9ffff5e35dddb1d058" - integrity sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.24.4" - "@rollup/rollup-android-arm64" "4.24.4" - "@rollup/rollup-darwin-arm64" "4.24.4" - "@rollup/rollup-darwin-x64" "4.24.4" - "@rollup/rollup-freebsd-arm64" "4.24.4" - "@rollup/rollup-freebsd-x64" "4.24.4" - "@rollup/rollup-linux-arm-gnueabihf" "4.24.4" - "@rollup/rollup-linux-arm-musleabihf" "4.24.4" - "@rollup/rollup-linux-arm64-gnu" "4.24.4" - "@rollup/rollup-linux-arm64-musl" "4.24.4" - "@rollup/rollup-linux-powerpc64le-gnu" "4.24.4" - "@rollup/rollup-linux-riscv64-gnu" "4.24.4" - "@rollup/rollup-linux-s390x-gnu" "4.24.4" - "@rollup/rollup-linux-x64-gnu" "4.24.4" - "@rollup/rollup-linux-x64-musl" "4.24.4" - "@rollup/rollup-win32-arm64-msvc" "4.24.4" - "@rollup/rollup-win32-ia32-msvc" "4.24.4" - "@rollup/rollup-win32-x64-msvc" "4.24.4" - fsevents "~2.3.2" - -rrweb-cssom@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" - integrity sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== - -run-applescript@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" - integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -safe-stable-stringify@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - -"safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" - integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== - -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.6.3: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - -semver@^7.7.1: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -siginfo@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" - integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-wcswidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz#8ab18ac0ae342f9d9b629604e54d2aa1ecb018b2" - integrity sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stackback@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" - integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== - -stacktrace-parser@^0.1.10: - version "0.1.11" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz#c7c08f9b29ef566b9a6f7b255d7db572f66fabc4" - integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg== - dependencies: - type-fest "^0.7.1" - -statuses@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -std-env@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" - integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== - -strict-event-emitter@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" - integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== - -string-hash@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - name string-width-cjs - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -superjson@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173" - integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q== - dependencies: - copy-anything "^3.0.2" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tailwindcss@4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.10.tgz#515741b0a79316d1971d182f7fbc435b68679373" - integrity sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA== - -tapable@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" - integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== - -tar@^7.4.3: - version "7.4.3" - resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" - integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== - dependencies: - "@isaacs/fs-minipass" "^4.0.0" - chownr "^3.0.0" - minipass "^7.1.2" - minizlib "^3.0.1" - mkdirp "^3.0.1" - yallist "^5.0.0" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -tinybench@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" - integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== - -tinyexec@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" - integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== - -tinyglobby@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.13.tgz#a0e46515ce6cbcd65331537e57484af5a7b2ff7e" - integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw== - dependencies: - fdir "^6.4.4" - picomatch "^4.0.2" - -tinypool@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2" - integrity sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA== - -tinyrainbow@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" - integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== - -tinyspy@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" - integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== - -tldts-core@^6.1.86: - version "6.1.86" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.86.tgz#a93e6ed9d505cb54c542ce43feb14c73913265d8" - integrity sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA== - -tldts@^6.1.32: - version "6.1.86" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.86.tgz#087e0555b31b9725ee48ca7e77edc56115cd82f7" - integrity sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ== - dependencies: - tldts-core "^6.1.86" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tough-cookie@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tough-cookie@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.2.tgz#66d774b4a1d9e12dc75089725af3ac75ec31bed7" - integrity sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A== - dependencies: - tldts "^6.1.32" - -tr46@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.1.1.tgz#96ae867cddb8fdb64a49cc3059a8d428bcf238ca" - integrity sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== - dependencies: - punycode "^2.3.1" - -transform-markdown-links@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/transform-markdown-links/-/transform-markdown-links-2.1.0.tgz#de2178d96ef0e020226ebd967dcc5873df039792" - integrity sha512-7HWQwQ9US+tJSMMzi1aP+KA3QwfjDs8sB4H5GBMRHFNBMQVdgoF6VfIFy2nJR/UHRTkYoGFwWh2pe+QIwSvfOA== - -traverse@^0.6.7: - version "0.6.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.9.tgz#76cfdbacf06382d460b76f8b735a44a6209d8b81" - integrity sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg== - dependencies: - gopd "^1.0.1" - typedarray.prototype.slice "^1.0.3" - which-typed-array "^1.1.15" - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - -ts-morph@^21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-21.0.1.tgz#712302a0f6e9dbf1aa8d9cf33a4386c4b18c2006" - integrity sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg== - dependencies: - "@ts-morph/common" "~0.22.0" - code-block-writer "^12.0.0" - -tslib@^2.4.0, tslib@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tsx@^4.19.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.3.tgz#f913e4911d59ad177c1bcee19d1035ef8dd6e2fb" - integrity sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ== - dependencies: - esbuild "~0.25.0" - get-tsconfig "^4.7.5" - optionalDependencies: - fsevents "~2.3.3" - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^4.26.1: - version "4.41.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - -typedarray.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz#bce2f685d3279f543239e4d595e0d021731d2d1a" - integrity sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-errors "^1.3.0" - typed-array-buffer "^1.0.2" - typed-array-byte-offset "^1.0.2" - -typedoc-plugin-markdown@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.4.2.tgz#fc31779595aa9bf00e66709f3894e048345bf7ed" - integrity sha512-kJVkU2Wd+AXQpyL6DlYXXRrfNrHrEIUgiABWH8Z+2Lz5Sq6an4dQ/hfvP75bbokjNDUskOdFlEEm/0fSVyC7eg== - -typedoc@^0.27.7: - version "0.27.7" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.27.7.tgz#09047ffb5c845f45765de26c68b77260867fe967" - integrity sha512-K/JaUPX18+61W3VXek1cWC5gwmuLvYTOXJzBvD9W7jFvbPnefRnCHQCEPw7MSNrP/Hj7JJrhZtDDLKdcYm6ucg== - dependencies: - "@gerrit0/mini-shiki" "^1.24.0" - lunr "^2.3.9" - markdown-it "^14.1.0" - minimatch "^9.0.5" - yaml "^2.6.1" - -typescript@^5.4.5: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -uc.micro@^2.0.0, uc.micro@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" - integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -underscore@^1.13.2: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -unified@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" - integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-buffer "^2.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" - -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== - dependencies: - "@types/unist" "^2.0.2" - -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - -universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-7.0.2.tgz#52e7d0e9b3dc4df06cc33cb2b9fd79041a54827e" - integrity sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -update-section@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/update-section/-/update-section-0.3.3.tgz#458f17820d37820dc60e20b86d94391b00123158" - integrity sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw== - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vfile-message@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" - integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== - dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^2.0.0" - -vfile@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" - integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== - dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" - -vite-node@3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.1.3.tgz#d021ced40b5a057305eaea9ce62c610c33b60a48" - integrity sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA== - dependencies: - cac "^6.7.14" - debug "^4.4.0" - es-module-lexer "^1.7.0" - pathe "^2.0.3" - vite "^5.0.0 || ^6.0.0" - -"vite@^5.0.0 || ^6.0.0": - version "6.3.5" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.3.5.tgz#fec73879013c9c0128c8d284504c6d19410d12a3" - integrity sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ== - dependencies: - esbuild "^0.25.0" - fdir "^6.4.4" - picomatch "^4.0.2" - postcss "^8.5.3" - rollup "^4.34.9" - tinyglobby "^0.2.13" - optionalDependencies: - fsevents "~2.3.3" - -vitest@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-3.1.3.tgz#0b0b01932408cd3af61867f4468d28bd83406ffb" - integrity sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw== - dependencies: - "@vitest/expect" "3.1.3" - "@vitest/mocker" "3.1.3" - "@vitest/pretty-format" "^3.1.3" - "@vitest/runner" "3.1.3" - "@vitest/snapshot" "3.1.3" - "@vitest/spy" "3.1.3" - "@vitest/utils" "3.1.3" - chai "^5.2.0" - debug "^4.4.0" - expect-type "^1.2.1" - magic-string "^0.30.17" - pathe "^2.0.3" - std-env "^3.9.0" - tinybench "^2.9.0" - tinyexec "^0.3.2" - tinyglobby "^0.2.13" - tinypool "^1.0.2" - tinyrainbow "^2.0.0" - vite "^5.0.0 || ^6.0.0" - vite-node "3.1.3" - why-is-node-running "^2.3.0" - -w3c-xmlserializer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" - integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== - dependencies: - xml-name-validator "^5.0.0" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -whatwg-encoding@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" - integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" - integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== - -whatwg-url@^14.0.0, whatwg-url@^14.1.1: - version "14.2.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.2.0.tgz#4ee02d5d725155dae004f6ae95c73e7ef5d95663" - integrity sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== - dependencies: - tr46 "^5.1.0" - webidl-conversions "^7.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.14, which-typed-array@^1.1.15: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -why-is-node-running@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" - integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== - dependencies: - siginfo "^2.0.0" - stackback "0.0.2" - -winston-console-format@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/winston-console-format/-/winston-console-format-1.0.8.tgz#591adc8e9567c3397a3fa2e29e596d56e48db840" - integrity sha512-dq7t/E0D0QRi4XIOwu6HM1+5e//WPqylH88GVjKEhQVrzGFg34MCz+G7pMJcXFBen9C0kBsu5GYgbYsE2LDwKw== - dependencies: - colors "^1.4.0" - logform "^2.2.0" - triple-beam "^1.3.0" - -winston-transport@^4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" - integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== - dependencies: - logform "^2.7.0" - readable-stream "^3.6.2" - triple-beam "^1.3.0" - -winston@^3.17.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423" - integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.7.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.9.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - name wrap-ansi-cjs - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -ws@^8.18.0: - version "8.18.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" - integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== - -xml-name-validator@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" - integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yallist@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" - integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== - -yaml@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" - integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== - -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yoctocolors-cjs@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" - integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== - -zod-to-json-schema@^3.22.3: - version "3.24.1" - resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz#f08c6725091aadabffa820ba8d50c7ab527f227a" - integrity sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w== - -zod@^3.23.8, zod@^3.25.32: - version "3.25.67" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.67.tgz#62987e4078e2ab0f63b491ef0c4f33df24236da8" - integrity sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw== - -zwitch@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" - integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==