Created
April 24, 2025 07:13
-
-
Save ryx2/fb6edf5cb6e259bc2b563864e0f35f71 to your computer and use it in GitHub Desktop.
openhands crash from context too long
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cd /tmp && python -m openhands.resolver.resolve_issue \ | |
--selected-repo modern-realty-inc/plug-chat \ | |
--token *** \ | |
--issue-number 2567 \ | |
--issue-type issue \ | |
--max-iterations 50 \ | |
--comment-id None \ | |
--is-experimental true | |
shell: /usr/bin/bash -e {0} | |
env: | |
pythonLocation: /opt/hostedtoolcache/Python/3.12.10/x64 | |
PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.12.10/x64/lib/pkgconfig | |
Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.10/x64 | |
Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.10/x64 | |
Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.10/x64 | |
LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.12.10/x64/lib | |
ISSUE_NUMBER: 2567 | |
ISSUE_TYPE: issue | |
COMMENT_ID: None | |
MAX_ITERATIONS: 50 | |
SANDBOX_ENV_GITHUB_TOKEN: *** | |
SANDBOX_ENV_BASE_CONTAINER_IMAGE: | |
TARGET_BRANCH: main | |
GITHUB_TOKEN: *** | |
GITHUB_USERNAME: *** | |
GIT_USERNAME: *** | |
LLM_MODEL: anthropic/claude-3-7-sonnet-latest | |
LLM_API_KEY: *** | |
LLM_BASE_URL: | |
LLM_API_VERSION: | |
PYTHONPATH: | |
16:38:36 - openhands:INFO: github.py:100 - Limiting resolving to issues [2567]. | |
16:38:36 - openhands:INFO: resolve_issue.py:442 - Using output directory: output | |
Cloning into 'output/repo'... | |
16:38:39 - openhands:INFO: resolve_issue.py:464 - Base commit: b13e91f9674f63279246c9a62ae048892c47f9de | |
16:38:39 - openhands:INFO: resolve_issue.py:475 - Writing output to output/output.jsonl | |
16:38:39 - openhands:INFO: resolve_issue.py:490 - Resolving issue 2567 with Agent CodeActAgent, model claude-3-7-sonnet-latest, max iterations 50. | |
16:38:39 - openhands:INFO: resolve_issue.py:183 - Starting fixing issue 2567. | |
16:38:39 - openhands:INFO: runtime_build.py:182 - Building image: ghcr.io/all-hands-ai/runtime:oh_v0.34.0_aoh113ibra7zv8pg_660gpmny7rtgfyim | |
16:42:20 - openhands:INFO: docker.py:222 - Image [ghcr.io/all-hands-ai/runtime:oh_v0.34.0_aoh113ibra7zv8pg_660gpmny7rtgfyim] build finished. | |
16:42:20 - openhands:INFO: docker.py:227 - Re-tagged image [ghcr.io/all-hands-ai/runtime:oh_v0.34.0_aoh113ibra7zv8pg_660gpmny7rtgfyim] with more generic tag [oh_v0.34.0_aoh113ibra7zv8pg] | |
16:42:20 - openhands:INFO: docker.py:243 - Image ghcr.io/all-hands-ai/runtime with tags [oh_v0.34.0_aoh113ibra7zv8pg_660gpmny7rtgfyim, oh_v0.34.0_aoh113ibra7zv8pg] built successfully | |
16:42:20 - openhands:INFO: docker_runtime.py:165 - [runtime 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Starting runtime with image: ghcr.io/all-hands-ai/runtime:oh_v0.34.0_aoh113ibra7zv8pg_660gpmny7rtgfyim | |
16:42:20 - openhands:INFO: docker_runtime.py:169 - [runtime 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Container started: openhands-runtime-762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3. VSCode URL: None | |
16:42:20 - openhands:INFO: docker_runtime.py:180 - [runtime 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Waiting for client to become ready at http://localhost:37976... | |
16:42:44 - openhands:INFO: docker_runtime.py:186 - [runtime 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Runtime is ready. | |
16:42:45 - openhands:INFO: resolve_issue.py:60 - ------------------------------ | |
16:42:45 - openhands:INFO: resolve_issue.py:61 - BEGIN Runtime Completion Fn | |
16:42:45 - openhands:INFO: resolve_issue.py:62 - ------------------------------ | |
16:42:45 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
cd /workspace | |
16:42:46 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:42:46 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
git config --global core.pager "" | |
16:42:47 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:42:47 - openhands:INFO: base.py:432 - [runtime 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Selected repo: None, loading microagents from /workspace/.openhands/microagents (inside runtime) | |
16:42:47 - openhands:INFO: base.py:453 - [runtime 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] openhands_instructions microagent loaded. | |
16:42:47 - openhands:INFO: memory.py:239 - Loading user workspace microagents: ['repo_legacy'] | |
16:42:47 - openhands:INFO: resolve_issue.py:233 - **SystemMessageAction** (source=EventSource.AGENT) | |
CONTENT: You are OpenHands agent, a helpful AI assistant that can interact with a computer to solve tasks. | |
<ROLE> | |
Your primary role is to assist users by executing commands, modifying code, and solving technical problems effectively. You should be thorough, methodical, and prioritize quality over speed. | |
* If the user asks a question, like "why is X happening", don't try to fix the problem. Just give an answer to the question. | |
</ROLE> | |
<EFFICIENCY> | |
* Each action you take is somewhat expensive. Wherever possible, combine multiple actions into a single action, e.g. combine multiple bash commands into one, using sed and grep to edit/view multiple files at once. | |
* When exploring the codebase, use efficient tools like find, grep, and git commands with appropriate filters to minimize unnecessary operations. | |
</EFFICIENCY> | |
<FILE_SYSTEM_GUIDELINES> | |
* When a user provides a file path, do NOT assume it's relative to the current working directory. First explore the file system to locate the file before working on it. | |
* If asked to edit a file, edit the file directly, rather than creating a new file with a different filename. | |
* For global search-and-replace operations, consider using `sed` instead of opening file editors multiple times. | |
</FILE_SYSTEM_GUIDELINES> | |
<CODE_QUALITY> | |
* Write clean, efficient code with minimal comments. Avoid redundancy in comments: Do not repeat information that can be easily inferred from the code itself. | |
* When implementing solutions, focus on making the minimal changes needed to solve the problem. | |
* Before implementing any changes, first thoroughly understand the codebase through exploration. | |
* If you are adding a lot of code to a function or file, consider splitting the function or file into smaller pieces when appropriate. | |
</CODE_QUALITY> | |
<VERSION_CONTROL> | |
* When configuring git credentials, use "openhands" as the user.name and "[email protected]" as the user.email by default, unless explicitly instructed otherwise. | |
* Exercise caution with git operations. Do NOT make potentially dangerous changes (e.g., pushing to main, deleting repositories) unless explicitly asked to do so. | |
* When committing changes, use `git status` to see all modified files, and stage all files necessary for the commit. Use `git commit -a` whenever possible. | |
* Do NOT commit files that typically shouldn't go into version control (e.g., node_modules/, .env files, build directories, cache files, large binaries) unless explicitly instructed by the user. | |
* If unsure about committing certain files, check for the presence of .gitignore files or ask the user for clarification. | |
</VERSION_CONTROL> | |
<PULL_REQUESTS> | |
* When creating pull requests, create only ONE per session/issue unless explicitly instructed otherwise. | |
* When working with an existing PR, update it with new commits rather than creating additional PRs for the same issue. | |
* When updating a PR, preserve the original PR title and purpose, updating description only when necessary. | |
</PULL_REQUESTS> | |
<PROBLEM_SOLVING_WORKFLOW> | |
1. EXPLORATION: Thoroughly explore relevant files and understand the context before proposing solutions | |
2. ANALYSIS: Consider multiple approaches and select the most promising one | |
3. TESTING: | |
* For bug fixes: Create tests to verify issues before implementing fixes | |
* For new features: Consider test-driven development when appropriate | |
* If the repository lacks testing infrastructure and implementing tests would require extensive setup, consult with the user before investing time in building testing infrastructure | |
4. IMPLEMENTATION: Make focused, minimal changes to address the problem | |
5. VERIFICATION: Test your implementation thoroughly, including edge cases | |
</PROBLEM_SOLVING_WORKFLOW> | |
<SECURITY> | |
* Only use GITHUB_TOKEN and other credentials in ways the user has explicitly requested and would expect. | |
* Use APIs to work with GitHub or other platforms, unless the user asks otherwise or your task requires browsing. | |
</SECURITY> | |
<ENVIRONMENT_SETUP> | |
* When user asks you to run an application, don't stop if the application is not installed. Instead, please install the application and run the command again. | |
* If you encounter missing dependencies: | |
1. First, look around in the repository for existing dependency files (requirements.txt, pyproject.toml, package.json, Gemfile, etc.) | |
2. If dependency files exist, use them to install all dependencies at once (e.g., `pip install -r requirements.txt`, `npm install`, etc.) | |
3. Only install individual packages directly if no dependency files are found or if only specific packages are needed | |
* Similarly, if you encounter missing dependencies for essential tools requested by the user, install them when possible. | |
</ENVIRONMENT_SETUP> | |
<TROUBLESHOOTING> | |
* If you've made repeated attempts to solve a problem but tests still fail or the user reports it's still broken: | |
1. Step back and reflect on 5-7 different possible sources of the problem | |
2. Assess the likelihood of each possible cause | |
3. Methodically address the most likely causes, starting with the highest probability | |
4. Document your reasoning process | |
* When you run into any major issue while executing a plan from the user, please don't try to directly work around it. Instead, propose a new plan and confirm with the user before proceeding. | |
</TROUBLESHOOTING> | |
TOOLS: 7 tools available | |
AGENT_CLASS: CodeActAgent | |
16:42:47 - openhands:INFO: resolve_issue.py:233 - **MessageAction** (source=EventSource.USER) | |
CONTENT: Please fix the following issue for the repository in /workspace. | |
An environment has been set up for you to start working. You may assume all necessary tools are installed. | |
# Problem Statement | |
We want our system to be able to take tour requests where we're the listing agent | |
The system currently anticipates that we are always the buying agent (with the exception of seller_flow). for tour requests for our listing property: as you can see from buyer_flow or realtor_flow, the current tour process is initateScheduleShowing, then, negotiateShowingTime, then confirmShowingTime. it should still be the same steps, but the functions set different things when we're on the listing side (there's no "client" party, for an example) | |
DO NOT delete or modify any supabase tables | |
Issue Thread Comments: | |
[OpenHands](https://github.com/All-Hands-AI/OpenHands) started fixing the issue! You can monitor the progress [here](https://github.com/modern-realty-inc/plug-chat/actions/runs/14623401340). | |
IMPORTANT: You should ONLY interact with the environment provided to you AND NEVER ASK FOR HUMAN HELP. | |
You SHOULD INCLUDE PROPER INDENTATION in your edit commands. | |
Some basic information about this repository: | |
# How to Contribute Overview | |
You are a brilliant software engineer. | |
This is a typescript vercel nextjs 14 app router deployed repository. We use AI to scale our brokerage to spend way less time on each client but still provide a better service than than current human agents via texting. We use the openai assistant to use function calling to retrieve information like zillow, redfin, the MLS, etc. | |
Don't create any of the frontend, just edit backend. | |
## Style Guide & Contributing Instructions | |
To install and run, use `./bun run`. Use `./bun test <filename>` to run tests. Make sure to add the filename to the test command, otherwise it will run too many tests, which have too much output and it's hard to interpret. Do NOT run `./bun test` without a filename, it will run too many tests. Try to get even more specific, run `./bun test <filename> -t <testname>` to run a specific test inside the test file, this you will get the most detailed information on the specific issue. | |
<IMPORTANT> | |
Use `./bun test <filename> -t <testname>` to test code you've written. | |
</IMPORTANT> | |
Make sure to run `./bun run build` before finishing to ensure that everything compiles. You MUST run these bun commands before proceeding with finishing the task. DO NOT END THE EXECUTION UNLESS YOU HAVE TESTED THAT THE CODE PASSES TESTS, AND RUN BUILD CHECKS. Make sure you run `./bun`, with the `./` in front. We don't have access to installing bun, and so you will need to use the local binary. | |
Use `lib/services/__tests__/utils/test-utils.ts` to create tests that test the real dependencies and functionalities, not mocks. From test-utils, use assistant.chat() to process test messages, don't make other items available from the test-utils return and don't import other items from tests. Check if things work only through the test-utils's assistant.chat() method. | |
Don't add other class initiations into test-utils. Don't make modifications to internal variables in classes for the tests, just use the assistant.chat() method. Make all classes and functions public by default unless otherwise specified. Focus on integration tests that use real components. Avoid the "unknown" or "any" types, if possible. | |
<IMPORTANT> | |
Do NOT use mocks, use real dependencies. | |
DO NOT USE MOCKS, USE REAL DEPENDENCIES. | |
</IMPORTANT> | |
Keep code files to under 250 lines of length if possible. Use JSDoc documentation for all functions. | |
After making the new branch, keep pushing to it regularly with commit messages that are good summaries of the work that is done in that commit. | |
Write the least amount of code possible to complete the task. Write the cleanest, shortest, most elegant code possible that follows best software engineering practices. | |
<IMPORTANT> | |
Look through the entire codebase with searching keywords to make sure that you are not duplicating any functionality. | |
</IMPORTANT> | |
For all changes to actual application code (e.g. in Python or Javascript), add an appropriate test to the testing directory to make sure that the issue has been fixed. | |
Run the tests, and if they pass you are done! | |
You do NOT need to write new tests if there are only changes to documentation or configuration files. | |
When you think you have fixed the issue through code changes, please call the finish action to end the interaction. | |
16:42:47 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: RecallAction (id=-1) | |
16:42:47 - openhands:INFO: agent_controller.py:586 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Setting agent(CodeActAgent) state from AgentState.LOADING to AgentState.RUNNING | |
16:42:47 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: MessageAction | |
16:42:47 - openhands:INFO: agent_controller.py:774 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Agent not stepping because of pending action: RecallAction (id=2) | |
16:42:47 - openhands:INFO: resolve_issue.py:233 - **RecallAction** | |
QUERY: Please fix the following issue for the repository | |
16:42:47 - openhands:INFO: resolve_issue.py:233 - AgentStateChangedObservation(content='', agent_state='running', reason='', observation=<ObservationType.AGENT_STATE_CHANGED: 'agent_state_changed'>) | |
16:42:47 - openhands:INFO: resolve_issue.py:233 - **RecallObservation** | |
recall_type=RecallType.WORKSPACE_CONTEXT, repo_name=, repo_instructions=# How to Contribute ..., runtime_hosts={'http://localhost:52165': 52165, 'http://localhost:58308': 58308}, additional_agent_instructions=..., date=2025-04-23 | |
16:42:47 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: RecallAction (id=2) | |
16:42:47 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: RecallObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 0 GLOBAL STEP 0 | |
16:42:49 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:42:49 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: I'll help you fix the issue with tour requests where we're the listing agent. Let me start by exploring the codebase to understand the current implementation and what needs to be changed. | |
COMMAND: | |
find /workspace -type f -name "*.ts" | grep -i "tour\|showing" | sort | |
16:42:50 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts | |
/workspace/__tests__/property_tour_request.test.ts | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts | |
/workspace/__tests__/services/buyer_flow/perplexity_showing.test.ts | |
/workspace/__tests__/tour_test_utils.ts | |
/workspace/app/api/showing-request/[hash]/route.ts | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts | |
/workspace/lib/services/__tests__/setupExistingTour.test.ts | |
/workspace/lib/services/__tests__/showingRequest.test.ts | |
/workspace/lib/services/buyer_flow/__tests__/scheduleMultipleTours.test.ts | |
/workspace/lib/services/buyer_flow/showing.ts | |
/workspace/lib/services/drip_box/__tests__/tourFollowup.test.ts | |
/workspace/lib/services/drip_box/utils/tourFollowup.ts | |
/workspace/lib/services/realtor_flow/__tests__/realtor_tour_scenarios.test.ts | |
/workspace/lib/utils/__tests__/parseShowingTime.test.ts | |
/workspace/lib/utils/parseShowingTime.ts | |
/workspace/scripts/generate-showing-request-link.ts | |
/workspace/scripts/testing/schedule_showami_showing.ts | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:42:50 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=5) | |
16:42:50 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 1 GLOBAL STEP 1 | |
16:42:52 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:42:52 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me look at the buyer flow and realtor flow to understand the current tour process implementation. | |
COMMAND: | |
find /workspace -type f -name "*.ts" | grep -i "initateScheduleShowing\|negotiateShowingTime\|confirmShowingTime" | |
16:42:53 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:42:53 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=7) | |
16:42:53 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 2 GLOBAL STEP 2 | |
16:42:55 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:42:55 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me try a more general search to find the relevant files for the tour scheduling process. | |
COMMAND: | |
find /workspace -type f -name "*.ts" | xargs grep -l "initateScheduleShowing" 2>/dev/null || echo "No matches found" | |
16:42:56 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
No matches found | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:42:56 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=9) | |
16:42:56 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 3 GLOBAL STEP 3 | |
16:42:58 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:42:58 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check for the correct spelling of the function name. | |
COMMAND: | |
find /workspace -type f -name "*.ts" | xargs grep -l "initiateScheduleShowing" 2>/dev/null || echo "No matches found" | |
16:42:59 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts | |
/workspace/__tests__/services/buyer_flow/perplexity_showing.test.ts | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts | |
/workspace/lib/types/assistantTypes.ts | |
/workspace/lib/services/realEstate/prompts/talksToClientPrompt.ts | |
/workspace/lib/services/realEstate/core/toolCallCounts.ts | |
/workspace/lib/services/realEstate/core/chatMessageProcessor.ts | |
/workspace/lib/services/realEstate/core/ToolCallHandler.ts | |
/workspace/lib/services/realEstate/configs/clientTools.ts | |
/workspace/lib/services/buyer_flow/showing.ts | |
/workspace/lib/services/buyer_flow/buyer_flow.ts | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:42:59 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=11) | |
16:42:59 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 4 GLOBAL STEP 4 | |
16:43:01 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:43:01 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let me look at the other functions in the tour process. | |
COMMAND: | |
find /workspace -type f -name "*.ts" | xargs grep -l "negotiateShowingTime\|confirmShowingTime" 2>/dev/null || echo "No matches found" | |
16:43:01 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/__tests__/services/realtor_flow/maintain_client_number.test.ts | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts | |
/workspace/lib/services/realEstate/prompts/talksToClientPrompt.ts | |
/workspace/lib/services/realEstate/prompts/talksToRealtorPrompt.ts | |
/workspace/lib/services/realEstate/core/toolCallCounts.ts | |
/workspace/lib/services/realEstate/core/ToolCallHandler.ts | |
/workspace/lib/services/realEstate/configs/realtorTools.ts | |
/workspace/lib/services/realEstate/configs/clientTools.ts | |
/workspace/lib/services/realtor_flow/realtor_flow.ts | |
/workspace/lib/services/buyer_flow/buyer_flow.ts | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:43:01 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=13) | |
16:43:01 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 5 GLOBAL STEP 5 | |
16:43:04 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:04 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/buyer_flow/buyer_flow.ts', start=0, end=-1, thought='Let me examine the buyer flow and realtor flow implementations to understand the current tour process.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:04 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/buyer_flow/buyer_flow.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/buyer_flow/buyer_flow.ts: | |
1 import { ClientAssistantCreator } from '../realEstate/openai_assistant_init/clientAssistantCreator' | |
2 import { generateShowingMessageToClient, ShowingService, checkIfShowingAlreadyScheduled } from './showing' | |
3 import { PropertyService } from './property' | |
4 import { ExternalService } from './external' | |
5 import { | |
6 CLIENT_TALKER_TOOLS, | |
7 ADMIN_CLIENT_TALKER_TOOLS | |
8 } from '../realEstate/configs/clientTools' | |
9 import { AssistantTool } from '@/lib/types/openaiTypes' | |
10 import { IBaseFlow } from '@/lib/types/flow' | |
11 import { formatMessagesAsXml } from '../realEstate/core/messageFormatter' | |
12 import { traceClass } from '@/lib/utils/trace' | |
13 import { | |
14 supabaseClient, | |
15 getClientByPhone, | |
16 findListingAgentByPropertyZpid, | |
17 propertyExistsForUser, | |
18 getPropertyShowingTimes, | |
19 getClientCurrentProperty, | |
20 getAgentPhoneByPropertyZpid, | |
21 getClientByEmail, | |
22 getClientsByName, | |
23 updateUserCurrentProperty, | |
24 updateClientProposedShowingTime, | |
25 checkNumberOfTours | |
26 } from '@/lib/services/shared/supabaseClient' | |
27 import { confirmPropertyShowingTime } from '@/lib/services/shared/supabase/properties' | |
28 import { | |
29 extractPhoneNumber, | |
30 extractEmailAddress, | |
31 extractAllPhoneNumbers | |
32 } from '@/lib/services/shared/phoneUtils' | |
33 import { notifyAdmins, formatMessageAsHtml } from '@/lib/twilioUtils' | |
34 import dayjs from '@/lib/utils/dates' | |
35 import { | |
36 scheduleFollowUpTextDate, | |
37 scheduleFollowUpTextDates, | |
38 scheduleFollowUpTexts, | |
39 } from '../realEstate/core/followUp' | |
40 import { ListingAgentManager } from '../realEstate/core/listingAgentManager' | |
41 import type { | |
42 PropertyDetails, | |
43 SimplifiedPropertyDetails | |
44 } from '../../types/property' | |
45 import { convertToSimplifiedPropertyDetails } from '../zillow_ops/zil' | |
46 import { callAnthropicModel } from '../realEstate/core/callModel' | |
47 import { convertShortAddressToFullAddress } from '../realEstate/convertClientAddressToFullAddress' | |
48 import { neighborhoodMarketReportByAddress } from '../redfin_utils/rapidapi_redf' | |
49 import { getShowingTimesByDate } from '../calendar/supabaseCalendar' | |
50 import { createCalendarEvent } from '../calendar/zapierCalendar' | |
51 import { SharedState } from '../realEstate/core/sharedState' | |
52 import { Phones } from '../realEstate/constants/phoneNumbers' | |
53 import { sendShowamiCalendarLink } from '../calendar/zapierCalendar' | |
54 import { getPropertyByZpid } from '../shared/supabase/properties' | |
55 import { getZpidFromAddress } from '../serper_ops/ser' | |
56 | |
57 /** | |
58 * Parameters for initiating a showing schedule | |
59 */ | |
60 export type InitiateScheduleShowingParams = { | |
61 /** Address of the property to show */ | |
62 address: string; | |
63 /** Preferred showing time */ | |
64 showingTime: string; | |
65 /** Client's name */ | |
66 clientName: string; | |
67 /** Client's email address */ | |
68 email: string; | |
69 /** Phone number of the message sender */ | |
70 senderPhoneNumber: string; | |
71 /** Last message received (optional) */ | |
72 lastMessage?: string; | |
73 /** Whether this is a test run */ | |
74 isTest?: boolean; | |
75 /** Optional override for agent name */ | |
76 overrideAgentName?: string; | |
77 /** Optional override for agent phone number */ | |
78 overrideAgentNumber?: string; | |
79 }; | |
80 | |
81 /** | |
82 * Parameters for logging a property of interest | |
83 */ | |
84 export type LogPropertyOfInterestParams = { | |
85 /** Address of the property */ | |
86 address: string; | |
87 /** Whether to introduce self to agent */ | |
88 introSelfToAgent?: boolean; | |
89 /** Detailed property information */ | |
90 propertyDetails?: PropertyDetails; | |
91 /** Optional override for agent name */ | |
92 overrideAgentName?: string; | |
93 /** Optional override for agent phone number */ | |
94 overrideAgentNumber?: string; | |
95 }; | |
96 | |
97 /** | |
98 * Result of processing client information | |
99 */ | |
100 type ProcessClientInfoResult = { | |
101 /** Client's phone number */ | |
102 clientPhone: string | undefined; | |
103 /** Client's email address */ | |
104 email: string; | |
105 /** Override agent name if specified */ | |
106 overrideAgentName: string; | |
107 /** Override agent number if specified */ | |
108 overrideAgentNumber: string; | |
109 }; | |
110 | |
111 /** | |
112 * BuyerFlow class handles interactions with homebuyers via text messages. | |
113 * It uses AI to understand and respond to buyer queries about properties, | |
114 * showings, market conditions, and other real estate needs. The class | |
115 * integrates with various services to provide comprehensive assistance: | |
116 * | |
117 * - Property searches and information retrieval | |
118 * - Scheduling property showings | |
119 * - Market analysis and comparisons | |
120 * - External data integration (MLS, Zillow, etc.) | |
121 * | |
122 * The goal is to provide an AI-powered experience that scales real estate | |
123 * operations while maintaining high quality service for homebuyers. | |
124 */ | |
125 | |
126 export class BuyerFlow implements IBaseFlow { | |
127 public oa!: ClientAssistantCreator | |
128 public showingService: ShowingService | |
129 public propertyService: PropertyService | |
130 public externalService: ExternalService | |
131 public tools: AssistantTool[] = CLIENT_TALKER_TOOLS | |
132 public adminTools: AssistantTool[] = ADMIN_CLIENT_TALKER_TOOLS | |
133 public sharedState: SharedState | |
134 | |
135 public constructor(sharedState: SharedState) { | |
136 this.sharedState = sharedState | |
137 this.showingService = new ShowingService(this.sharedState) | |
138 this.propertyService = new PropertyService(this.sharedState) | |
139 this.externalService = new ExternalService() | |
140 } | |
141 | |
142 public static async create(sharedState: SharedState): Promise<BuyerFlow> { | |
143 const instance = new BuyerFlow(sharedState) | |
144 return instance | |
145 } | |
146 | |
147 async convertShortAddressToFullAddress( | |
148 address: string, | |
149 senderPhoneNumber: string | |
150 ): Promise<{ fullAddress: string; isExistingProperty: boolean }> { | |
151 const longAddress = await convertShortAddressToFullAddress(address, senderPhoneNumber) | |
152 this.sharedState.addressesReferenced.push(longAddress.fullAddress) | |
153 return longAddress | |
154 } | |
155 | |
156 // Keep buyer-specific methods | |
157 async pullRealtorMessages(agentNumber: string): Promise<string> { | |
158 // Get the realtor's messages from the thread | |
159 const messages = | |
160 await this.sharedState.messagingService.dbManager.getLastMessages({ | |
161 userPhone: agentNumber | |
162 }) | |
163 | |
164 // Format messages as XML using common formatter | |
165 return formatMessagesAsXml(messages, 'realtor') | |
166 } | |
167 | |
168 /** | |
169 * Processes client information from an admin message to identify the client | |
170 * This method handles extracting client phone numbers, email addresses, | |
171 * and agent override information from admin messages | |
172 * | |
173 * @param senderPhoneNumber - The phone number of the message sender | |
174 * @param lastMessage - The last message received containing client info | |
175 * @param clientName - The client's name if provided | |
176 * @param initialEmail - The client's email if provided | |
177 * @param isTest - Whether this is a test run | |
178 * @param initialOverrideAgentName - Initial override agent name if provided | |
179 * @param initialOverrideAgentNumber - Initial override agent number if provided | |
180 * @returns Object with identified client phone, email, and agent override info | |
181 */ | |
182 private async processProvidedClientInfo({ | |
183 senderPhoneNumber, | |
184 lastMessage, | |
185 clientName, | |
186 initialEmail, | |
187 isTest = false, | |
188 initialOverrideAgentName = 'None', | |
189 initialOverrideAgentNumber = 'None' | |
190 }: { | |
191 senderPhoneNumber: string; | |
192 lastMessage?: string; | |
193 clientName: string; | |
194 initialEmail: string; | |
195 isTest?: boolean; | |
196 initialOverrideAgentName?: string; | |
197 initialOverrideAgentNumber?: string; | |
198 }): Promise<ProcessClientInfoResult> { | |
199 let clientPhone: string | undefined; | |
200 let email = initialEmail; | |
201 let overrideAgentName = initialOverrideAgentName; | |
202 let overrideAgentNumber = initialOverrideAgentNumber; | |
203 | |
204 // For non-admin senders, they are the client | |
205 if (!Phones.isAdmin(senderPhoneNumber)) { | |
206 clientPhone = senderPhoneNumber; | |
207 return { clientPhone, email, overrideAgentName, overrideAgentNumber }; | |
208 } | |
209 | |
210 // Admin sender - need to extract client info from message | |
211 if (lastMessage) { | |
212 if (isTest) { | |
213 // For test cases, extract phone numbers starting with '+' until non-alphanumeric char | |
214 const testPhoneMatch = lastMessage.match(/\+[a-zA-Z0-9_]+/) | |
215 clientPhone = testPhoneMatch ? testPhoneMatch[0] : undefined | |
216 } else { | |
217 // For production, extract regular phone numbers | |
218 const regexMatch = lastMessage.match(/\d{10,11}/) | |
219 const processedString = regexMatch ? regexMatch[0] : '' | |
220 clientPhone = extractPhoneNumber(processedString) || undefined | |
221 | |
222 // Check if message contains "override agent" phrase | |
223 if ( | |
224 overrideAgentName === 'None' && | |
225 overrideAgentNumber === 'None' && | |
226 lastMessage.toLowerCase().includes('override agent') | |
227 ) { | |
228 // Extract all phone numbers from the message | |
229 const phoneNumbers = extractAllPhoneNumbers(lastMessage) | |
230 | |
231 // If we have at least 2 phone numbers, use the second one as override agent number | |
232 if (phoneNumbers.length >= 2) { | |
233 overrideAgentNumber = phoneNumbers[1] | |
234 | |
235 // Use Anthropic to extract the agent name | |
236 const prompt = `Extract only the name of the override agent from this text. Return just the name, nothing else: "${lastMessage}"` | |
237 overrideAgentName = await callAnthropicModel({ | |
238 input: prompt, | |
239 timeoutMs: 60000, | |
240 cost_description: "buyer_flow_override_agent_name" | |
241 }) | |
242 | |
243 console.log( | |
244 `Override agent detected - Name: ${overrideAgentName}, Number: ${overrideAgentNumber}` | |
245 ) | |
246 } | |
247 } | |
248 } | |
249 | |
250 // If no phone number found, try to extract email | |
251 if (!clientPhone) { | |
252 const extractedEmail = extractEmailAddress(lastMessage) | |
253 | |
254 if (extractedEmail) { | |
255 // Look up user by email | |
256 const emailUser = await getClientByEmail(extractedEmail) | |
257 | |
258 if (emailUser) { | |
259 clientPhone = emailUser.phone_number | |
260 // Use email if provided in function params, or extracted one | |
261 email = email || extractedEmail | |
262 } | |
263 } | |
264 } | |
265 | |
266 // If still no phone or email, try to find by name | |
267 if (!clientPhone && clientName !== 'None') { | |
268 // If no phone number or email found, try to find user by name | |
269 const nameParts = clientName.split(' ') | |
270 const firstName = nameParts[0].trim() | |
271 const lastName = | |
272 nameParts.length > 1 ? nameParts.slice(1).join(' ').trim() : '' | |
273 | |
274 const matchingUsers = await getClientsByName( | |
275 firstName, | |
276 lastName ? lastName : undefined | |
277 ) | |
278 | |
279 if (!matchingUsers || matchingUsers.length === 0) { | |
280 if (!isTest) { | |
281 await notifyAdmins( | |
282 senderPhoneNumber, | |
283 `No user found with name: ${clientName}`, | |
284 '/api/inbound' | |
285 ) | |
286 } | |
287 throw new Error(`No user found with name: ${clientName}`) | |
288 } else if (matchingUsers.length > 1 && !lastName) { | |
289 // Multiple users with same first name and no last name provided | |
290 await notifyAdmins( | |
291 senderPhoneNumber, | |
292 `Multiple users found with first name "${firstName}". Please schedule the showing again with both first and last name.`, | |
293 '/api/inbound' | |
294 ) | |
295 throw new Error(`Multiple users found with first name: ${firstName}`) | |
296 } else { | |
297 // Single user found or exact match with full name | |
298 clientPhone = matchingUsers[0].phone_number | |
299 } | |
300 } | |
301 } | |
302 | |
303 return { clientPhone, email, overrideAgentName, overrideAgentNumber }; | |
304 } | |
305 | |
306 /** | |
307 * Entry point for scheduling a showing | |
308 * This method handles pre-processing of the address and extracting client information | |
309 * before delegating to the showing service | |
310 * @param params Object containing all parameters for scheduling a showing | |
311 */ | |
312 async initiateScheduleShowing(params: InitiateScheduleShowingParams): Promise<string> { // TODO: if the showing has already been scheduled, then move straight into the negotiate function. | |
313 const { | |
314 address, | |
315 showingTime, | |
316 clientName, | |
317 email: initialEmail, | |
318 senderPhoneNumber, | |
319 lastMessage, | |
320 isTest = false, | |
321 overrideAgentName: initialOverrideAgentName = 'None', | |
322 overrideAgentNumber: initialOverrideAgentNumber = 'None' | |
323 } = params | |
324 // TODO: if you've already scheduled a showing, then move straight into the negotiate function. | |
325 // Debug shared state | |
326 console.log('BuyerFlow.initiateScheduleShowing sharedState:', { | |
327 hasUser: !!this.sharedState.client, | |
328 clientNumber: this.sharedState.client?.phone_number, | |
329 senderPhoneNumber | |
330 }); | |
331 | |
332 // Process client information to identify the client | |
333 const { clientPhone, email, overrideAgentName, overrideAgentNumber } = | |
334 await this.processProvidedClientInfo({ | |
335 senderPhoneNumber, | |
336 lastMessage, | |
337 clientName, | |
338 initialEmail, | |
339 isTest, | |
340 initialOverrideAgentName, | |
341 initialOverrideAgentNumber | |
342 }); | |
343 | |
344 if (!clientPhone) { | |
345 throw new Error('Could not determine client phone number') | |
346 } | |
347 | |
348 // Handle addresses with a dash | |
349 let processedAddress = address | |
350 const dashIndex = address.indexOf('-') | |
351 if (dashIndex !== -1) { | |
352 const spaceIndex = address.indexOf(' ', dashIndex) | |
353 if (spaceIndex !== -1) { | |
354 processedAddress = | |
355 address.substring(0, dashIndex) + address.substring(spaceIndex) | |
356 } | |
357 } | |
358 const isShorthand = await callAnthropicModel({ | |
359 input: `Determine if the address ${processedAddress} is a shorthand address (123 main) vs a full address (123 main st, San Francisco, CA 94100). If it is shorthand, return "true". If it is not, return "false". Do not return any other text besides "true" or "false".`, | |
360 timeoutMs: 60000, | |
361 cost_description: "buyer_flow_is_shorthand_address" | |
362 }) | |
363 if (isShorthand === 'true') { | |
364 const { fullAddress, isExistingProperty } = | |
365 await convertShortAddressToFullAddress( | |
366 processedAddress, | |
367 senderPhoneNumber | |
368 ) | |
369 processedAddress = fullAddress | |
370 } else { | |
371 this.sharedState.addressesReferenced.push(processedAddress) | |
372 } | |
373 | |
374 // if it is, try to convert it to a full address using the other addresses in the mr_properties for this user | |
375 // if that address can't be found, then use the perplexity api to try and find its zillow link. from its zillow link, pull its property details | |
376 let propertyDetails = | |
377 await this.propertyService.getAllPropertyDetails(processedAddress) | |
378 // Check if the showing has already been scheduled | |
379 const showingResult = await checkIfShowingAlreadyScheduled(propertyDetails.zpid!, clientPhone) | |
380 | |
381 // If showing is already scheduled, redirect to negotiation | |
382 if (showingResult.isScheduled) { | |
383 // Prepare message with showing time information | |
384 let timeInfoMsg = `New showing time requested by client: ${showingTime}\n\n`; | |
385 if (showingResult.agentProposedTime && showingResult.clientProposedTime) { | |
386 // Both times exist | |
387 timeInfoMsg = `(agent previously proposed: ${showingResult.agentProposedTime}, client previously proposed: ${showingResult.clientProposedTime}) \n\n If these are the same time, confirm the showing with the client with the confirmShowingWithAgent function. If these are not the same time, negotiate the new time with the client with the negotiateShowingTimeWithAgent function.`; | |
388 } else if (showingResult.agentProposedTime) { | |
389 // Only agent time exists | |
390 timeInfoMsg = ` (previously scheduled by agent for ${showingResult.agentProposedTime})\n\n If this is the same time as the new request, confirm the showing with the client with the confirmShowingWithAgent function. If this is not the same time as the new request, negotiate the new time with the client with the negotiateShowingTimeWithAgent function.`; | |
391 } else if (showingResult.clientProposedTime) { | |
392 // Only client time exists | |
393 timeInfoMsg = ` (previously requested by client for ${showingResult.clientProposedTime})\n\n If this is the same time as the new request, confirm the showing with the client with<response clipped><NOTE>Due to the max output limit, only part of this file has been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.</NOTE> | |
16:43:04 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: FileReadAction (id=15) | |
16:43:04 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 6 GLOBAL STEP 6 | |
16:43:10 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:43:10 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me search for the relevant functions in the buyer flow and realtor flow files. | |
COMMAND: | |
grep -n "initiateScheduleShowing\|negotiateShowingTime\|confirmShowingTime" /workspace/lib/services/buyer_flow/buyer_flow.ts /workspace/lib/services/realtor_flow/realtor_flow.ts | |
16:43:10 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:312: async initiateScheduleShowing(params: InitiateScheduleShowingParams): Promise<string> { // TODO: if the showing has already been scheduled, then move straight into the negotiate function. | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:326: console.log('BuyerFlow.initiateScheduleShowing sharedState:', { | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:387: timeInfoMsg = `(agent previously proposed: ${showingResult.agentProposedTime}, client previously proposed: ${showingResult.clientProposedTime}) \n\n If these are the same time, confirm the showing with the client with the confirmShowingWithAgent function. If these are not the same time, negotiate the new time with the client with the negotiateShowingTimeWithAgent function.`; | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:390: timeInfoMsg = ` (previously scheduled by agent for ${showingResult.agentProposedTime})\n\n If this is the same time as the new request, confirm the showing with the client with the confirmShowingWithAgent function. If this is not the same time as the new request, negotiate the new time with the client with the negotiateShowingTimeWithAgent function.`; | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:393: timeInfoMsg = ` (previously requested by client for ${showingResult.clientProposedTime})\n\n If this is the same time as the new request, confirm the showing with the client with the confirmShowingWithAgent function. If this is not the same time as the new request, negotiate the new time with the client with the negotiateShowingTimeWithAgent function.`; | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:503: return await this.showingService.initiateScheduleShowing({ | |
/workspace/lib/services/buyer_flow/buyer_flow.ts:693: async negotiateShowingTimeWithAgent( // TODO: if this is a showami, find the showami showing agent and text them | |
/workspace/lib/services/realtor_flow/realtor_flow.ts:59: async negotiateShowingTimeWithClient({ | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:43:10 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=17) | |
16:43:10 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 7 GLOBAL STEP 7 | |
16:43:13 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:13 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/buyer_flow/showing.ts', start=0, end=-1, thought='Let me check the showing service implementation to understand how the tour scheduling works.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:13 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/buyer_flow/showing.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/buyer_flow/showing.ts: | |
1 import { mr_properties_Row, PropertyDetails } from '../../types/property' | |
2 import { ListingAgentManager } from '../realEstate/core/listingAgentManager' | |
3 import { | |
4 supabaseClient, | |
5 getClientByPhone, | |
6 getLatestMessage | |
7 } from '../shared/supabaseClient' | |
8 import { getShorthandAddress } from '@/lib/utils/getShorthandAddress' | |
9 import { parseShowingTime } from '@/lib/utils/parseShowingTime' | |
10 import { scheduleFollowUpTexts } from '../realEstate/core/followUp' | |
11 import { Phones } from '../realEstate/constants/phoneNumbers' | |
12 import dayjs from 'dayjs' | |
13 import timezone from 'dayjs/plugin/timezone' | |
14 import utc from 'dayjs/plugin/utc' | |
15 import { MR_ListingAgent, MR_User } from '@/lib/types/sbPeople' | |
16 import { mr_messages } from '@/lib/types/messages' | |
17 import { SharedState } from '../realEstate/core/sharedState' | |
18 import { ShowamiScheduler } from '../calendar/showamiScheduler' | |
19 import { getAllPropertyDetails } from '../zillow_ops/zil' | |
20 import { get_info_by_hash } from '../../assistantCache'; | |
21 | |
22 // Extend dayjs with timezone plugin | |
23 dayjs.extend(utc) | |
24 dayjs.extend(timezone) | |
25 | |
26 /** | |
27 * Checks if a showing has already been scheduled for a user and property | |
28 * @param address The property address to check | |
29 * @param phoneNumber The client's phone number | |
30 * @returns Object indicating if a showing is scheduled and scheduled times if they exist | |
31 */ | |
32 export const checkIfShowingAlreadyScheduled = async ( | |
33 zpid: string, | |
34 phoneNumber: string | |
35 ): Promise<{ | |
36 isScheduled: boolean; | |
37 scheduledTime?: string; | |
38 clientProposedTime?: string; | |
39 agentProposedTime?: string; | |
40 }> => { | |
41 try { | |
42 // First find the user by phone number to get the user_id | |
43 const client = await getClientByPhone(phoneNumber) | |
44 | |
45 if (!client || !client.user_id) { | |
46 // If user doesn't exist, there can't be a scheduled showing | |
47 return { isScheduled: false }; | |
48 } | |
49 | |
50 // Query mr_properties to see if a property with this address exists for this user | |
51 const { data: properties, error } = await supabaseClient | |
52 .from('mr_properties') | |
53 .select('*') | |
54 .eq('mr_users_id', client.user_id) | |
55 .eq('zpid', zpid) | |
56 .overrideTypes<mr_properties_Row[], { merge: false }>() | |
57 | |
58 if (error) { | |
59 console.error('Error checking for scheduled showing:', error) | |
60 return { isScheduled: false }; | |
61 } | |
62 | |
63 // Look for scheduled showings | |
64 const scheduledProperty = properties.find(property => | |
65 property.client_proposed_showing_time !== null || | |
66 property.agent_proposed_showing_time !== null | |
67 ); | |
68 | |
69 if (!scheduledProperty) { | |
70 return { isScheduled: false }; | |
71 } | |
72 | |
73 // Format each time if they exist | |
74 let clientProposedTime: string | undefined = undefined; | |
75 let agentProposedTime: string | undefined = undefined; | |
76 | |
77 if (scheduledProperty.client_proposed_showing_time) { | |
78 clientProposedTime = dayjs(scheduledProperty.client_proposed_showing_time) | |
79 .tz('America/Los_Angeles', true) | |
80 .format('YYYY-MM-DD HH:mm'); | |
81 } | |
82 | |
83 if (scheduledProperty.agent_proposed_showing_time) { | |
84 agentProposedTime = dayjs(scheduledProperty.agent_proposed_showing_time) | |
85 .tz('America/Los_Angeles', true) | |
86 .format('YYYY-MM-DD HH:mm'); | |
87 } | |
88 | |
89 // Use agent time if available for the main scheduledTime, otherwise use client time | |
90 const scheduledTime = agentProposedTime || clientProposedTime; | |
91 | |
92 return { | |
93 isScheduled: true, | |
94 scheduledTime, | |
95 clientProposedTime, | |
96 agentProposedTime | |
97 }; | |
98 } catch (error) { | |
99 console.error('Error in checkIfShowingAlreadyScheduled:', error) | |
100 return { isScheduled: false }; | |
101 } | |
102 } | |
103 | |
104 /** | |
105 * Generates a showing request message to send to listing agents | |
106 * @param options Options for generating the showing request message | |
107 * @returns Formatted showing request message | |
108 */ | |
109 export const generateShowingMessageToListingAgent = async (options: { | |
110 listingAgentName: string; | |
111 cleanAddress: string; | |
112 formattedTime: string; | |
113 listingAgentPhone: string; | |
114 }): Promise<string> => { | |
115 const { listingAgentName, cleanAddress, formattedTime, listingAgentPhone } = options; | |
116 | |
117 const latestMessageResult = await getLatestMessage({ phone: listingAgentPhone }) | |
118 const latestMessage = Array.isArray(latestMessageResult) && latestMessageResult.length > 0 ? latestMessageResult[0] : null | |
119 | |
120 const isFirstTime = !latestMessage | |
121 const intro = isFirstTime | |
122 ? `Hey ${listingAgentName.split(' ')[0]}, Raffi Isanians at Kingston Vale Realty. ` | |
123 : '' | |
124 | |
125 return [ | |
126 intro, | |
127 `Have a client interested in your ${cleanAddress} listing.`, | |
128 `Any chance they can come by and see it ${formattedTime}?`, | |
129 'Any showing instructions / any additional context?' | |
130 ] | |
131 .filter(Boolean) | |
132 .join(' ') | |
133 } | |
134 | |
135 /** | |
136 * Generates a showing confirmation message to send to clients | |
137 * @param options Options for generating the client confirmation message | |
138 * @returns Formatted confirmation message for client | |
139 */ | |
140 export const generateShowingMessageToClient = async (options: { | |
141 cleanAddress: string; | |
142 clientPhone: string; | |
143 formattedTime?: string; | |
144 firstName?: string; | |
145 }): Promise<string> => { | |
146 const { cleanAddress, clientPhone, formattedTime, firstName } = options; | |
147 | |
148 const { data: existingMessages } = await supabaseClient | |
149 .from('mr_messages') | |
150 .select('*') | |
151 .or( | |
152 `sender_phone_number.eq.${clientPhone},receiver_phone_number.eq.${clientPhone}` | |
153 ) | |
154 .neq('status', 'draft') | |
155 .limit(1) | |
156 .overrideTypes<mr_messages[], { merge: false }>() | |
157 | |
158 const isFirstTime = !existingMessages || existingMessages.length === 0 | |
159 const greeting = firstName ? `Hi ${firstName}, ` : 'Hey, ' | |
160 const intro = isFirstTime | |
161 ? `${greeting}I'm Raffi Isanians, your Zillow Premier Agent Realtor you scheduled a home tour with. ` | |
162 : '' | |
163 | |
164 const timeMessage = formattedTime | |
165 ? `to arrange a tour for ${formattedTime}` | |
166 : 'to arrange a tour' | |
167 | |
168 return formattedTime | |
169 ? `${intro}I've contacted the seller for ${cleanAddress} ${timeMessage}. I'll let you know once they confirm the appointment.` | |
170 : `${intro}I'd love to show you ${cleanAddress}. When would you like to go see it?` | |
171 } | |
172 | |
173 /** | |
174 * Listing agent scheduler for property showings | |
175 */ | |
176 class ListingAgentScheduler { | |
177 private sharedState: SharedState | |
178 private listingAgentManager: ListingAgentManager | |
179 private RAFFI_PHOTO = | |
180 'https://media.marketreactor.com/images/mr/raffi_headshot.jpg' | |
181 | |
182 constructor(sharedState: SharedState) { | |
183 this.sharedState = sharedState | |
184 this.listingAgentManager = new ListingAgentManager() | |
185 } | |
186 | |
187 /** | |
188 * Schedule showing with regular agent communication | |
189 * @param options Options for scheduling a showing with a listing agent | |
190 * @returns Result message | |
191 */ | |
192 async scheduleShowing(options: { | |
193 address: string; | |
194 showingTime: string; | |
195 propertyDetails: PropertyDetails; | |
196 clientName: string; | |
197 clientPhone: string; | |
198 isShowami?: boolean; | |
199 email?: string; | |
200 isTest?: boolean; | |
201 overrideListingAgentName?: string; | |
202 overrideListingAgentNumber?: string; | |
203 }): Promise<string> { | |
204 const { | |
205 address, | |
206 showingTime, | |
207 propertyDetails, | |
208 clientName, | |
209 clientPhone, | |
210 isShowami = false, | |
211 email, | |
212 isTest = false, | |
213 overrideListingAgentName = 'None', | |
214 overrideListingAgentNumber = 'None' | |
215 } = options; | |
216 | |
217 try { | |
218 // Debug shared state access in ListingAgentScheduler | |
219 console.log('ListingAgentScheduler.scheduleShowing - sharedState:', { | |
220 hasUser: !!this.sharedState.client, | |
221 clientNumber: this.sharedState.client?.phone_number, | |
222 clientPhone | |
223 }); | |
224 | |
225 // Then check/create user record | |
226 const existingUser = await getClientByPhone(clientPhone) | |
227 | |
228 const cleanAddress = address.replace(', USA', '') | |
229 const shorthandAddress = await getShorthandAddress(cleanAddress) | |
230 | |
231 // Use override agent name if provided, otherwise use property details | |
232 const listingAgentName = | |
233 overrideListingAgentName !== 'None' | |
234 ? overrideListingAgentName | |
235 : propertyDetails.attributionInfo?.agentName || 'Unknown Listing Agent' | |
236 | |
237 // Handle user data differently for new vs existing users | |
238 let userResult | |
239 if (existingUser) { | |
240 // Update existing user | |
241 userResult = await supabaseClient | |
242 .from('mr_users') | |
243 .update({ current_property: address }) | |
244 .eq('phone_number', clientPhone) | |
245 .select() | |
246 .overrideTypes<MR_User[], { merge: false }>() | |
247 } else { | |
248 // Create new user without previously_texted field | |
249 const userData = { | |
250 current_property: address, | |
251 preferred_address: address, | |
252 first_name: | |
253 clientName !== 'None' ? clientName.split(' ')[0].trim() : 'Unknown', | |
254 last_name: | |
255 clientName !== 'None' | |
256 ? clientName.split(' ').slice(1).join(' ').trim() | |
257 : '', | |
258 phone_number: clientPhone, | |
259 do_not_text: false, | |
260 ...(email && { email }) | |
261 } | |
262 | |
263 userResult = await supabaseClient | |
264 .from('mr_users') | |
265 .insert(userData) | |
266 .select() | |
267 .overrideTypes<MR_User[], { merge: false }>() | |
268 } | |
269 | |
270 if (!userResult.data?.[0]?.user_id) { | |
271 throw new Error('Failed to create or retrieve user record') | |
272 } | |
273 | |
274 // Validate showing time | |
275 let formattedTime = '' | |
276 let parsedTime: dayjs.Dayjs | null = null | |
277 let timeError: string | null = null | |
278 | |
279 const result = await parseShowingTime(showingTime) | |
280 parsedTime = result.parsedTime // this is the dayjs object time thing | |
281 formattedTime = result.formattedTime || '' // this is the nice english time to put into a sentence | |
282 timeError = result.error | |
283 | |
284 if (timeError || !formattedTime || !parsedTime) { | |
285 formattedTime = '' | |
286 } | |
287 | |
288 if (!propertyDetails || propertyDetails.homeStatus !== 'FOR_SALE') { | |
289 this.sharedState.messagingService.createDraft({ | |
290 sendToPhone: clientPhone, | |
291 content: `Hi ${clientName}, this is Raffi Isanians, your Zillow Premier Agent. I saw that you just scheduled a showing for ${address}, but that property is not currently for sale. What would you like to do?` | |
292 }) | |
293 return `This property at ${address} is not for sale` | |
294 } | |
295 | |
296 // Create or update listing agent record | |
297 let listingAgent: MR_ListingAgent | null | |
298 | |
299 // Use override agent information if provided | |
300 if (overrideListingAgentName !== 'None' && overrideListingAgentNumber !== 'None') { | |
301 listingAgent = await this.listingAgentManager.addAgent( | |
302 propertyDetails, | |
303 userResult.data[0], | |
304 overrideListingAgentName, | |
305 overrideListingAgentNumber | |
306 ) | |
307 } else { | |
308 // Use the normal listing agent lookup process | |
309 listingAgent = await this.listingAgentManager.addAgent( | |
310 propertyDetails, | |
311 userResult.data[0] | |
312 ) | |
313 } | |
314 | |
315 if (!listingAgent?.phone_number) { | |
316 console.error('Could not get listing agent phone number for property:', address) | |
317 // TODO: Send error message to admin? | |
318 return "Could not find listing agent contact info." | |
319 } | |
320 | |
321 // Create property record and get MLS number | |
322 const zpid = await this.listingAgentManager.addProperty({ | |
323 propertyDetails, | |
324 mr_user: userResult.data[0], | |
325 agent: listingAgent, | |
326 showingTime: parsedTime?.toDate(), | |
327 isShowami, | |
328 isTest | |
329 }) | |
330 | |
331 console.log('zpid', zpid) | |
332 if (isNaN(Number(zpid)) && !zpid.startsWith('test_')) { | |
333 throw new Error( | |
334 'Invalid zpid number. Something has gone wrong with the zpid number retrieval.' | |
335 ) | |
336 } | |
337 | |
338 // Get MLS number once | |
339 const mlsNumber = | |
340 propertyDetails.mlsid || propertyDetails?.attributionInfo?.mlsId | |
341 | |
342 // First update the user record with the ZPID | |
343 const userUpdateResult = await supabaseClient | |
344 .from('mr_users') | |
345 .update({ | |
346 current_property: address, | |
347 current_property_mls: mlsNumber, | |
348 current_property_zpid: zpid, | |
349 current_property_agent_phone: listingAgent.phone_number | |
350 }) | |
351 .eq('user_id', userResult.data[0].user_id) | |
352 | |
353 if (userUpdateResult.error) throw userUpdateResult.error | |
354 | |
355 // Then update the agent record with the same ZPID | |
356 const listingAgentUpdateResult = await supabaseClient | |
357 .from('mr_listingagents') | |
358 .update({ | |
359 current_property: address, | |
360 current_property_mls: mlsNumber, | |
361 current_property_zpid: zpid, | |
362 current_mr_users_phone_number: clientPhone | |
363 }) | |
364 .eq('agent_id', listingAgent.agent_id) | |
365 | |
366 if (!listingAgent?.agent_id) { | |
367 console.error('Listing agent object missing agent_id for update:', listingAgent) | |
368 throw new Error('Cannot update listing agent without agent_id') | |
369 } | |
370 | |
371 if (listingAgentUpdateResult.error) throw listingAgentUpdateResult.error | |
372 | |
373 // Prepare client's first name if available | |
374 const firstName = | |
375 clientName !== 'None' ? clientName.split(' ')[0].trim() : '' | |
376 | |
377 // Send messages | |
378 const clientMessage = await generateShowingMessageToClient({ | |
379 cleanAddress, | |
380 clientPhone, | |
381 formattedTime, | |
382 firstName | |
383 }) | |
384 | |
385 // Use shorthand address with listing agent to sound less ai-ish | |
386 const listingAgentMessage = await generateShowingMessageToListingAgent({ | |
387 listingAgentName, | |
388 cleanAddress: shorthandAddress, | |
389 formattedTime, | |
390 listingAgentPhone: listingAgent.phone_number! | |
391 }) | |
392 | |
393 await Promise.all([ | |
394 this.sharedState.messagingService.createDraft({ | |
395 sendToPhone: clientPhone, | |
396 content: clientMessage | |
397 }), | |
398 this.sharedState.messagingService.createDraft({ | |
399 sendToPhone: listingAgent.phone_number!, | |
400 content: listingAgentMessage, | |
401 imageUrl: this.RAFFI_PHOTO | |
402 }) | |
403 ]) | |
404 | |
405 if (!isTest) { | |
406 // Schedule follow-up texts for both agent and client | |
407 try { | |
408 if (!this.sharedState.isTest) { | |
409 await scheduleFollowUpTexts([ | |
410 { | |
411 delay: '2h', | |
412 message: `follow up ${listingAgent.phone_number} [2h] Ask again if this listing agent can do a showing for ${address} at ${formattedTime}.` | |
413 } | |
414 ]) | |
415 } | |
416 } catch (err) { | |
417 console.error('Error scheduling follow-up texts:', err) | |
418 } | |
419 } | |
420 | |
421 return "Showing messages sent to agent and client. This doesn't mean the showing is confirmed yet." | |
422 } catch (error) { | |
423 console.error('Error in initiateScheduleShowing:', error) | |
424 throw error | |
425 } | |
426 } | |
427 } | |
428 | |
429 /** | |
430 * Showami third-party service scheduler for property showings | |
431 */ | |
432 class ShowamiSchedulingService { | |
433 private sharedState: SharedState | |
434 private showamiApiKey: string | |
435 private showamiCredentials: { email: string; password: string } | |
436 | |
437 constructor( | |
438 sharedState: SharedState, | |
439 apiKey: string = process.env.SHOWAMI_API_KEY || '', | |
440 credentials = { | |
441 email: process.env.SHOWAMI_EMAIL || '', | |
442 password: process.env.SHOWAMI_PASSWORD || '' | |
443 } | |
444 ) { | |
445 this.sharedState = sharedState | |
446 this.showamiApiKey = apiKey | |
447 this.showamiCredentials = credentials | |
448 } | |
449 | |
450 /** | |
451 * Schedule showing with Showami third-party showing service | |
452 * @param options Options for scheduling a showing with Showami | |
453 * @returns Result message | |
454 */ | |
455 async scheduleShowamiShowing(options: { | |
456 address: string; | |
457 showingTime: string; | |
458 propertyDetails: PropertyDetails; | |
459 clientName: string; | |
460 clientPhone: string; | |
461 email?: string; | |
462 isTest?: boolean; | |
463 }): Promise<string> { | |
464 const { | |
465 address, | |
466 showingTime, | |
467 propertyDetails, | |
468 clientName, | |
469 clientPhone, | |
470 email, | |
471 isTest = false | |
472 } = options; | |
473 | |
474 try { | |
475 // Use same time parsing logic as regular scheduler | |
476 let formattedTime = '' | |
477 let parse<response clipped><NOTE>Due to the max output limit, only part of this file has been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.</NOTE> | |
16:43:13 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: FileReadAction (id=19) | |
16:43:13 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 8 GLOBAL STEP 8 | |
16:43:17 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:43:17 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me search for the ShowingService class implementation in the showing.ts file. | |
COMMAND: | |
grep -n "export class ShowingService" -A 10 /workspace/lib/services/buyer_flow/showing.ts | |
16:43:18 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
585:export class ShowingService { | |
586- private sharedState: SharedState | |
587- private listingAgentManager: ListingAgentManager | |
588- private regularScheduler: ListingAgentScheduler | |
589- private showamiScheduler: ShowamiSchedulingService | |
590- | |
591- // Reference to Raffi's photo for agent messages | |
592- public RAFFI_PHOTO = | |
593- 'https://media.marketreactor.com/images/mr/raffi_headshot.jpg' | |
594- | |
595- constructor(sharedState: SharedState) { | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:43:18 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=21) | |
16:43:18 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 9 GLOBAL STEP 9 | |
16:43:22 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:43:22 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me look at the ShowingService implementation to understand how the tour scheduling works. | |
COMMAND: | |
grep -n "initiateScheduleShowing" -A 20 /workspace/lib/services/buyer_flow/showing.ts | |
16:43:22 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
423: console.error('Error in initiateScheduleShowing:', error) | |
424- throw error | |
425- } | |
426- } | |
427-} | |
428- | |
429-/** | |
430- * Showami third-party service scheduler for property showings | |
431- */ | |
432-class ShowamiSchedulingService { | |
433- private sharedState: SharedState | |
434- private showamiApiKey: string | |
435- private showamiCredentials: { email: string; password: string } | |
436- | |
437- constructor( | |
438- sharedState: SharedState, | |
439- apiKey: string = process.env.SHOWAMI_API_KEY || '', | |
440- credentials = { | |
441- email: process.env.SHOWAMI_EMAIL || '', | |
442- password: process.env.SHOWAMI_PASSWORD || '' | |
443- } | |
-- | |
780: const result = await this.initiateScheduleShowing({ | |
781- address: property.address, | |
782- showingTime: formattedTourTime, | |
783- propertyDetails: property.details, | |
784- clientName: clientName, | |
785- clientPhone: clientPhone, | |
786- email: email, | |
787- isTest: isTest, | |
788- lastMessage: lastMessage, | |
789- senderPhoneNumber: senderPhoneNumber | |
790- }) | |
791- | |
792- schedulingResults.push(`${property.address}: ${result}`) | |
793- } catch (error) { | |
794- schedulingResults.push( | |
795- `${property.address}: Failed to schedule - ${error instanceof Error ? error.message : String(error)}` | |
796- ) | |
797- } | |
798- } | |
799- | |
800- // Create a summary message for the client | |
-- | |
869: async initiateScheduleShowing(params: ShowingScheduleParams): Promise<string> { | |
870- const { | |
871- address, | |
872- showingTime, | |
873- propertyDetails, | |
874- clientName, | |
875- clientPhone, | |
876- email, | |
877- isTest = false, | |
878- lastMessage, | |
879- senderPhoneNumber, | |
880- isShowamiTour = false, | |
881- overrideListingAgentName = 'None', | |
882- overrideListingAgentNumber = 'None' | |
883- } = params; | |
884- | |
885- try { | |
886: // Debug shared state in ShowingService.initiateScheduleShowing | |
887: console.log('ShowingService.initiateScheduleShowing sharedState:', { | |
888- hasUser: !!this.sharedState.client, | |
889- user: this.sharedState.client ? { | |
890- id: this.sharedState.client.user_id, | |
891- phone: this.sharedState.client.phone_number | |
892- } : null, | |
893- clientNumber: this.sharedState.client?.phone_number, | |
894- clientPhone: clientPhone | |
895- }); | |
896- | |
897- // Validate property is for sale | |
898- if (!propertyDetails || propertyDetails.homeStatus !== 'FOR_SALE') { | |
899- this.sharedState.messagingService.createDraft({ | |
900- sendToPhone: clientPhone, | |
901- content: `Hi ${clientName}, this is Raffi Isanians, your Zillow Premier Agent. I saw that you just scheduled a showing for ${address}, but that property is not currently for sale. What would you like to do?` | |
902- }) | |
903- return `This property at ${address} is not for sale` | |
904- } | |
905- | |
906- // Get user to determine scheduling method | |
907- const user = await getClientByPhone(clientPhone); | |
-- | |
910: console.log('User lookup in initiateScheduleShowing:', { | |
911- clientPhone, | |
912- userFound: !!user, | |
913- userDetails: user ? { | |
914- id: user.user_id, | |
915- phone: user.phone_number, | |
916- name: user.first_name | |
917- } : null | |
918- }); | |
919- | |
920- // Set user in sharedState if it's missing but we found one | |
921- if (!this.sharedState.client && user) { | |
922- console.log('Setting missing sharedState.user from findClientByPhone result'); | |
923- this.sharedState.client = user; | |
924- } | |
925- | |
926- // Determine if we should use Showami or regular agent | |
927- const useShowami = isShowamiTour? true : await this.shouldUseShowami({ | |
928- propertyDetails, | |
929- lastMessage, | |
930- senderPhoneNumber | |
-- | |
990: console.error('Error in initiateScheduleShowing:', error) | |
991- throw error | |
992- } | |
993- } | |
994-} | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:43:22 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=23) | |
16:43:22 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 10 GLOBAL STEP 10 | |
16:43:31 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:31 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/realtor_flow/realtor_flow.ts', start=0, end=-1, thought="Let me check the realtor flow implementation to understand how the tour process works when we're the listing agent.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:31 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/realtor_flow/realtor_flow.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/realtor_flow/realtor_flow.ts: | |
1 import { RealtorAssistantCreator } from '../realEstate/openai_assistant_init/realtorAssistantCreator' | |
2 import { REALTOR_TALKER_TOOLS } from '../realEstate/configs/realtorTools' | |
3 import { AssistantTool } from '@/lib/types/openaiTypes' | |
4 import { IBaseFlow } from '@/lib/types/flow' | |
5 import { formatMessagesAsXml } from '../realEstate/core/messageFormatter' | |
6 import { | |
7 supabaseClient, | |
8 getClientByPhone, | |
9 getPropertyByZpid, | |
10 findPropertyByZpidAndAgentId | |
11 } from '@/lib/services/shared/supabaseClient' | |
12 import dayjs from '@/lib/utils/dates' | |
13 import { | |
14 scheduleFollowUpTexts, | |
15 scheduleFollowUpTextDates | |
16 } from '../realEstate/core/followUp' | |
17 import { SharedState } from '../realEstate/core/sharedState' | |
18 import { Phones } from '../realEstate/constants/phoneNumbers' | |
19 import { processAgentMessageForPropertyAccess } from '../realEstate/core/propertyAccessExtractor' | |
20 import { createCalendarEvent, sendShowamiCalendarLink } from '../calendar/zapierCalendar' | |
21 | |
22 /** | |
23 * RealtorFlow handles interactions with real estate agents via text messages. | |
24 * It uses AI to understand and respond to agent queries about their clients, | |
25 * property showings, scheduling, and other client service needs. | |
26 * | |
27 * Key responsibilities: | |
28 * - Processes incoming messages from agents | |
29 * - Handles showing/tour scheduling requests | |
30 * - Manages client communications and updates | |
31 * - Provides property and market information to agents | |
32 * | |
33 * The goal is to streamline agent-client interactions by providing AI-powered | |
34 * assistance while maintaining high quality service standards. | |
35 */ | |
36 export class RealtorFlow implements IBaseFlow { | |
37 public oa!: RealtorAssistantCreator | |
38 public tools: AssistantTool[] = REALTOR_TALKER_TOOLS | |
39 public sharedState: SharedState | |
40 | |
41 public constructor(sharedState: SharedState) { | |
42 this.sharedState = sharedState | |
43 } | |
44 | |
45 public static async create(sharedState: SharedState): Promise<RealtorFlow> { | |
46 const instance = new RealtorFlow(sharedState) | |
47 return instance | |
48 } | |
49 | |
50 async pullClientMessages(clientNumber: string): Promise<string> { | |
51 const messages = | |
52 await this.sharedState.messagingService.dbManager.getLastMessages({ | |
53 userPhone: clientNumber | |
54 }) | |
55 | |
56 return formatMessagesAsXml(messages, 'client') | |
57 } | |
58 | |
59 async negotiateShowingTimeWithClient({ | |
60 message, | |
61 clientNumber, | |
62 formattedTime | |
63 }: { | |
64 message: string, | |
65 clientNumber: string, | |
66 formattedTime: string | |
67 }): Promise<string> { | |
68 if (Phones.isAdmin(clientNumber)) { | |
69 throw new Error( | |
70 'this is an admin not a client. this number is only to be texted for testing purposes. Failed to find correctClientNumber' | |
71 ) | |
72 } | |
73 | |
74 const proposedTime = dayjs(formattedTime).tz('America/Los_Angeles', true) | |
75 if (!proposedTime.isValid()) { | |
76 throw new Error('Invalid time format. Use YYYY-MM-DD HH:mm format') | |
77 } | |
78 | |
79 const user = await getClientByPhone(clientNumber) | |
80 if (!user?.current_property_zpid) { | |
81 return 'No current property found for user' | |
82 } | |
83 | |
84 const { error } = await supabaseClient | |
85 .from('mr_properties') | |
86 .update({ | |
87 agent_proposed_showing_time: proposedTime.toISOString() | |
88 }) | |
89 .eq('zpid', user.current_property_zpid) | |
90 | |
91 if (error) { | |
92 console.error('Error updating showing time:', error) | |
93 throw error | |
94 } | |
95 | |
96 const property = await getPropertyByZpid(user.current_property_zpid) | |
97 | |
98 if ( | |
99 property?.client_proposed_showing_time && | |
100 dayjs(property.client_proposed_showing_time).isSame(proposedTime) | |
101 ) { | |
102 return this.confirmShowingWithClient( | |
103 { | |
104 message: 'The seller agreed on the showing time', | |
105 showingTime: proposedTime.toISOString() | |
106 }, | |
107 clientNumber | |
108 ) | |
109 } | |
110 | |
111 this.sharedState.messagingService.createDraft({ | |
112 sendToPhone: clientNumber, | |
113 content: message | |
114 }) | |
115 return 'Showing time text sent to client' | |
116 } | |
117 | |
118 async confirmShowingWithClient( | |
119 args: { | |
120 message: string | |
121 showingTime: string | |
122 }, | |
123 clientNumber: string | |
124 ): Promise<string> { | |
125 const clientPhone = this.sharedState.listingAgent?.current_mr_users_phone_number | |
126 if (!clientPhone) { | |
127 return 'No current property found for agent' | |
128 } | |
129 | |
130 // Get current property status and timeline | |
131 const property = await findPropertyByZpidAndAgentId(this.sharedState.listingAgent?.current_property_zpid!, | |
132 this.sharedState.listingAgent?.agent_id!) | |
133 | |
134 // // Only update timeline if status isn't confirmed | |
135 // if (property?.showing_status !== 'confirmed') { | |
136 // const { data: currentUser } = await supabaseClient | |
137 // .from('mr_users') | |
138 // .select('timeline') | |
139 // .eq('phone_number', clientNumber) | |
140 // .single<Pick<MR_User, 'timeline'>>() | |
141 | |
142 // const newTimelineEntry = `Scheduled showing for ${client.current_property} at ${args.showingTime}` | |
143 // const updatedTimeline = currentUser?.timeline | |
144 // ? `${currentUser.timeline}\n${newTimelineEntry}` | |
145 // : newTimelineEntry | |
146 | |
147 // await supabaseClient | |
148 // .from('mr_users') | |
149 // .update({ timeline: updatedTimeline }) | |
150 // .eq('phone_number', clientNumber) | |
151 // } | |
152 | |
153 // Update showing time if both parties agree | |
154 // Update showing time regardless of whether client and agent times match | |
155 // Both times will be set to the same value to ensure consistency | |
156 const { data, error } = await supabaseClient | |
157 .from('mr_properties') | |
158 .update({ | |
159 client_proposed_showing_time: args.showingTime, | |
160 agent_proposed_showing_time: args.showingTime, | |
161 showing_status: 'confirmed' | |
162 }) | |
163 .eq('zpid', this.sharedState.listingAgent?.current_property_zpid!) | |
164 .eq('agent_id', this.sharedState.listingAgent?.agent_id!) | |
165 | |
166 if (error) { | |
167 console.error('Error updating property showing information:', error) | |
168 throw new Error(`Failed to update property showing information: ${error.message}`) | |
169 } | |
170 | |
171 const { error: error2 } = await supabaseClient.from('mr_users').update({ | |
172 has_met_irl: true | |
173 }) | |
174 .eq('phone_number', clientNumber) | |
175 | |
176 if (error2) { | |
177 console.error('Error updating user has_met_irl:', error2) | |
178 throw new Error(`Failed to update user has_met_irl: ${error2.message}`) | |
179 } | |
180 | |
181 this.sharedState.messagingService.createDraft({ | |
182 sendToPhone: clientNumber, | |
183 content: args.message | |
184 }) | |
185 const clientInfo = [ | |
186 `Client: ${this.sharedState.client?.first_name || 'Client'}`, | |
187 `Phone: ${this.sharedState.client?.phone_number}`, | |
188 this.sharedState.client?.email ? `Email: ${this.sharedState.client?.email}` : '', | |
189 '', | |
190 'Status: Confirmed' | |
191 ] | |
192 | |
193 // Create a single calendar event configuration | |
194 const calendarEventConfig = { | |
195 summary: `[Confirmed] ${property?.formatted_address || property?.address}`, | |
196 description: clientInfo.join('\n'), | |
197 location: property?.formatted_address || property?.address!, | |
198 startTime: dayjs(args.showingTime) | |
199 } | |
200 | |
201 this.sharedState.debugOutputs.push(`<calendarEvent> ${JSON.stringify(calendarEventConfig)} </calendarEvent>`) | |
202 | |
203 if (property?.is_showami_tour) { | |
204 await sendShowamiCalendarLink(property, calendarEventConfig, this.sharedState, this.sharedState.client!) | |
205 this.sharedState.messagingService.createDraft({ | |
206 sendToPhone: this.sharedState.listingAgent?.phone_number!, | |
207 content: `My colleague Leo Quinones will be showing the property.` | |
208 }) | |
209 } | |
210 // Schedule follow-ups using buyer flow pattern | |
211 try { | |
212 if (!this.sharedState.isTest) { | |
213 // Use the new createCalendarEvent function | |
214 await createCalendarEvent(calendarEventConfig) | |
215 const parsedTime = dayjs(args.showingTime) | |
216 await scheduleFollowUpTextDates([ | |
217 { | |
218 scheduledTime: parsedTime.subtract(60, 'minute'), | |
219 message: `follow up ${Phones.RAFFI_NUMBER} Discussion points for ${property?.formatted_address || property?.address}` | |
220 }, | |
221 { | |
222 scheduledTime: parsedTime.add(60, 'minute'), | |
223 message: `follow up ${clientPhone} Any feedback on your tour of ${property?.formatted_address || property?.address}? What'd you think?` | |
224 } | |
225 ]) | |
226 } | |
227 } catch (err) { | |
228 console.error('Error scheduling follow-ups:', err) | |
229 } | |
230 | |
231 return 'Showing confirmation text sent to client' | |
232 } | |
233 | |
234 async addShowingToCalendar(args: { | |
235 showing_time: string | |
236 location: string | |
237 }): Promise<boolean> { | |
238 return true | |
239 } | |
240 | |
241 /** | |
242 * Extracts property access information and offer deadlines from conversations with listing agents | |
243 * and saves it to the property notes | |
244 * | |
245 * @param agentPhoneNumber The phone number of the listing agent | |
246 * @param message The most recent message from the agent | |
247 * @returns A confirmation message about the extracted information | |
248 */ | |
249 async extractPropertyAccessInfo( | |
250 agentPhoneNumber: string, | |
251 message?: string | |
252 ): Promise<string> { | |
253 try { | |
254 // Use the propertyAccessExtractor to process the message | |
255 const result = await processAgentMessageForPropertyAccess( | |
256 agentPhoneNumber, | |
257 message | |
258 ) | |
259 | |
260 if (result.success) { | |
261 return `Successfully extracted and saved property access information: ${result.message}` | |
262 } else { | |
263 console.log(`Could not extract property access info: ${result.message}`) | |
264 return `No showing instructions or offer deadlines found in the conversation.` | |
265 } | |
266 } catch (error) { | |
267 console.error('Error in extractPropertyAccessInfo:', error) | |
268 return 'Error extracting property access information from messages.' | |
269 } | |
270 } | |
271 } | |
272 | |
16:43:31 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=25) | |
16:43:31 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 11 GLOBAL STEP 11 | |
16:43:36 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:43:36 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check the seller flow implementation to understand how it handles tours when we're the listing agent. | |
COMMAND: | |
find /workspace -type f -name "*.ts" | grep -i "seller_flow" | |
16:43:36 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/lib/services/seller_flow/seller_flow.ts | |
/workspace/lib/services/seller_flow/__tests__/seller_flow.test.ts | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:43:36 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=27) | |
16:43:36 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 12 GLOBAL STEP 12 | |
16:43:40 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:40 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/seller_flow/seller_flow.ts', start=0, end=-1, thought='Let me look at the seller flow implementation to understand how it handles tours.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:40 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/seller_flow/seller_flow.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/seller_flow/seller_flow.ts: | |
1 import { AssistantTool } from '@/lib/types/openaiTypes' | |
2 import { IBaseFlow } from '@/lib/types/flow' | |
3 import { formatMessagesAsXml } from '../realEstate/core/messageFormatter' | |
4 import { traceClass } from '@/lib/utils/trace' | |
5 import { SharedState } from '../realEstate/core/sharedState' | |
6 import { SellerAssistantCreator } from '../realEstate/openai_assistant_init/sellerAssistantCreator' | |
7 import { SELLER_TALKER_TOOLS } from '../realEstate/configs/sellerTools' | |
8 import { getClientByPhone } from '@/lib/services/shared/supabaseClient' | |
9 import { Phones } from '../realEstate/constants/phoneNumbers' | |
10 import dayjs from '@/lib/utils/dates' | |
11 | |
12 /** | |
13 * SellerFlow class handles interactions with potential buyers and buyer agents. | |
14 * It uses AI to understand and respond to queries about properties being sold, | |
15 * showings, offers, and other real estate needs. The class integrates with | |
16 * various services to provide comprehensive assistance: | |
17 * | |
18 * - Property information and marketing | |
19 * - Scheduling property showings | |
20 * - Handling buyer inquiries | |
21 * - Offer management and negotiation | |
22 * | |
23 * The goal is to provide an AI-powered experience that scales real estate | |
24 * operations while maintaining high quality service for property sellers. | |
25 */ | |
26 | |
27 export class SellerFlow implements IBaseFlow { | |
28 public oa!: SellerAssistantCreator | |
29 public tools: AssistantTool[] = SELLER_TALKER_TOOLS | |
30 public sharedState: SharedState | |
31 | |
32 public constructor(sharedState: SharedState) { | |
33 this.sharedState = sharedState | |
34 } | |
35 | |
36 public static async create(sharedState: SharedState): Promise<SellerFlow> { | |
37 const instance = new SellerFlow(sharedState) | |
38 return instance | |
39 } | |
40 | |
41 /** | |
42 * Retrieves buyer messages for context | |
43 * @param buyerNumber The phone number of the buyer | |
44 * @returns Formatted buyer messages as XML | |
45 */ | |
46 async pullBuyerMessages(buyerNumber: string): Promise<string> { | |
47 const messages = | |
48 await this.sharedState.messagingService.dbManager.getLastMessages({ | |
49 userPhone: buyerNumber | |
50 }) | |
51 | |
52 return formatMessagesAsXml(messages, 'client') | |
53 } | |
54 | |
55 /** | |
56 * Handles property inquiries from potential buyers | |
57 * @param message The inquiry message | |
58 * @param buyerNumber The phone number of the buyer | |
59 * @returns Response to the inquiry | |
60 */ | |
61 async handlePropertyInquiry( | |
62 message: string, | |
63 buyerNumber: string | |
64 ): Promise<string> { | |
65 if (Phones.isAdmin(buyerNumber)) { | |
66 throw new Error( | |
67 'This is an admin number, not a buyer. This number is only to be texted for testing purposes.' | |
68 ) | |
69 } | |
70 | |
71 // Get seller information | |
72 const seller = await getClientByPhone(this.sharedState.client?.phone_number || '') | |
73 if (!seller) { | |
74 throw new Error('Seller information not found') | |
75 } | |
76 | |
77 // Create a draft response | |
78 this.sharedState.messagingService.createDraft({ | |
79 sendToPhone: buyerNumber, | |
80 content: `Thank you for your interest in the property. I'll get back to you with more information shortly.` | |
81 }) | |
82 | |
83 return `Inquiry from ${buyerNumber} about property has been received and a draft response has been created.` | |
84 } | |
85 | |
86 /** | |
87 * Schedules a showing for a potential buyer | |
88 * @param showingTime The requested showing time | |
89 * @param buyerName The name of the buyer | |
90 * @param buyerNumber The phone number of the buyer | |
91 * @param buyerEmail The email of the buyer (optional) | |
92 * @returns Confirmation message | |
93 */ | |
94 async scheduleShowing( | |
95 showingTime: string, | |
96 buyerName: string, | |
97 buyerNumber: string, | |
98 buyerEmail: string = 'None' | |
99 ): Promise<string> { | |
100 if (Phones.isAdmin(buyerNumber)) { | |
101 throw new Error( | |
102 'This is an admin number, not a buyer. This number is only to be texted for testing purposes.' | |
103 ) | |
104 } | |
105 | |
106 const proposedTime = dayjs(showingTime).tz('America/Los_Angeles', true) | |
107 if (!proposedTime.isValid()) { | |
108 throw new Error('Invalid showing time format') | |
109 } | |
110 | |
111 // Get seller information | |
112 const seller = await getClientByPhone(this.sharedState.client?.phone_number || this.sharedState.receiverPhoneNumber || '') | |
113 if (!seller) { | |
114 throw new Error('Seller information not found') | |
115 } | |
116 | |
117 // Get property information | |
118 const property = seller.current_property | |
119 if (!property) { | |
120 throw new Error('No property found for this seller') | |
121 } | |
122 | |
123 // Create a draft confirmation | |
124 const formattedTime = proposedTime.format('dddd, MMMM D [at] h:mm A') | |
125 this.sharedState.messagingService.createDraft({ | |
126 sendToPhone: buyerNumber, | |
127 content: `Hi ${buyerName}, this is ${seller.first_name} ${seller.last_name}. I've scheduled a showing for ${property} on ${formattedTime}. Please let me know if you have any questions.` | |
128 }) | |
129 | |
130 return `Showing scheduled for ${buyerName} at ${formattedTime} for property ${property}.` | |
131 } | |
132 | |
133 /** | |
134 * Responds to an offer from a buyer | |
135 * @param offerAmount The amount offered | |
136 * @param buyerName The name of the buyer | |
137 * @param buyerNumber The phone number of the buyer | |
138 * @param message Additional message or terms | |
139 * @returns Response to the offer | |
140 */ | |
141 async respondToOffer( | |
142 offerAmount: string, | |
143 buyerName: string, | |
144 buyerNumber: string, | |
145 message: string | |
146 ): Promise<string> { | |
147 if (Phones.isAdmin(buyerNumber)) { | |
148 throw new Error( | |
149 'This is an admin number, not a buyer. This number is only to be texted for testing purposes.' | |
150 ) | |
151 } | |
152 | |
153 // Get seller information | |
154 const seller = await getClientByPhone(this.sharedState.client?.phone_number || this.sharedState.receiverPhoneNumber || '') | |
155 if (!seller) { | |
156 throw new Error('Seller information not found') | |
157 } | |
158 | |
159 // Create a draft response | |
160 this.sharedState.messagingService.createDraft({ | |
161 sendToPhone: buyerNumber, | |
162 content: `Hi ${buyerName}, thank you for your offer of ${offerAmount}. I'll discuss this with my client and get back to you soon.` | |
163 }) | |
164 | |
165 return `Offer of ${offerAmount} from ${buyerName} has been received and a draft response has been created.` | |
166 } | |
167 | |
168 /** | |
169 * Provides property details to a potential buyer | |
170 * @param buyerNumber The phone number of the buyer | |
171 * @returns Property details message | |
172 */ | |
173 async providePropertyDetails(buyerNumber: string): Promise<string> { | |
174 if (Phones.isAdmin(buyerNumber)) { | |
175 throw new Error( | |
176 'This is an admin number, not a buyer. This number is only to be texted for testing purposes.' | |
177 ) | |
178 } | |
179 | |
180 // Get seller information | |
181 const seller = await getClientByPhone(this.sharedState.client?.phone_number || this.sharedState.receiverPhoneNumber || '') | |
182 if (!seller) { | |
183 throw new Error('Seller information not found') | |
184 } | |
185 | |
186 // Get property information | |
187 const property = seller.current_property | |
188 if (!property) { | |
189 throw new Error('No property found for this seller') | |
190 } | |
191 | |
192 // Create a draft with property details | |
193 this.sharedState.messagingService.createDraft({ | |
194 sendToPhone: buyerNumber, | |
195 content: `Here are the details for ${property}. Please let me know if you have any specific questions.` | |
196 }) | |
197 | |
198 return `Property details for ${property} have been sent to ${buyerNumber}.` | |
199 } | |
200 } | |
201 | |
16:43:40 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=29) | |
16:43:40 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 13 GLOBAL STEP 13 | |
16:43:45 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:45 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/types/assistantTypes.ts', start=0, end=-1, thought='Now let me check the assistant types to understand the function definitions.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:45 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/types/assistantTypes.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/types/assistantTypes.ts: | |
1 import { | |
2 ThreadMessage as ImportedThreadMessage, | |
3 MessageResponse, | |
4 mr_messages | |
5 } from './messages' | |
6 import OpenAI from 'openai' | |
7 import { SupabaseClient } from '@supabase/supabase-js' | |
8 import { RunStatus } from './openaiTypes' | |
9 import { MR_User } from './sbPeople' | |
10 import { DatabaseManager } from '@/lib/services/realEstate/core/databaseManager' | |
11 import { SharedState } from '../services/realEstate/core/sharedState' | |
12 | |
13 export type { RunStatus } | |
14 export type ToolOutput = { | |
15 tool_call_id: string | |
16 output: string | |
17 } | |
18 | |
19 // Re-export ThreadMessage | |
20 export type ThreadMessage = ImportedThreadMessage | |
21 | |
22 export interface AssistantMessageContent { | |
23 type: string | |
24 text: { | |
25 value: string | |
26 } | |
27 } | |
28 | |
29 export interface AssistantMessage { | |
30 role: string | |
31 content: AssistantMessageContent[] | |
32 } | |
33 | |
34 // Core interfaces for flow dependencies | |
35 export interface IBaseDependencies { | |
36 isTest: boolean | |
37 threadId?: string | |
38 } | |
39 | |
40 export interface IRedfinService { | |
41 search: ( | |
42 address: string | |
43 ) => Promise<{ payload: { exactMatch: { url: string } } }> | |
44 initialInfo: ( | |
45 url: string | |
46 ) => Promise<{ payload: { propertyId: string; listingId: string } }> | |
47 similarListings: (propertyId: string, listingId: string) => Promise<unknown[]> | |
48 } | |
49 | |
50 export interface IBasePlusDependencies extends IBaseDependencies { | |
51 sharedState: SharedState | |
52 openaiClient?: OpenAI | |
53 supabaseClient?: SupabaseClient | |
54 dbManager?: DatabaseManager | |
55 } | |
56 | |
57 export interface IFlowDependencies extends IBasePlusDependencies { | |
58 messagingService: IMessagingService | |
59 dbManager: DatabaseManager | |
60 } | |
61 | |
62 export type IFlowWithNumbers = IFlowDependencies & { | |
63 getClientNumber: () => string | undefined | |
64 setClientNumber: (phone?: string) => void | |
65 getAgentNumber: () => string | undefined | |
66 setAgentNumber: (phone?: string) => void | |
67 getUser: () => MR_User | undefined | |
68 setUser: (user?: MR_User) => void | |
69 } | |
70 | |
71 export interface IMessageProcessor { | |
72 getUserInfo(key?: string): Promise<unknown> | |
73 setClientName(name: string): Promise<void> | |
74 getLastMessages(options: { | |
75 userPhone: string | |
76 minMessages?: number | |
77 timeWindowMinutes?: number | |
78 otherRecipients0?: string | |
79 otherRecipients1?: string | |
80 maxMessages?: number | |
81 }): Promise<mr_messages[]> | |
82 getMessagesRelatedToUserMessage( | |
83 userMessage: string, | |
84 userId: string | |
85 ): Promise<string> | |
86 prepMessagesForLLM( | |
87 senderPhoneNumber: string, | |
88 lastMessages: mr_messages[] | |
89 ): ThreadMessage[] | |
90 addMemoriesToMessages( | |
91 memories: string[], | |
92 messages: ThreadMessage[] | |
93 ): ThreadMessage[] | |
94 addMessage( | |
95 message: string | ThreadMessage[], | |
96 userId: string, | |
97 role?: 'user' | 'assistant' | |
98 ): Promise<void> | |
99 sendText( | |
100 sendToPhone: string, | |
101 content: string, | |
102 imageUrl?: string | |
103 ): Promise<boolean> | |
104 processMessageWithLLM( | |
105 threadMessages: ThreadMessage[], | |
106 senderPhoneNumber: string, | |
107 maxCompletionTokens?: number | |
108 ): Promise<MessageResponse> | |
109 } | |
110 | |
111 export interface IDatabaseManager { | |
112 insertDb( | |
113 senderPhoneNumber: string, | |
114 receiverPhoneNumber: string, | |
115 message: string | |
116 ): Promise<unknown> | |
117 getLastMessages(options: { | |
118 userPhone: string | |
119 minMessages?: number | |
120 timeWindowMinutes?: number | |
121 otherRecipients0?: string | |
122 otherRecipients1?: string | |
123 maxMessages?: number | |
124 }): Promise<mr_messages[]> | |
125 } | |
126 | |
127 export interface IMemoryManager { | |
128 addMessage( | |
129 message: string | ThreadMessage[], | |
130 userId: string, | |
131 role?: 'user' | 'assistant' | |
132 ): Promise<void> | |
133 getMessagesRelatedToUserMessage( | |
134 userMessage: string, | |
135 userId: string | |
136 ): Promise<string> | |
137 prepMessagesForLLM( | |
138 senderPhoneNumber: string, | |
139 lastMessages: mr_messages[] | |
140 ): ThreadMessage[] | |
141 addMemoriesToMessages( | |
142 previousMemories: string[], | |
143 threadMessages: ThreadMessage[] | |
144 ): ThreadMessage[] | |
145 } | |
146 | |
147 export interface IMessagingService { | |
148 createDraft(options: { | |
149 sendToPhone: string | |
150 content: string | |
151 imageUrl?: string | |
152 sendFromPhone?: string | |
153 otherRecipients0?: string | |
154 draft_outbound_string_similarity?: number | |
155 ai_assessed_time_save?: string | |
156 internal_debug_messages?: string | |
157 ai_removed_text?: string | |
158 draft_prompt_number?: number | |
159 }): Promise<boolean> | |
160 createOffer(phoneNumber: string, args: OfferArgs): Promise<boolean> | |
161 getRaffi( | |
162 message: string, | |
163 clientNumber?: string, | |
164 agentNumber?: string | |
165 ): Promise<boolean> | |
166 sendText( | |
167 sendToPhone: string, | |
168 content: string, | |
169 imageUrl?: string, | |
170 sendFromPhone?: string | |
171 ): Promise<boolean> | |
172 sendMessageToUser?( | |
173 userId: string, | |
174 message: string, | |
175 subject: string, | |
176 metadata?: Record<string, any> | |
177 ): Promise<{ success: boolean; messageId?: string; error?: string }> | |
178 } | |
179 | |
180 export interface OfferArgs { | |
181 Address: string | |
182 Price_Offer: string | |
183 Down_Payment: string | |
184 Buyer: string | |
185 } | |
186 | |
187 export interface MessageProcessorConfig { | |
188 mem0ApiKey: string | |
189 mem0BaseUrl: string | |
190 twilioApiUrl: string | |
191 twilioApiKey: string | |
192 twilioHeaders: Record<string, string> | |
193 } | |
194 | |
195 export interface IBaseFlow { | |
196 initiateScheduleShowing( | |
197 address: string, | |
198 showingTime: string, | |
199 clientName: string, | |
200 senderPhoneNumber: string, | |
201 lastMessage?: string | |
202 ): Promise<string> | |
203 // ... existing code ... | |
204 } | |
205 | |
16:43:45 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: FileReadAction (id=31) | |
16:43:45 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 14 GLOBAL STEP 14 | |
16:43:50 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:50 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/realEstate/configs/clientTools.ts', start=0, end=-1, thought='Let me check the client tools and realtor tools to understand the function definitions.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:50 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/realEstate/configs/clientTools.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/realEstate/configs/clientTools.ts: | |
1 import { AssistantTool, ChatCompletionTool } from '@/lib/types/openaiTypes' | |
2 | |
3 export const CLIENT_TALKER_TOOLS: AssistantTool[] = [ | |
4 // TODO: add addresses as input to most of these, but then if none are specified, use current address | |
5 // { | |
6 // type: "function", | |
7 // function: { | |
8 // name: "createOffer", | |
9 // description: "Submits a buying offer for a house that the user would like.", | |
10 // strict: true, | |
11 // parameters: { | |
12 // type: "object", | |
13 // properties: { | |
14 // Address: { | |
15 // type: "string", | |
16 // description: "The property address for which the offer is being made.", | |
17 // }, | |
18 // Buyer: { | |
19 // type: "string", | |
20 // description: "The name of the person making the offer.", | |
21 // }, | |
22 // Down_Payment: { | |
23 // type: "string", | |
24 // description: "The down payment percentage or amount.", | |
25 // }, | |
26 // Price_Offer: { | |
27 // type: "string", | |
28 // description: "The price being offered for the property.", | |
29 // }, | |
30 // }, | |
31 // required: ["Address", "Buyer", "Down_Payment", "Price_Offer"], | |
32 // additionalProperties: false, | |
33 // }, | |
34 // }, | |
35 // }, | |
36 { | |
37 type: 'function', | |
38 function: { | |
39 name: 'convertShortAddressToFullAddress', | |
40 description: | |
41 "Converts a shorthand address (123 main) to a full address (123 main st, city, state zipcode). Can also be a relative address, like 'the cornerstone apartments'. But, provide as much information as possible for an accurate conversion.", | |
42 strict: true, | |
43 parameters: { | |
44 type: 'object', | |
45 properties: { | |
46 address: { | |
47 type: 'string', | |
48 description: 'The short address to convert to a full address.' | |
49 } | |
50 }, | |
51 required: ['address'], | |
52 additionalProperties: false | |
53 } | |
54 } | |
55 }, | |
56 { | |
57 type: 'function', | |
58 function: { | |
59 name: 'initiateScheduleShowing', | |
60 description: | |
61 "Sends the INITIAL text message to the real estate agent for scheduling a showing of a property. If multiple showings are requested, call initiateScheduleMultipleShowings instead. Call this function first if it is to be called. Showings can be referred to in a variety of ways: some examples are 'tours', 'reshowings', 'taking a look', 'seeing', etc. Call this function if a tour is requested, and hasn't been started to be scheduled yet. NOT TO BE USED FOR FURTHER REPLIES AND NEGOTIATIONS. No need to check if the day of the week and date are aligned.", | |
62 strict: true, | |
63 parameters: { | |
64 type: 'object', | |
65 properties: { | |
66 address: { | |
67 type: 'string', | |
68 description: | |
69 'Address of the property. Make sure that the address is formatted like this: (street address, city, state zipcode). If you only have the incomplete address, then put what you have.' | |
70 }, | |
71 showing_time: { | |
72 type: 'string', | |
73 description: | |
74 "Time to schedule a showing. Could be a variety of time formats. If not specified, 'None'." | |
75 }, | |
76 client_name: { | |
77 type: 'string', | |
78 description: | |
79 "The name of the client. Preferably first and last name. If not specified, say 'None'." | |
80 }, | |
81 email: { | |
82 type: 'string', | |
83 description: | |
84 "The email of the client. If not specified, say 'None'." | |
85 }, | |
86 overrideAgentName: { | |
87 type: 'string', | |
88 description: `Override the agent name for this property. Looks something like this: "Agent Name: <Agent Name>", or "Override the agent name with <Agent Name>.` | |
89 }, | |
90 overrideAgentNumber: { | |
91 type: 'string', | |
92 description: `Override the agent phone number for this property. Looks something like this: "Agent Number: <Agent Number>", or "Override the agent number with <Agent Name>, and their phone number is <Agent Number>.` | |
93 } | |
94 }, | |
95 required: [ | |
96 'address', | |
97 'showing_time', | |
98 'client_name', | |
99 'email', | |
100 'overrideAgentName', | |
101 'overrideAgentNumber' | |
102 ], | |
103 additionalProperties: false | |
104 } | |
105 } | |
106 }, | |
107 { | |
108 type: 'function', | |
109 function: { | |
110 name: 'initiateScheduleMultipleShowings', | |
111 description: | |
112 'Sends the INITIAL text message to the real estate agents for scheduling a showing of multiple properties. Schedules multiple property tours in an optimal order based on location. Call this function first if it is to be called. This calls initiateScheduleShowing for each address (so use this in lieu of calling initiateScheduleShowing for each address). This function will determine the best route between properties and schedule each showing with appropriate time spacing. Allow the client to specify a range of time for this, such as just a day, as opposed to a specific time.', | |
113 strict: true, | |
114 parameters: { | |
115 type: 'object', | |
116 properties: { | |
117 addresses: { | |
118 type: 'array', | |
119 items: { | |
120 type: 'string' | |
121 }, | |
122 description: | |
123 'Array of property addresses to schedule tours for. Each address should be as complete as possible (street, city, state, zip).' | |
124 }, | |
125 showing_time: { | |
126 type: 'string', | |
127 description: | |
128 "Starting time for the first tour. Can be a specific time (e.g., '2pm tomorrow') or a day + part of day (e.g., 'Friday morning'), or even a day or a range of days (e.g., 'Friday or Saturday'). All tours will be scheduled sequentially from this starting time." | |
129 }, | |
130 client_name: { | |
131 type: 'string', | |
132 description: | |
133 'The name of the client. Preferably first and last name.' | |
134 }, | |
135 client_phone: { | |
136 type: 'string', | |
137 description: 'The phone number of the client. If not specified, say "None".' | |
138 }, | |
139 email: { | |
140 type: 'string', | |
141 description: | |
142 "The email of the client. If not specified, say 'None'." | |
143 } | |
144 }, | |
145 required: [ | |
146 'addresses', | |
147 'showing_time', | |
148 'client_name', | |
149 'client_phone', | |
150 'email' | |
151 ], | |
152 additionalProperties: false | |
153 } | |
154 } | |
155 }, | |
156 { | |
157 type: 'function', | |
158 function: { | |
159 name: 'negotiateShowingTimeWithAgent', | |
160 description: | |
161 "Used for negotiating showing times with the realtor AFTER the initial request. The time should be in 'YYYY-MM-DD HH:mm' format (e.g. '2024-03-15 14:30'). All times are assumed to be Pacific Time. Always verify availability first using getMyCalendar.", | |
162 strict: true, | |
163 parameters: { | |
164 type: 'object', | |
165 properties: { | |
166 message: { | |
167 type: 'string', | |
168 description: | |
169 'The message to send to the realtor, proposing or responding to alternative showing times. Include the proposed time in human-readable format.' | |
170 }, | |
171 formatted_time: { | |
172 type: 'string', | |
173 description: | |
174 "Time in 'YYYY-MM-DD HH:mm' format (e.g. '2024-03-15 14:30'). Time is assumed to be Pacific Time." | |
175 } | |
176 }, | |
177 required: ['message', 'formatted_time'], | |
178 additionalProperties: false | |
179 } | |
180 } | |
181 }, | |
182 { | |
183 type: 'function', | |
184 function: { | |
185 name: 'askListingAgent', | |
186 description: | |
187 'Ask the agent for a property a question about the property at hand. Not for scheduling tours, for those use the initiateScheduleShowing function.', | |
188 strict: true, | |
189 parameters: { | |
190 type: 'object', | |
191 properties: { | |
192 address: { | |
193 type: 'string', | |
194 description: | |
195 "The address of the property of interest. If Unsure, say 'None'." | |
196 }, | |
197 message: { | |
198 type: 'string', | |
199 description: 'The message to send to the listing agent.' | |
200 } | |
201 }, | |
202 required: ['address', 'message'], | |
203 additionalProperties: false | |
204 } | |
205 } | |
206 }, | |
207 { | |
208 type: 'function', | |
209 function: { | |
210 name: 'logPropertyOfInterest', | |
211 description: | |
212 "Any time a client mentions any property, it should be logged in the database. If client is referring to a property by shorthand such as 'the cornerstone apartments' or '123 main', then call the 'convertShortAddressToFullAddress' function first so the full address can be put in here. No need to do this if client is asking for a tour, as this function is already called if initiateScheduleShowing is called.", | |
213 strict: true, | |
214 parameters: { | |
215 type: 'object', | |
216 properties: { | |
217 address: { | |
218 type: 'string', | |
219 description: | |
220 'The full address of the property of interest (e.g. street address, city, state zipcode).' | |
221 } | |
222 }, | |
223 required: ['address'], | |
224 additionalProperties: false | |
225 } | |
226 } | |
227 }, | |
228 { | |
229 type: 'function', | |
230 function: { | |
231 name: 'confirmShowingWithAgent', | |
232 description: | |
233 "Used to confirm a showing time with the realtor listing agent that a time has been agreed upon with the client. This function should be used when both parties, client and listing agent, have agreed on a specific time. The time in the message should be in the format 'YYYY-MM-DD HH:mm' (e.g. '2024-03-15 14:30'). This is a 24-hour format without timezone.", | |
234 strict: true, | |
235 parameters: { | |
236 type: 'object', | |
237 properties: { | |
238 message: { | |
239 type: 'string', | |
240 description: | |
241 "The confirmation message to send to the realtor. Include the confirmed time in the format 'MM/DD HH:mm' in the message. If the date is today or tomorrow, then say 'tomorrow' or 'today' instead of the full date, along with the time." | |
242 }, | |
243 showing_time: { | |
244 type: 'string', | |
245 description: | |
246 "The confirmed time to send to the realtor. In the format 'YYYY-MM-DD HH:mm'." | |
247 } | |
248 }, | |
249 required: ['message', 'showing_time'], | |
250 additionalProperties: false | |
251 } | |
252 } | |
253 }, | |
254 { | |
255 type: 'function', | |
256 function: { | |
257 name: 'getSimplifiedPropertyDetails', | |
258 description: | |
259 "Gets simple information about a house. Should be run for all addresses being discussed. Links will be pulled from the 'url' field. If you can't find the information you need, call the get_all_property_details function.", | |
260 strict: true, | |
261 parameters: { | |
262 type: 'object', | |
263 properties: { | |
264 address: { | |
265 type: 'string', | |
266 description: | |
267 'This is the full address of the property being shown to user or in question.' | |
268 } | |
269 }, | |
270 required: ['address'], | |
271 additionalProperties: false | |
272 } | |
273 } | |
274 }, | |
275 { | |
276 type: 'function', | |
277 function: { | |
278 name: 'getAllPropertyDetails', | |
279 description: | |
280 "Gets all information about a house. Links will be pulled from the 'url' field", | |
281 strict: true, | |
282 parameters: { | |
283 type: 'object', | |
284 properties: { | |
285 address: { | |
286 type: 'string', | |
287 description: | |
288 'This is the full address of the property being shown to user or in question.' | |
289 } | |
290 }, | |
291 required: ['address'], | |
292 additionalProperties: false | |
293 } | |
294 } | |
295 }, | |
296 { | |
297 type: 'function', | |
298 function: { | |
299 name: 'getSimilarPropertiesForSaleByAddress', | |
300 description: | |
301 "Finds similar properties CURRENTLY FOR SALE for a given property address to help give user recommendations on similar homes they'd like to purchase.", | |
302 strict: true, | |
303 parameters: { | |
304 type: 'object', | |
305 properties: { | |
306 address: { | |
307 type: 'string', | |
308 description: | |
309 'The full address of the property to find similar open houses for.' | |
310 } | |
311 }, | |
312 required: ['address'], | |
313 additionalProperties: false | |
314 } | |
315 } | |
316 }, | |
317 { | |
318 type: 'function', | |
319 function: { | |
320 name: 'getSimilarPropertiesSoldByAddress', | |
321 description: | |
322 'Finds similar properties or comparable property (comps) SOLD (past tense) for a given property address to help give user recommendations on similar homes they could look at for comparison on for price on their property of interest. Getting these comps is essential to know for knowing how to what price to bid for an offer in a specific neighborhood.', | |
323 strict: true, | |
324 parameters: { | |
325 type: 'object', | |
326 properties: { | |
327 address: { | |
328 type: 'string', | |
329 description: 'The full address of the property.' | |
330 } | |
331 }, | |
332 required: ['address'], | |
333 additionalProperties: false | |
334 } | |
335 } | |
336 }, | |
337 { | |
338 type: 'function', | |
339 function: { | |
340 name: 'getMortgageRatesPayment', | |
341 description: | |
342 'call this function to get current mortgages rates, taxes and insurance rates. ask for zip code. Gets approximate local property tax, home insurance, mortage rates, and tax rates', | |
343 strict: true, | |
344 parameters: { | |
345 type: 'object', | |
346 properties: { | |
347 zip: { | |
348 type: 'string', | |
349 description: | |
350 'This is the zip code of the area they are looking to buy.' | |
351 } | |
352 }, | |
353 required: ['zip'], | |
354 additionalProperties: false | |
355 } | |
356 } | |
357 }, | |
358 // { | |
359 // type: "function", | |
360 // function: { | |
361 // name: "recordListingFeedback", | |
362 // description: "This takes the users feedback for a given listing and records things they liked and didnt like along with reason why. it should be done for every listing sent to the user before a subsequent listing is sent.", | |
363 // strict: true, | |
364 // parameters: { | |
365 // type: "object", | |
366 // properties: { | |
367 // address: { | |
368 // type: "string", | |
369 // description: "The full address of the property.", | |
370 // }, | |
371 // feedback: { | |
372 // type: "string", | |
373 // description: "The users liking of the subject property and reason why including specific items they liked or didn't like.", | |
374 // }, | |
375 // }, | |
376 // required: ["address", "feedback"], | |
377 // additionalProperties: false, | |
378 // }, | |
379 // }, | |
380 // }, | |
381 // get listings | |
382 // { | |
383 // type: "function", | |
384 // function: { | |
385 // name: "getListings", | |
386 // description: "Gets listings from a zip code or city, with a filter option for any type of filter the user would like.", | |
387 // strict: true, | |
388 // parameters: { | |
389 // type: "object", | |
390 // properties: { | |
391 // zip_or_city: { | |
392 // type: "string", | |
393 // description: "The zip code or city name for the listing search.", | |
394 // }, | |
395 // state: { | |
396 // type: "string", | |
397 // description: "The state abbreviation (e.g., 'CA' for California) for the listing search.", | |
398 // }, | |
399 // listing_type: { | |
400 // type: "string", | |
401 // description: "The type of listing to search for. Can be 'for_sale', 'sold', or 'pending'.", | |
402 // enum: ["for_sale", "sold", "pending"], | |
403 // }, | |
404 // property_filter: { | |
405 // type: "string", | |
406 // description: "A sentence or phrase for how you would like to construct the filter. <response clipped><NOTE>Due to the max output limit, only part of this file has been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.</NOTE> | |
16:43:50 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=33) | |
16:43:50 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 15 GLOBAL STEP 15 | |
16:43:56 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:43:56 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/realEstate/configs/realtorTools.ts', start=0, end=-1, thought='Let me check the realtor tools to understand the function definitions.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:43:56 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/realEstate/configs/realtorTools.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/realEstate/configs/realtorTools.ts: | |
1 import { AssistantTool } from '@/lib/types/openaiTypes' | |
2 | |
3 export const REALTOR_TALKER_TOOLS: AssistantTool[] = [ | |
4 { | |
5 type: 'function', | |
6 function: { | |
7 name: 'negotiateShowingTimeWithClient', | |
8 description: | |
9 "Used for negotiating showing times with the realtor AFTER the initial request. When there's a scheduling conflict, acknowledge it professionally and clearly communicate any alternative times proposed by the agent. Use this function to update the client on the agent's availability to do the showing. This function sends the text asking the question, after which your task is complete.", | |
10 parameters: { | |
11 type: 'object', | |
12 properties: { | |
13 message: { | |
14 type: 'string', | |
15 description: | |
16 "The message to send to the client, updating them regarding the agent's availability. Include the proposed time in the message text." | |
17 }, | |
18 proposedTime: { | |
19 type: 'string', | |
20 description: | |
21 'The specific time being proposed for the showing in YYYY-MM-DD HH:mm format.' | |
22 } | |
23 }, | |
24 required: ['message', 'proposedTime'], | |
25 additionalProperties: false | |
26 } | |
27 } | |
28 }, | |
29 { | |
30 type: 'function', | |
31 function: { | |
32 name: 'confirmShowingWithClient', | |
33 description: | |
34 "Send final confirmation to the client. Include the exact date and time in the message, and mention that you'll provide showing instructions shortly. Write it in a friendly tone. This function sends the text asking the question, after which your task is complete.", | |
35 parameters: { | |
36 type: 'object', | |
37 properties: { | |
38 message: { | |
39 type: 'string', | |
40 description: | |
41 'The confirmation message to send to the client. Include the confirmed time in the message.' | |
42 }, | |
43 showingTime: { | |
44 type: 'string', | |
45 description: | |
46 'The exact date and time of the showing to be confirmed in YYYY-MM-DD HH:mm format. Always include this value.' | |
47 } | |
48 }, | |
49 required: ['message', 'showingTime'], | |
50 additionalProperties: false | |
51 } | |
52 } | |
53 }, | |
54 // { | |
55 // type: "function", | |
56 // function: { | |
57 // name: "addShowingToCalendar", | |
58 // description: "After each confirmed showing with a client, use this function to add the showing to my calendar.", | |
59 // parameters: { | |
60 // type: "object", | |
61 // properties: { | |
62 // showingTime: { | |
63 // type: "string", | |
64 // description: "The agreed-upon time for the showing. This should be in datetime format, such as 2024-09-11T04:00:00Z", | |
65 // }, | |
66 // location: { | |
67 // type: "string", | |
68 // description: "The address or location of the showing", | |
69 // }, | |
70 // }, | |
71 // required: ["showingTime", "location"], | |
72 // }, | |
73 // }, | |
74 // }, | |
75 // { | |
76 // type: 'function', | |
77 // function: { | |
78 // name: 'confirmShowingWithAgent', | |
79 // description: | |
80 // "Tell agent that a showing has been scheduled. Must include in the message: 1) Complete property address, 2) Exact date and time, 3) Request showing instructions if not provided. Write it in a professional tone. Do not reveal the client's name. This function sends the text asking the question, after which your task is complete.", | |
81 // parameters: { | |
82 // type: 'object', | |
83 // properties: { | |
84 // message: { | |
85 // type: 'string', | |
86 // description: | |
87 // 'The confirmation message to send to the agent. Include the confirmed time in the message.' | |
88 // } | |
89 // }, | |
90 // required: ['message'], | |
91 // additionalProperties: false | |
92 // } | |
93 // } | |
94 // }, | |
95 // { | |
96 // type: "function", | |
97 // function: { | |
98 // name: "getRaffi", | |
99 // description: "When there is a request from a realtor that is not encompassed by one of these functions. For an example, the home is no longer for sale, or the agent requests a direct call. DO NOT RESPOND TO THE REALTOR IF THIS FUNCTION IS CALLED.", | |
100 // parameters: { | |
101 // type: "object", | |
102 // properties: { | |
103 // message: { | |
104 // type: "string", | |
105 // description: "Say thanks for the info.", | |
106 // } | |
107 // }, | |
108 // required: ["message"], | |
109 // additionalProperties: false, | |
110 // }, | |
111 // }, | |
112 // }, | |
113 { | |
114 type: 'function', | |
115 function: { | |
116 name: 'pullClientMessages', | |
117 description: | |
118 "Use this function to get the interested client's message history. This can be used anytime to understand the realtor's responses, but is especially useful during tour scheduling to ensure both parties agree on showing times. This will automatically pull the right client's messages for the property that realtor is the listing agent for.", | |
119 parameters: { | |
120 type: 'object', | |
121 properties: {}, | |
122 required: [], | |
123 additionalProperties: false | |
124 } | |
125 } | |
126 }, | |
127 { | |
128 type: 'function', | |
129 function: { | |
130 name: 'extractPropertyAccessInfo', | |
131 description: | |
132 'Automatically extracts property access information from conversation with the listing agent, including lockbox codes, lockbox locations, security info, and offer due dates if mentioned. Use this function after confirming a showing to ensure property access details are stored for use during the showing. No parameters needed - automatically processes the conversation.', | |
133 parameters: { | |
134 type: 'object', | |
135 properties: {}, | |
136 required: [], | |
137 additionalProperties: false | |
138 } | |
139 } | |
140 }, | |
141 { | |
142 type: 'function', | |
143 function: { | |
144 name: 'getMyCalendar', | |
145 description: | |
146 'Retrieves my current calendar for a given date. Always call this before scheduling a showing to check my availability. Call this multiple times if you are considering multiple dates for showings.', | |
147 strict: true, | |
148 parameters: { | |
149 type: 'object', | |
150 properties: { | |
151 date: { | |
152 type: 'string', | |
153 description: | |
154 'Date to check for available showing times in YYYY-MM-DD format' | |
155 } | |
156 }, | |
157 required: ['date'], | |
158 additionalProperties: false | |
159 } | |
160 } | |
161 } | |
162 // this function is done by default at the end of every agent text now. | |
163 // { | |
164 // type: "function", | |
165 // function: { | |
166 // name: "replyToClient", | |
167 // description: "Reply to the client. This function sends the text answering a question the client asked, or provides the client with more information about a property or its sellers, after which your task is complete.", | |
168 // parameters: { | |
169 // type: "object", | |
170 // properties: { | |
171 // message: { | |
172 // type: "string", | |
173 // description: "The message to send to the client.", | |
174 // } | |
175 // }, | |
176 // required: ["message"], | |
177 // additionalProperties: false, | |
178 // }, | |
179 // }, | |
180 // }, | |
181 // { type: "code_interpreter" }, | |
182 ] | |
183 | |
16:43:56 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=35) | |
16:43:56 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 16 GLOBAL STEP 16 | |
16:44:02 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:02 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let me check the implementation of the showing service to understand how it works. | |
COMMAND: | |
grep -n "shouldUseShowami" -A 20 /workspace/lib/services/buyer_flow/showing.ts | |
16:44:03 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
830: async shouldUseShowami(options: { | |
831- propertyDetails: PropertyDetails; | |
832- lastMessage?: string; | |
833- senderPhoneNumber?: string; | |
834- }): Promise<boolean> { | |
835- const { propertyDetails, lastMessage, senderPhoneNumber } = options; | |
836- | |
837- // Check for admin override - admin sent message containing 'showami' | |
838- const adminOverride = | |
839- lastMessage && | |
840- senderPhoneNumber && | |
841- Phones.isAdmin(senderPhoneNumber) && | |
842- lastMessage.toLowerCase().includes('showami') | |
843- | |
844- if (adminOverride) { | |
845- return true | |
846- } | |
847- | |
848- // // Check property price and user preference | |
849- // const price = | |
850- // propertyDetails.price || | |
-- | |
927: const useShowami = isShowamiTour? true : await this.shouldUseShowami({ | |
928- propertyDetails, | |
929- lastMessage, | |
930- senderPhoneNumber | |
931- }) | |
932- | |
933- console.log(`useShowami: ${useShowami}`); | |
934- try { | |
935- // Always schedule with regular agent to update systems and send messages | |
936- const regularSchedulingResult = | |
937- await this.regularScheduler.scheduleShowing({ | |
938- address, | |
939- showingTime, | |
940- propertyDetails, | |
941- clientName, | |
942- clientPhone, | |
943- isShowami: useShowami, | |
944- email, | |
945- isTest, | |
946- overrideListingAgentName, | |
947- overrideListingAgentNumber | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:44:03 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=37) | |
16:44:03 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 17 GLOBAL STEP 17 | |
16:44:09 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:09 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check if there's any implementation for handling the case when we're the listing agent. | |
COMMAND: | |
grep -r "listing agent" --include="*.ts" /workspace | grep -i "we're\|we are" | |
16:44:10 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:44:10 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=39) | |
16:44:10 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 18 GLOBAL STEP 18 | |
16:44:15 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:15 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check if there's any implementation for handling the case when we're the listing agent by looking for related terms. | |
COMMAND: | |
grep -r "listing side" --include="*.ts" /workspace | |
16:44:16 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:44:16 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=41) | |
16:44:16 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 19 GLOBAL STEP 19 | |
16:44:22 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:22 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me look for any code that checks if we're the listing agent. | |
COMMAND: | |
grep -r "isListingAgent" --include="*.ts" /workspace | |
16:44:22 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/lib/twilioUtils.ts: if (isListingAgent(userInfo)) { | |
/workspace/lib/twilioUtils.ts:function isListingAgent( | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:44:22 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=43) | |
16:44:22 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 20 GLOBAL STEP 20 | |
16:44:28 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:44:28 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/twilioUtils.ts', start=0, end=-1, thought='Let me check the implementation of the isListingAgent function.', action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=[1, 50]) | |
16:44:28 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/twilioUtils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/twilioUtils.ts: | |
1 import { NextRequest } from 'next/server' | |
2 import { Phones } from './services/realEstate/constants/phoneNumbers' | |
3 import { Person, MR_ListingAgent, MR_User } from './types/sbPeople' | |
4 import { supabaseClient } from './services/shared/supabaseClient' | |
5 import { formatPhoneNumber } from './services/shared/phoneUtils' | |
6 import type { ConversationInstance } from 'twilio/lib/rest/conversations/v1/conversation' | |
7 import { Resend } from 'resend' | |
8 | |
9 /** | |
10 * Removes potentially malicious script or code from input | |
11 * @param input The raw string to sanitize | |
12 * @returns Sanitized string | |
13 */ | |
14 export function sanitizeInput(input: string): string { | |
15 // Convert input to string if it's not already | |
16 const str = String(input) | |
17 | |
18 let sanitized = str | |
19 | |
20 // Remove potential script tags | |
21 sanitized = sanitized.replace( | |
22 /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, | |
23 '' | |
24 ) | |
25 | |
26 // Remove potential onclick attributes | |
27 sanitized = sanitized.replace(/ on\w+="[^"]*"/g, '') | |
28 | |
29 // Remove potential javascript: protocol | |
30 sanitized = sanitized.replace(/javascript:/gi, '') | |
31 | |
32 // Remove backticks to prevent template string injection | |
33 sanitized = sanitized.replace(/`/g, '') | |
34 | |
35 // Remove dollar signs and curly braces ONLY if they're not part of a URL | |
36 const urlPattern = /(https?:\/\/[^\s]+)/g | |
37 const urls = sanitized.match(urlPattern) || [] | |
38 let nonUrlParts = sanitized | |
39 | |
40 // Temporarily replace URLs with placeholders | |
41 urls.forEach((url, i) => { | |
42 nonUrlParts = nonUrlParts.replace(url, `__URL_${i}__`) | |
43 }) | |
44 | |
45 // Apply sanitization to non-URL parts | |
46 nonUrlParts = nonUrlParts.replace(/\$\{/g, '') | |
47 nonUrlParts = nonUrlParts.replace(/[;&|]/g, '') | |
48 | |
49 // Restore URLs | |
50 urls.forEach((url, i) => { | |
16:44:28 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: FileReadAction (id=45) | |
16:44:28 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 21 GLOBAL STEP 21 | |
16:44:34 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:34 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check the implementation of the isListingAgent function. | |
COMMAND: | |
grep -n -A 20 "function isListingAgent" /workspace/lib/twilioUtils.ts | |
16:44:34 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
246:function isListingAgent( | |
247- user: MR_User | MR_ListingAgent | |
248-): user is MR_ListingAgent { | |
249- return ( | |
250- 'agent_id' in user && typeof (user as MR_ListingAgent).agent_id === 'string' | |
251- ) | |
252-} | |
253- | |
254-/** | |
255- * Builds the basic user description with name and status | |
256- */ | |
257-function buildBasicDescription( | |
258- phoneNumber: string, | |
259- userInfo: MR_ListingAgent | MR_User | null | |
260-): string { | |
261- let name: string | |
262- if (!userInfo) { | |
263- name = `${phoneNumber} (please add user into either mr_listingagents or mr_users)` | |
264- } else if (userInfo.first_name && userInfo.last_name) { | |
265- name = `${userInfo.first_name} ${userInfo.last_name}` | |
266- } else if (userInfo.first_name) { | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:44:34 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=47) | |
16:44:34 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 22 GLOBAL STEP 22 | |
16:44:42 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:42 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check if there's any code that determines if we're the listing agent for a property. | |
COMMAND: | |
grep -r "listing agent" --include="*.ts" /workspace | grep -i "our\|we" | |
16:44:43 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/__tests__/showami_instruction_forwarding.test.ts: * details are not lost in the communication chain between listing agents and showing agents. | |
/workspace/__tests__/tour_test_utils.ts: message: `Hi! I'd be happy to help you schedule a showing for ${property.formattedAddress}. Let me check with the listing agent about availability for tomorrow at 9am. I'll get back to you as soon as I hear back.`, | |
/workspace/__tests__/tour_test_utils.ts: message: `The listing agent isn't available tomorrow at 9am, but they suggested Thursday at 9am instead. Would that work for you?`, | |
/workspace/__tests__/tour_test_utils.ts: message: `Great news! The listing agent is available this Friday at 10am to show you ${property.formattedAddress}. I've confirmed the appointment for you. Is there anything specific you'd like to know about the property before your showing?`, | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: * 2. The listing agent/realtor who manages the property | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: * - Forward requests to the appropriate listing agent | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: * - Process responses from the listing agent | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: // 1. The message should indicate that the system is contacting the listing agent | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: "System should try to find a listing agent" | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: // Specifically log the message sent to listing agent | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: console.log("Message sent to listing agent:", listingAgentMessage || "No message sent to listing agent"); | |
/workspace/__tests__/for_client_tour_scheduling_scenario.test.ts: "System should text the listing agent" | |
/workspace/__tests__/property_tour_request.test.ts: * 2. The assistant processes the request and forwards it to the listing agent | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: // Mock the listing agent manager | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: // 1. The message should indicate that the system is contacting the listing agent | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: "System should try to find a listing agent" | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: // Specifically log the message sent to listing agent | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: console.log("Message sent to listing agent:", listingAgentMessage || "No message sent to listing agent"); | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: "System should text the listing agent" | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: // Simulate the listing agent's response to the assistant's inquiry | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: console.log("Message forwarded to listing agent:", messageSentToAgent); | |
/workspace/__tests__/self_tour_scheduling_scenario.test.ts: console.log("Message forwarded to listing agent:", messageSentToAgent); | |
/workspace/lib/services/email/processors/genericEmailProcessor.ts: // If we have a zpid, try to get the listing agent from mr_properties | |
/workspace/lib/services/promptDiff/testScenarios.ts: "Based on the model diagram and listing agent description, I suspect 1269's yard area is private, yes, 'massive sliding glass doors opening to private terraces and garden'. I suspect the 1269 is actually mislisted and the listing is for 1267 if you wandered your way to the home diagram which is the last image in the zillow listing. I asked the listing agent to double check this, but it's late so they might not respond for a sec" | |
/workspace/lib/services/promptDiff/testScenarios.ts: "Liked “Based on the model diagram and listing agent description, I suspect 1269's yard area is private, yes, 'massive sliding glass doors opening to private terraces and garden'. I suspect the 1269 is actually mislisted and the listing is for 1267 if you wandered your way to the home diagram which is the last image in the zillow listing. I asked the listing agent to double check this, but it's late so they might not respond for a sec”\n\n<Sent 3 weeks ago: Tuesday, February 4, 12:04 AM>" | |
/workspace/lib/services/promptDiff/testScenarios.ts: 'Sure! I’ll coordinate with the listing agent and confirm the exact time soon. I want to see it as well. TREEHOUSE!!' | |
/workspace/lib/services/promptDiff/testScenarios.ts: 'Liked “Perfect, checking with the listing agent now—will confirm.”\n\n<Sent 2 weeks ago: Tuesday, February 11, 6:29 PM>' | |
/workspace/lib/services/promptDiff/testScenarios.ts: 'Also listing agent for 50 Valley St pinged me saying offers are due Wednesday the 19th in case you were interested. ' | |
/workspace/lib/services/promptDiff/testScenarios.ts: "content": "<call>\n <summary>The provided transcript only contains an automated voice message from Paul Wong with Skybox Realty asking the caller to leave a message. There was no actual conversation between Raffi Isanians (buyer's agent) and a listing agent to summarize. No property details, showings, offers, negotiations, action items, or deadlines were discussed.</summary>\n </call>" | |
/workspace/lib/services/promptDiff/testScenarios.ts: "content": "SYSTEM PROMPT: \nYou are Raffi Isanians, a Realtor at Kingston Vale Realty. \n\nYour job is to schedule showings by texting other realtors who are listing agents, and relay information that the listing agent tells you to clients via 'replyToClient'. \n\nEvery single message coming to you will be from realtors that you've messaged prior.\n\nWhen handling showing times:\n1. Always include the complete property address\n2. Confirm the exact date and time\n\nDo not respond with any details about the business. \n\nDon't reduce our negotiating position by saying things like the clients are very interested in a property. Keep it cool.\n\nThe answers will be sent over text message, so make the answers SMS friendly. Do not use markdown. DO NOT USE MARKDOWN.\n\nImportant note about 'supra':\nIf an agent mentions a 'supra' or 'lockbox', it means the property has a secure key storage device that allows me access to the property. In this case, the client can be walked through by me to see the property at any time, subject to any restrictions mentioned by the agent. When a supra is mentioned, confirm with the client that they can see the property at their preferred time, but always check for any specific instructions or limitations provided by the listing agent.\nI will always be accompanying clients on their tours.\n\nToday's date is Saturday, 12 April 2025 5:16 PM.\n\nTool call results:\n\n[\n {\n \"type\": \"tool_use\",\n \"id\": \"toolu_01A5uMmzZDT6PVqvDBdjLpf9\",\n \"name\": \"pullClientMessages\",\n \"input\": {}\n }\n]\n\n[\n {\n \"type\": \"tool_result\",\n \"tool_use_id\": \"toolu_01A5uMmzZDT6PVqvDBdjLpf9\",\n \"content\": \"The client is interested in viewing unit 11C at 301 Main Street. The property showing has been confirmed for tomorrow (Sunday, April 13) at 8am, and the owner will leave the door unlocked for them. There's free bike parking in the garage, plus a bike room available for a fee. The client (Marilyn) had previously toured this unit and liked it enough to want her daughter Audrey to see it. They're looking at properties in San Francisco as a second home/investment, particularly seeking walkable neighborhoods with proximity to water.\"\n }\n]" | |
/workspace/lib/services/promptDiff/testScenarios.ts: "content": "Possible 2-bed+ in Russian Hill/Pac Heights under $2M: \n• 1070 Green St APT 102 (zillow.com/homedetails/1070-Green-St-APT-102-San-Francisco-CA-94133/15065999_zpid/) \n• 1179 Filbert St (zillow.com/homedetails/1179-Filbert-St-San-Francisco-CA-94109/15065507_zpid/) \n• 2121 Laguna St #100 (zillow.com/homedetails/2121-Laguna-St-100-San-Francisco-CA-94115/15074339_zpid/) \n\nYes, we can tour 301 Main, 829 Folsom, and 35 Dolores tomorrow. Can meet you at 230 at 301 main if that works! \n\nA property is often contingent because of a pending inspection or financing. It may come back on market if those contingencies aren’t resolved. I can check with the listing agent for specifics." | |
/workspace/lib/services/promptDiff/testScenarios.ts: "content": `${client_facing_text_prompts[0]} \n\nTool call results:\n\n{\n \"content\": null,\n \"tool_calls\": [\n {\n \"id\": \"call_kmOcaRFFmAlMoJBflWb9JP2d\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"convertShortAddressToFullAddress\",\n \"arguments\": \"{\\\"address\\\":\\\"78 Stanton\\\"}\"\n }\n }\n ],\n \"refusal\": null\n}\n\n{\n \"content\": \"{\\n \\\"fullAddress\\\": \\\"78 Stanton Street, San Francisco, CA 94114\\\",\\n \\\"isExistingProperty\\\": false\\n}\"\n}\n\n{\n \"content\": null,\n \"tool_calls\": [\n {\n \"id\": \"call_sapAUT54AmlvJrouRDLGQuXS\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"getSimplifiedPropertyDetails\",\n \"arguments\": \"{\\\"address\\\":\\\"78 Stanton Street, San Francisco, CA 94114\\\"}\"\n }\n }\n ],\n \"refusal\": null\n}\n\n{\n \"content\": \"{\\n \\\"address\\\": \\\"78 Stanton St, San Francisco, CA 94114\\\",\\n \\\"price\\\": 1495000,\\n \\\"bedrooms\\\": 3,\\n \\\"bathrooms\\\": 3,\\n \\\"livingArea\\\": 2163,\\n \\\"yearBuilt\\\": 1910,\\n \\\"homeType\\\": \\\"SINGLE_FAMILY\\\",\\n \\\"description\\\": \\\"Don't let the proximity to Market St fool you - 78 Stanton is a 3bd/3ba Victorian abode situated in a cul-de-sac just steps away from Kite Hill, Castro and Downtown Noe Valley. The versatile 2,163 SF (per graphic artist) property can serve as a 2-family dwelling or a single-family home with income potential. The main residence, a 2-bed, 2-bath, 1,443 SF (per graphic artist) features a formal living room w/ projection screen, an updated chef's kitchen with Wolf range and high-end appliances and immediately adjacent to the dining room - ideal for entertaining. 2 light-filled bedrooms and washer/dryer on the upper level, including a primary suite with private deck. The fully equipped lower unit is a 1bd/1ba, 720 SF (per graphic artist), and offers a separate entrance, deck, full kitchen, in-unit laundry, and ample storage. Beautifully landscaped front and rear yards, two exterior storage sheds, 2024-installed roof. Easy access to Kite Hill at the end of the cul-de-sac leads you down to access shops, bars and restaurants along Castro Street. Close proximity to downtown Noe Valley, and Harvey Milk Plaza for easy public transit to downtown, FIDI, etc.\\\",\\n \\\"monthlyHoaFee\\\": null,\\n \\\"heating\\\": [\\n \\\"Central\\\"\\n ],\\n \\\"cooling\\\": [\\n \\\"None\\\"\\n ],\\n \\\"appliances\\\": [\\n \\\"Dishwasher\\\",\\n \\\"Disposal\\\",\\n \\\"Free-Standing Gas Range\\\",\\n \\\"Free-Standing Refrigerator\\\",\\n \\\"Range Hood\\\",\\n \\\"Microwave\\\",\\n \\\"Washer/Dryer Stacked\\\"\\n ],\\n \\\"schools\\\": [\\n {\\n \\\"name\\\": \\\"Milk (Harvey) Civil Rights Elementary School\\\",\\n \\\"rating\\\": 6,\\n \\\"level\\\": \\\"Elementary\\\",\\n \\\"grades\\\": \\\"K-5\\\",\\n \\\"distance\\\": 0.3\\n },\\n {\\n \\\"name\\\": \\\"Everett Middle School\\\",\\n \\\"rating\\\": 2,\\n \\\"level\\\": \\\"Middle\\\",\\n \\\"grades\\\": \\\"6-8\\\",\\n \\\"distance\\\": 0.8\\n },\\n {\\n \\\"name\\\": \\\"Mission High School\\\",\\n \\\"rating\\\": 4,\\n \\\"level\\\": \\\"High\\\",\\n \\\"grades\\\": \\\"9-12\\\",\\n \\\"distance\\\": 0.9\\n }\\n ],\\n \\\"url\\\": \\\"https://www.zillow.com/homedetails/78-Stanton-St-San-Francisco-CA-94114/15129869_zpid/\\\"\\n}\"\n}\n\n{\n \"content\": null,\n \"tool_calls\": [\n {\n \"id\": \"call_HFm3pcvna0gHt4rnwDlGGEoP\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"askListingAgent\",\n \"arguments\": \"{\\n \\\"address\\\": \\\"78 Stanton Street, San Francisco, CA 94114\\\",\\n \\\"message\\\": \\\"My client is interested in 78 Stanton. Any sense of the seller's flexibility on price or how low they might consider going?\\\"\\n}\"\n }\n }\n ],\n \"refusal\": null\n}\n\n{\n \"content\": \"Sent message: \\\"My client is interested in 78 Stanton. Any sense of the seller's flexibility on price or how low they might consider going?\\\" to listing agent. Noting that you're interested in this property. Here's the property info:\\n\\n{\\n \\\"address\\\": \\\"78 Stanton St, San Francisco, CA 94114\\\",\\n \\\"price\\\": 1495000,\\n \\\"bedrooms\\\": 3,\\n \\\"bathrooms\\\": 3,\\n \\\"livingArea\\\": 2163,\\n \\\"yearBuilt\\\": 1910,\\n \\\"homeType\\\": \\\"SINGLE_FAMILY\\\",\\n \\\"description\\\": \\\"Don't let the proximity to Market St fool you - 78 Stanton is a 3bd/3ba Victorian abode situated in a cul-de-sac just steps away from Kite Hill, Castro and Downtown Noe Valley. The versatile 2,163 SF (per graphic artist) property can serve as a 2-family dwelling or a single-family home with income potential. The main residence, a 2-bed, 2-bath, 1,443 SF (per graphic artist) features a formal living room w/ projection screen, an updated chef's kitchen with Wolf range and high-end appliances and immediately adjacent to the dining room - ideal for entertaining. 2 light-filled bedrooms and washer/dryer on the upper level, including a primary suite with private deck. The fully equipped lower unit is a 1bd/1ba, 720 SF (per graphic artist), and offers a separate entrance, deck, full kitchen, in-unit laundry, and ample storage. Beautifully landscaped front and rear yards, two exterior storage sheds, 2024-installed roof. Easy access to Kite Hill at the end of the cul-de-sac leads you down to access shops, bars and restaurants along Castro Street. Close proximity to downtown Noe Valley, and Harvey Milk Plaza for easy public transit to downtown, FIDI, etc.\\\",\\n \\\"monthlyHoaFee\\\": null,\\n \\\"heating\\\": [\\n \\\"Central\\\"\\n ],\\n \\\"cooling\\\": [\\n \\\"None\\\"\\n ],\\n \\\"appliances\\\": [\\n \\\"Dishwasher\\\",\\n \\\"Disposal\\\",\\n \\\"Free-Standing Gas Range\\\",\\n \\\"Free-Standing Refrigerator\\\",\\n \\\"Range Hood\\\",\\n \\\"Microwave\\\",\\n \\\"Washer/Dryer Stacked\\\"\\n ],\\n \\\"schools\\\": [\\n {\\n \\\"name\\\": \\\"Milk (Harvey) Civil Rights Elementary School\\\",\\n \\\"rating\\\": 6,\\n \\\"level\\\": \\\"Elementary\\\",\\n \\\"grades\\\": \\\"K-5\\\",\\n \\\"distance\\\": 0.3\\n },\\n {\\n \\\"name\\\": \\\"Everett Middle School\\\",\\n \\\"rating\\\": 2,\\n \\\"level\\\": \\\"Middle\\\",\\n \\\"grades\\\": \\\"6-8\\\",\\n \\\"distance\\\": 0.8\\n },\\n {\\n \\\"name\\\": \\\"Mission High School\\\",\\n \\\"rating\\\": 4,\\n \\\"level\\\": \\\"High\\\",\\n \\\"grades\\\": \\\"9-12\\\",\\n \\\"distance\\\": 0.9\\n }\\n ],\\n \\\"url\\\": \\\"https://www.zillow.com/homedetails/78-Stanton-St-San-Francisco-CA-94114/15129869_zpid/\\\"\\n}\"\n}\n\n PullComps: {\"comps\":[{\"bathrooms\":2,\"newConstructionType\":null,\"lotAreaUnits\":\"Square Feet\",\"formattedChip\":{\"location\":[{\"fullValue\":\"436 Capp St\"},{\"fullValue\":\"San Francisco, CA 94110\"}]},\"isPremierBuilder\":false,\"isShowcaseListing\":null,\"hdpUrl\":\"/homedetails/436-Capp-St-San-Francisco-CA-94110/15144849_zpid/\",\"lotAreaValue\":2448.072,\"parentRegion\":{\"name\":\"Mission\"},\"address\":{\"city\":\"San Francisco\",\"state\":\"CA\",\"streetAddress\":\"436 Capp St\",\"zipcode\":\"94110\"},\"state\":\"CA\",\"attributionInfo\":{\"agentPhoneNumber\":null,\"trueStatus\":null,\"providerLogo\":null,\"mlsId\":\"424078468\",\"brokerName\":\"Corcoran Icon Properties\",\"mlsName\":null,\"brokerPhoneNumber\":null,\"agentName\":\"Eileen M. Mougeot DRE #00809994\"},\"latitude\":37.759644,\"homeStatus\":\"RECENTLY_SOLD\",\"listing_sub_type\":{\"is_FSBA\":false,\"is_forAuction\":false,\"is_comingSoon\":false,\"is_foreclosure\":false,\"is_bankOwned\":false,\"is_newHome\":false,\"is_FSBO\":false},\"price\":1420000,\"listingMetadata\":{\"comminglingCategoryIsRulesApplicable\":true},\"bedrooms\":2,\"propertyTypeDimension\":\"Single Family\",\"listingTypeDimension\":\"Unknown Listed By\",\"lotSize\":2448,\"miniCardPhotos\":[{\"url\":\"https://photos.zillowstatic.com/fp/8c284661978ecfa21234cc51f22313bc-p_c.jpg\"}],\"zpid\":15144849,\"hdpTypeDimension\":\"RecentlySold\",\"livingArea\":1400,\"longitude\":-122.41834,\"livingAreaUnitsShort\":\"sqft\",\"providerListingID\":null,\"homeType\":\"SINGLE_FAMILY\",\"currency\":\"USD\",\"livingAreaUnits\":\"Square Feet\",\"livingAreaValue\":1400},{\"bathrooms\":1,\"newConstructionType\":null,\"lotAreaUnits\":\"Square Feet\",\"formattedChip\":{\"location\":[{\"fullValue\":\"1361 Stevenson St\"},{\"fullValue\":\"San Francisco, CA 94103\"}]},\"isPremierBuilder\":false,\"isShowcaseListing\":null,\"hdpUrl\":\"/homedetails/1361-Stevenson-St-San-Francisco-CA-94103/15142462_zpid/\",\"lotAreaValue\":1705,\"parentRegion\":{\"name\":\"South of Market\"},\"address\":{\"city\":\"San Francisco\",\"state\":\"CA\",\"streetAddress\":\"1361 Stevenson St\",\"zipcode\":\"94103\"},\"state\":\"CA\",\"attributionInfo\":{\"agentPhoneNumber\":null,\"trueStatus\":null,\"providerLogo\":null,\"mlsId\":null,\"brokerName\":null,\"mlsName\":null,\"brokerPhoneNumber\":null,\"agentName\":null},\"latitude\":37.770645,\"homeStatus\":\"RECENTLY_SOLD\",\"listing_sub_type\":{\"is_FSBA\":false,\"is_forAuction\":false,\"is_comingSoon\":false,\"is_foreclosure\":false,\"is_bankOwned\":false,\"is_newHome\":false,\"is_FSBO\":false},\"price\":1200000,\"listingMetadata\":{\"comminglingCategoryIsRulesApplicable\":false},\"bedrooms\":3,\"propertyTypeDimension\":\"Single Family\",\"listingTypeDimension\":\"Unknown Listed By\",\"lotSize\":1705,\"miniCardPhotos\":[{\"url\":\"https://maps.googleapis.com/maps/api/staticmap?mobile=false&sensor=true&maptype=satellite&size=316x234&zoom=17¢er=37.77064514160156,-122.42145538330078&key=AIzaSyBWYJWCA8FNMQvSe_k3LKfDGJaEgdKwsco&&signature=aI552MKwMCbcsRJIIBADUTnN6xY=\"}],\"zpid\":15142462,\"hdpTypeDimension\":\"RecentlySold\",\"livingArea\":1540,\"longitude\":-122.421455,\"livingAreaUnitsShort\":\"sqft\",\"providerListingID\":null,\"homeType\":\"SINGLE_FAMILY\",\"currency\":\"USD\",\"livingAreaUnits\":\"Square Feet\",\"livingAreaValue\":1540},{\"bathrooms\":3,\"newConstructionType\":null,\"lotAreaUnits\":\"Square Feet\",\"formattedChip\":{\"location\":[{\"fullValue\":\"3311 20th St\"},{\"fullValue\":\"San Francisco, CA 94110\"}]},\"isPremierBuilder\":false,\"isShowcaseListing\":null,\"hdpUrl\":\"/homedetails/3311-20th-St-San-Francisco-CA-94110/440311828_zpid/\",\"lotAreaValue\":4288,\"parentRegion\":{\"name\":\"Mission\"},\"address\":{\"city\":\"San Francisco\",\"state\":\"CA\",\"streetAddress\":\"3311 20th St\",\"zipcode\":\"94110\"},\"state\":\"CA\",\"attributionInfo\":{\"agentPhoneNumber\":null,\"trueStatus\":null,\"providerLogo\":null,\"mlsId\":\"424064835\",\"brokerName\":\"KW Advisors\",\"mlsName\":null,\"brokerPhoneNumber\":null,\"agentName\":\"Tim A. Brown DRE #00580970\"},\"latitude\":37.75874,\"homeStatus\":\"RECENTLY_SOLD\",\"listing_sub_type\":{\"is_FSBA\":false,\"is_forAuction\":false,\"is_comingSoon\":false,\"is_foreclosure\":false,\"is_bankOwned\":false,\"is_newHome\":false,\"is_FSBO\":false},\"price\":850000,\"listingMetadata\":{\"comminglingCategoryIsRulesApplicable\":true},\"bedrooms\":4,\"propertyTypeDimension\":\"Single Family\",\"listingTypeDimension\":\"Unknown Listed By\",\"lotSize\":4288,\"miniCardPhotos\":[{\"url\":\"https://photos.zillowstatic.com/fp/55e1943d543f89869ece3cd24626520c-p_c.jpg\"}],\"zpid\":440311828,\"hdpTypeDimension\":\"RecentlySold\",\"livingArea\":1417,\"longitude\":-122.41505,\"livingAreaUnitsShort\":\"sqft\",\"providerListingID\":null,\"homeType\":\"SINGLE_FAMILY\",\"currency\":\"USD\",\"livingAreaUnits\":\"Square Feet\",\"livingAreaValue\":1417},{\"bathrooms\":1,\"newConstructionType\":null,\"lotAreaUnits\":\"Square Feet\",\"formattedChip\":{\"location\":[{\"fullValue\":\"176 Linda St\"},{\"fullValue\":\"San Francisco, CA 94110\"}]},\"isPremierBuilder\":false,\"isShowcaseListing\":null,\"hdpUrl\":\"/homedetails/176-Linda-St-San-Francisco-CA-94110/443737910_zpid/\",\"lotAreaValue\":1825.164,\"parentRegion\":{\"name\":\"Mission Dolores\"},\"address\":{\"city\":\"San Francisco\",\"state\":\"CA\",\"streetAddress\":\"176 Linda St\",\"zipcode\":\"94110\"},\"state\":\"CA\",\"attributionInfo\":{\"agentPhoneNumber\":null,\"trueStatus\":null,\"providerLogo\":null,\"mlsId\":\"425000056\",\"brokerName\":\"Compass\",\"mlsName\":null,\"brokerPhoneNumber\":null,\"agentName\":\"Laura A. Rogers DRE #01307471\"},\"latitude\":37.758938,\"homeStatus\":\"RECENTLY_SOLD\",\"listing_sub_type\":{\"is_FSBA\":false,\"is_forAuction\":false,\"is_comingSoon\":false,\"is_foreclosure\":false,\"is_bankOwned\":false,\"is_newHome\":false,\"is_FSBO\":false},\"price\":700000,\"listingMetadata\":{\"comminglingCategoryIsRulesApplicable\":true},\"bedrooms\":2,\"propertyTypeDimension\":\"Single Family\",\"listingTypeDimension\":\"Unknown Listed By\",\"lotSize\":1825,\"miniCardPhotos\":[{\"url\":\"https://maps.googleapis.com/maps/api/streetview?location=176+Linda+St%2C+San+Francisco%2C+CA+94110&size=316x234&key=AIzaSyARFMLB1na-BBWf7_R3-5YOQQaHqEJf6RQ&source=outdoor&&signature=H4ACbLdXrhUrDEbGIuwGosPa4HU=\"}],\"zpid\":443737910,\"hdpTypeDimension\":\"RecentlySold\",\"livingArea\":0,\"longitude\":-122.42299,\"livingAreaUnitsShort\":\"sqft\",\"providerListingID\":null,\"homeType\":\"SINGLE_FAMILY\",\"currency\":\"USD\",\"livingAreaUnits\":\"Square Feet\",\"livingAreaValue\":0},{\"bathrooms\":2,\"newConstructionType\":null,\"lotAreaUnits\":\"Square Feet\",\"formattedChip\":{\"location\":[{\"fullValue\":\"363 Valencia St APT 7\"},{\"fullValue\":\"San Francisco, CA 94103\"}]},\"isPremierBuilder\":false,\"isShowcaseListing\":null,\"hdpUrl\":\"/homedetails/363-Valencia-St-APT-7-San-Francisco-CA-94103/63197150_zpid/\",\"lotAreaValue\":4962,\"parentRegion\":{\"name\":\"Mission\"},\"address\":{\"city\":\"San Francisco\",\"state\":\"CA\",\"streetAddress\":\"363 Valencia St APT 7\",\"zipcode\":\"94103\"},\"state\":\"CA\",\"attributionInfo\":{\"agentPhoneNumber\":null,\"trueStatus\":null,\"providerLogo\":null,\"mlsId\":\"424081841\",\"brokerName\":\"Compass\",\"mlsName\":null,\"brokerPhoneNumber\":null,\"agentName\":\"Isabelle Grotte DRE #01895115\"},\"latitude\":37.76717,\"homeStatus\":\"RECENTLY_SOLD\",\"listing_sub_type\":{\"is_FSBA\":false,\"is_forAuction\":false,\"is_comingSoon\":false,\"is_foreclosure\":false,\"is_bankOwned\":false,\"is_newHome\":false,\"is_FSBO\":false},\"price\":1265000,\"listingMetadata\":{\"comminglingCategoryIsRulesApplicable\":true},\"bedrooms\":1,\"propertyTypeDimension\":\"Townhouse\",\"listingTypeDimension\":\"Unknown Listed By\",\"lotSize\":4962,\"miniCardPhotos\":[{\"url\":\"https://photos.zillowstatic.com/fp/9972f28da1f7bd5f3a86a1d9186f8d4d-p_c.jpg\"}],\"zpid\":63197150,\"hdpTypeDimension\":\"RecentlySold\",\"livingArea\":1451,\"longitude\":-122.42195,\"livingAreaUnitsShort\":\"sqft\",\"providerListingID\":null,\"homeType\":\"TOWNHOUSE\",\"currency\":\"USD\",\"livingAreaUnits\":\"Square Feet\",\"livingAreaValue\":1451}]}` | |
/workspace/lib/services/realEstate/prompts/talksToClientPrompt.ts:When a client asks us a question about the property, answer if you know the answer, but if you don't ask the listing agent via the 'askListingAgent' function. | |
/workspace/lib/services/realEstate/prompts/talksToRealtorPrompt.ts:Your job is to schedule showings by texting other realtors who are listing agents, and relay information that the listing agent tells you to clients via 'replyToClient'. | |
/workspace/lib/services/realEstate/prompts/talksToRealtorPrompt.ts:negotiateShowingTimeWithClient: Used for negotiating showing times with the client since the listing agent proposed a different time to do the showing AFTER the initial request for the showing. When there's a scheduling conflict, acknowledge it professionally and clearly communicate any alternative times proposed by the agent. Use this function to update the client on the agent's availability to do the showing. This function sends the text asking the question, after which your task is complete. | |
/workspace/lib/services/realEstate/prompts/talksToRealtorPrompt.ts:confirmShowingWithClient: Use this function when the proposed showing time has been agreed and confirmed upon by the listing agent. Make sure to provide both the message to forward to the client as well as 'showingTime', which is the YYYY-MM-DD HH:mm format. Always send final tour confirmation to the client if it seems like the realtor is confirming. Include the exact date and time in the message, and mention that you'll provide showing instructions shortly. Write it in a friendly tone. This function sends the text asking the question, after which your task is complete. | |
/workspace/lib/services/realEstate/prompts/talksToRealtorPrompt.ts:pullClientMessages: Use this function to get the interested client's message history. This can be used anytime to understand the realtor's responses, but is especially useful during tour scheduling to ensure both parties agree on showing times. This will automatically pull the right client's messages for the property that realtor is the listing agent for. | |
/workspace/lib/services/realEstate/core/propertyAccessExtractor.ts: // Log the error but don't fail - we'll try the listing agent's ZPID next | |
/workspace/lib/services/realEstate/core/propertyAccessExtractor.ts: zpid, // The ZPID we found either from Zillow API or listing agent | |
/workspace/lib/services/realEstate/core/callSummaryNotificationService.ts:Example good format: "Just spoke with the listing agent about your offer on 123 Main St. They're reviewing it today and will get back to us by 5pm. They mentioned they have another offer to consider as well." | |
/workspace/lib/services/realEstate/configs/realtorTools.ts: "Use this function to get the interested client's message history. This can be used anytime to understand the realtor's responses, but is especially useful during tour scheduling to ensure both parties agree on showing times. This will automatically pull the right client's messages for the property that realtor is the listing agent for.", | |
/workspace/lib/services/realEstate/configs/clientTools.ts: "Used to confirm a showing time with the realtor listing agent that a time has been agreed upon with the client. This function should be used when both parties, client and listing agent, have agreed on a specific time. The time in the message should be in the format 'YYYY-MM-DD HH:mm' (e.g. '2024-03-15 14:30'). This is a 24-hour format without timezone.", | |
/workspace/lib/services/realEstate/configs/clientTools.ts: // description: "Use this function to get the listing real estate agent's message history. This can be used anytime to understand the realtor's responses, but is especially useful during tour scheduling to ensure both client and listing agent agree on showing times. This will automatically pull the right listing agent's messages for the property that client is interested in.", | |
/workspace/lib/services/realEstate/openai_assistant_init/listingAgentAssistantCreator.ts:Your role is to maintain accurate and up-to-date records about listing agents to improve communication and coordination. | |
/workspace/lib/services/twilio/call_utils/callSummary.ts: const summaryPrompt = `Summarize this conversation between Raffi Isanians (buyer's agent) and another listing agent/realtor. Focus on key points like property details, showings, offers, negotiations, and any action items or important deadlines mentioned. | |
/workspace/lib/services/twilio/call_utils/callNotes.ts: const prompt = `You are analyzing a call between Raffi Isanians (real estate agent) and a listing agent about property ${propertyInfo.propertyAddress}. | |
/workspace/lib/services/twilio/call_utils/callNotes.ts: // This is a realtor (likely a listing agent for a property our client is interested in) | |
/workspace/lib/services/twilio/call_utils/draftGenerationFromCalls.ts: const promptForClientMessage = `This is a summary of a call related to a property that your client is interested in. The call might be between myself (Raffi Isanians) and the listing agent, or between two agents discussing the property: | |
/workspace/lib/services/buyer_flow/showing.ts: const clientSummary = `Hi ${clientName.split(' ')[0]}, I've scheduled tours for the following properties on ${formattedStartTime.split(',')[0]}:\n\n${orderedAddresses.join('\n')}\n\nI'll confirm each appointment with the listing agents and get back to you with final confirmations.` | |
/workspace/app/api/showing-request/[hash]/route.ts: `You're confirmed for the showing at <strong>${propertyAddress}</strong> at ${formattedTime}!<br>The phone number for the client is listed in the calendar invite. We've notified the listing agent and they'll be ready for your visit.${property.showami_email ? `<br><br>A calendar invitation has been sent to the showing agent at <strong>${property.showami_email}</strong>.` : ''}` | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:44:43 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=49) | |
16:44:43 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 23 GLOBAL STEP 23 | |
16:44:51 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:44:51 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me check if there's any code that determines if we're the listing agent for a property. | |
COMMAND: | |
grep -r "isOurListing" --include="*.ts" /workspace | |
16:44:51 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:44:51 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=51) | |
16:44:51 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 24 GLOBAL STEP 24 | |
16:45:10 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileEditAction (id=-1) | |
16:45:10 - openhands:INFO: resolve_issue.py:233 - **FileEditAction** | |
Path: [/workspace/__tests__/listing_agent_tour_scheduling.test.ts] | |
Thought: Let me create a test to understand the current behavior and what needs to be fixed. | |
Command: create | |
Created File with Text: | |
``` | |
import { describe, it, expect, beforeEach, jest } from '@jest/globals' | |
import { createTestAssistant } from './tour_test_utils' | |
import { SharedState } from '@/lib/services/realEstate/core/sharedState' | |
import { supabaseClient } from '@/lib/services/shared/supabaseClient' | |
describe('Listing Agent Tour Scheduling', () => { | |
let assistant: any | |
let sharedState: SharedState | |
beforeEach(async () => { | |
// Create a test assistant | |
const result = await createTestAssistant() | |
assistant = result.assistant | |
sharedState = result.sharedState | |
// Mock the supabase client | |
jest.spyOn(supabaseClient, 'from').mockImplementation((table: string) => { | |
if (table === 'mr_properties') { | |
return { | |
select: jest.fn().mockReturnThis(), | |
insert: jest.fn().mockReturnThis(), | |
update: jest.fn().mockReturnThis(), | |
eq: jest.fn().mockReturnThis(), | |
overrideTypes: jest.fn().mockReturnValue({ | |
data: [ | |
{ | |
zpid: '12345', | |
address: '123 Test St, San Francisco, CA 94110', | |
formatted_address: '123 Test St, San Francisco, CA 94110', | |
agent_id: 'agent123', | |
mr_users_id: 'user123', | |
client_proposed_showing_time: null, | |
agent_proposed_showing_time: null, | |
showing_status: null, | |
is_showami_tour: false | |
} | |
], | |
error: null | |
}) | |
} | |
} | |
return { | |
select: jest.fn().mockReturnThis(), | |
insert: jest.fn().mockReturnThis(), | |
update: jest.fn().mockReturnThis(), | |
eq: jest.fn().mockReturnThis(), | |
overrideTypes: jest.fn().mockReturnValue({ | |
data: [], | |
error: null | |
}) | |
} | |
}) | |
}) | |
it('should handle tour requests when we are the listing agent', async () => { | |
// Set up the shared state to simulate we are the listing agent | |
sharedState.listingAgent = { | |
agent_id: 'agent123', | |
phone_number: '+15555555555', | |
current_property_zpid: '12345', | |
current_mr_users_phone_number: '+16666666666' | |
} | |
// Simulate a client message requesting a tour | |
const response = await assistant.chat( | |
'I would like to schedule a tour for 123 Test St tomorrow at 3pm', | |
'+16666666666' | |
) | |
// Check that the response indicates we're handling it as the listing agent | |
expect(response).toContain('schedule') | |
expect(response).toContain('tour') | |
expect(response).toContain('123 Test St') | |
// Check that the draft messages were created correctly | |
const draftMessages = sharedState.messagingService.draftMessages | |
expect(draftMessages.length).toBeGreaterThan(0) | |
// Verify that the system recognized we're the listing agent | |
expect(sharedState.debugOutputs.some(output => | |
output.includes('listing agent') || output.includes('listing side') | |
)).toBeTruthy() | |
}) | |
}) | |
``` | |
16:45:10 - openhands:INFO: resolve_issue.py:233 - File created successfully at: /workspace/__tests__/listing_agent_tour_scheduling.test.ts | |
16:45:10 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileEditAction (id=53) | |
16:45:10 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileEditObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 25 GLOBAL STEP 25 | |
16:45:18 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:45:18 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's run the test to see what happens when we're the listing agent. | |
COMMAND: | |
./bun test __tests__/listing_agent_tour_scheduling.test.ts | |
16:45:18 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
bun test v1.1.34 (5e5e7c60) | |
__tests__/listing_agent_tour_scheduling.test.ts: | |
# Unhandled error between tests | |
------------------------------- | |
error: Cannot find module '@supabase/supabase-js' from '/workspace/lib/services/shared/supabase/client.ts' | |
------------------------------- | |
---------------------------------------------------|---------|---------|------------------- | |
File | % Funcs | % Lines | Uncovered Line #s | |
---------------------------------------------------|---------|---------|------------------- | |
All files | -nan | -nan | | |
---------------------------------------------------|---------|---------|------------------- | |
0 pass | |
1 fail | |
1 error | |
Ran 1 tests across 1 files. [99.00ms] | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:45:18 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=55) | |
16:45:18 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 26 GLOBAL STEP 26 | |
16:45:25 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:45:25 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let's install the missing dependencies and try again. | |
COMMAND: | |
npm install @supabase/supabase-js | |
16:46:27 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
npm warn deprecated [email protected]: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. | |
npm warn deprecated @types/[email protected]: This is a stub types definition. handlebars provides its own type definitions, so you do not need this installed. | |
npm warn deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. | |
npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported | |
npm warn deprecated @types/[email protected]: This is a stub types definition. sharp provides its own type definitions, so you do not need this installed. | |
added 1139 packages, and audited 1140 packages in 1m | |
312 packages are looking for funding | |
run `npm fund` for details | |
9 moderate severity vulnerabilities | |
To address issues that do not require attention, run: | |
npm audit fix | |
To address all issues (including breaking changes), run: | |
npm audit fix --force | |
Run `npm audit` for details. | |
npm notice | |
npm notice New major version of npm available! 10.9.2 -> 11.3.0 | |
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.3.0 | |
npm notice To update run: npm install -g [email protected] | |
npm notice | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:46:27 - openhands:WARNING: agent_controller.py:949 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Pending action active for 62.24s: CmdRunAction (id=57) | |
16:46:27 - openhands:WARNING: agent_controller.py:949 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Pending action active for 62.24s: CmdRunAction (id=57) | |
16:46:27 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 62.24s: CmdRunAction (id=57) | |
16:46:27 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 27 GLOBAL STEP 27 | |
16:46:34 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:46:34 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's run the test again. | |
COMMAND: | |
./bun test __tests__/listing_agent_tour_scheduling.test.ts | |
16:46:35 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
bun test v1.1.34 (5e5e7c60) | |
__tests__/listing_agent_tour_scheduling.test.ts: | |
# Unhandled error between tests | |
------------------------------- | |
1 | (function (entry, fetcher) | |
^ | |
SyntaxError: Export named 'createTestAssistant' not found in module '/workspace/__tests__/tour_test_utils.ts'. | |
------------------------------- | |
---------------------------------------------------|---------|---------|------------------- | |
File | % Funcs | % Lines | Uncovered Line #s | |
---------------------------------------------------|---------|---------|------------------- | |
All files | -nan | -nan | | |
---------------------------------------------------|---------|---------|------------------- | |
0 pass | |
1 fail | |
1 error | |
Ran 1 tests across 1 files. [91.00ms] | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:46:35 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=59) | |
16:46:35 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 28 GLOBAL STEP 28 | |
16:46:43 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:46:43 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/__tests__/tour_test_utils.ts', start=0, end=-1, thought="Let's check the tour_test_utils.ts file to see what functions are available.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:46:43 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/__tests__/tour_test_utils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/__tests__/tour_test_utils.ts: | |
1 import { PropertyDetails } from "@/lib/types/property"; | |
2 import { Phones } from "@/lib/services/realEstate/constants/phoneNumbers"; | |
3 import { supabaseClient } from "@/lib/services/shared/supabaseClient"; | |
4 import { mr_messages } from "@/lib/types/messages"; | |
5 | |
6 /** | |
7 * Sets up predefined test messages in the database to simulate a self-tour scheduling conversation | |
8 * This allows tests to start at different stages of the conversation without simulating each message exchange | |
9 * | |
10 * @param params - Parameters object | |
11 * @param params.clientNumber - Client's phone number | |
12 * @param params.listingAgentNumber - Listing agent's phone number | |
13 * @param params.property - Property details | |
14 * @param params.stageIndex - Index of the conversation stage to set up (1-4) | |
15 * @returns Promise<void> | |
16 */ | |
17 export async function setupPredefinedTestMessages({ | |
18 clientNumber, | |
19 listingAgentNumber, | |
20 property, | |
21 stageIndex | |
22 }: { | |
23 clientNumber: string, | |
24 listingAgentNumber: string, | |
25 property: PropertyDetails, | |
26 stageIndex: number | |
27 }): Promise<void> { | |
28 // Define the predefined messages for each stage of the conversation | |
29 const predefinedMessages = [ | |
30 // Stage 1: Initial request | |
31 { | |
32 timestamp: new Date(Date.now() - 60000), // 1 minute ago | |
33 message: `I'd like to schedule a showing for ${property.formattedAddress}. Would tomorrow at 9am work?`, | |
34 sender_phone_number: clientNumber, | |
35 receiver_phone_number: Phones.SELF | |
36 }, | |
37 { | |
38 timestamp: new Date(Date.now() - 50000), // 50 seconds ago | |
39 message: `Hi! I'd be happy to help you schedule a showing for ${property.formattedAddress}. Let me check with the listing agent about availability for tomorrow at 9am. I'll get back to you as soon as I hear back.`, | |
40 sender_phone_number: Phones.SELF, | |
41 receiver_phone_number: clientNumber | |
42 }, | |
43 { | |
44 timestamp: new Date(Date.now() - 40000), // 40 seconds ago | |
45 message: `Hello, I have a client interested in viewing ${property.formattedAddress} tomorrow at 9am. Would that time work for you?`, | |
46 sender_phone_number: Phones.SELF, | |
47 receiver_phone_number: listingAgentNumber | |
48 }, | |
49 | |
50 // Stage 2: Agent suggests alternative time | |
51 { | |
52 timestamp: new Date(Date.now() - 30000), // 30 seconds ago | |
53 message: "I apologize, but I can't make it at 9am tomorrow. Would 9am on Thursday work better for you?", | |
54 sender_phone_number: listingAgentNumber, | |
55 receiver_phone_number: Phones.SELF | |
56 }, | |
57 { | |
58 timestamp: new Date(Date.now() - 25000), // 25 seconds ago | |
59 message: `The listing agent isn't available tomorrow at 9am, but they suggested Thursday at 9am instead. Would that work for you?`, | |
60 sender_phone_number: Phones.SELF, | |
61 receiver_phone_number: clientNumber | |
62 }, | |
63 | |
64 // Stage 3: Client counter-proposal | |
65 { | |
66 timestamp: new Date(Date.now() - 20000), // 20 seconds ago | |
67 message: "2pm Friday? or maybe 10am Friday?", | |
68 sender_phone_number: clientNumber, | |
69 receiver_phone_number: Phones.SELF | |
70 }, | |
71 { | |
72 timestamp: new Date(Date.now() - 15000), // 15 seconds ago | |
73 message: `My client can't make Thursday at 9am. They're asking if either Friday at 10am or Friday at 2pm would work. Please let me know which option is best for you.`, | |
74 sender_phone_number: Phones.SELF, | |
75 receiver_phone_number: listingAgentNumber | |
76 }, | |
77 | |
78 // Stage 4: Agent confirms time | |
79 { | |
80 timestamp: new Date(Date.now() - 10000), // 10 seconds ago | |
81 message: "10am friday is good!", | |
82 sender_phone_number: listingAgentNumber, | |
83 receiver_phone_number: Phones.SELF | |
84 }, | |
85 { | |
86 timestamp: new Date(Date.now() - 5000), // 5 seconds ago | |
87 message: `Great news! The listing agent is available this Friday at 10am to show you ${property.formattedAddress}. I've confirmed the appointment for you. Is there anything specific you'd like to know about the property before your showing?`, | |
88 sender_phone_number: Phones.SELF, | |
89 receiver_phone_number: clientNumber | |
90 } | |
91 ]; | |
92 | |
93 // Determine which messages to insert based on stageIndex | |
94 const messagesToInsert = []; | |
95 | |
96 switch (stageIndex) { | |
97 case 1: | |
98 // Only Stage 1 messages | |
99 messagesToInsert.push(...predefinedMessages.slice(0, 3)); | |
100 break; | |
101 case 2: | |
102 // Stage 1 + Stage 2 messages | |
103 messagesToInsert.push(...predefinedMessages.slice(0, 5)); | |
104 break; | |
105 case 3: | |
106 // Stage 1 + Stage 2 + Stage 3 messages | |
107 messagesToInsert.push(...predefinedMessages.slice(0, 7)); | |
108 break; | |
109 case 4: | |
110 // All messages | |
111 messagesToInsert.push(...predefinedMessages); | |
112 break; | |
113 default: | |
114 throw new Error(`Invalid stageIndex: ${stageIndex}. Must be between 1 and 4.`); | |
115 } | |
116 | |
117 // Insert messages into database | |
118 for (const message of messagesToInsert) { | |
119 const { error } = await supabaseClient | |
120 .from('mr_messages') | |
121 .insert({ | |
122 ...message, | |
123 backend_version: 'test-utils.ts:setupPredefinedTestMessages', | |
124 status: 'delivered', | |
125 sending_service: 'test-utils' | |
126 }) | |
127 .overrideTypes<mr_messages[], { merge: false }>(); | |
128 | |
129 if (error) { | |
130 console.error('Error inserting predefined message:', error); | |
131 throw error; | |
132 } | |
133 } | |
134 // TODO: check to make sure that these relationships are set up in the db, dont create them manually | |
135 // // If we've set up stage 4, also update the property status in the database | |
136 // if (stageIndex === 4 && property.zpid) { | |
137 // // Check if property exists | |
138 // const { data: existingProps, error: checkError } = await supabaseClient | |
139 // .from('mr_properties') | |
140 // .select('*') | |
141 // .eq('zpid', property.zpid) | |
142 // .limit(1); | |
143 | |
144 // if (checkError) { | |
145 // console.error('Error checking property:', checkError); | |
146 // throw checkError; | |
147 // } | |
148 | |
149 // if (existingProps && existingProps.length > 0) { | |
150 // // Update existing property | |
151 // const { error: updateError } = await supabaseClient | |
152 // .from('mr_properties') | |
153 // .update({ showing_status: 'confirmed' }) | |
154 // .eq('zpid', property.zpid); | |
155 | |
156 // if (updateError) { | |
157 // console.error('Error updating property status:', updateError); | |
158 // throw updateError; | |
159 // } | |
160 // } else { | |
161 // // Insert new property | |
162 // const { error: insertError } = await supabaseClient | |
163 // .from('mr_properties') | |
164 // .insert({ | |
165 // zpid: property.zpid, | |
166 // address: property.formattedAddress, | |
167 // showing_status: 'confirmed', | |
168 // price: property.price | |
169 // }); | |
170 | |
171 // if (insertError) { | |
172 // console.error('Error inserting property:', insertError); | |
173 // throw insertError; | |
174 // } | |
175 // } | |
176 // } | |
177 | |
178 console.log(`Successfully set up predefined test messages for stage ${stageIndex}`); | |
179 } | |
16:46:43 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=61) | |
16:46:43 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 29 GLOBAL STEP 29 | |
16:46:50 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:46:50 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let's check the test utils in the services directory to see if there's a function to create a test assistant. | |
COMMAND: | |
find /workspace -type f -name "test-utils.ts" | |
16:46:51 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/lib/services/__tests__/utils/test-utils.ts | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:46:51 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=63) | |
16:46:51 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 30 GLOBAL STEP 30 | |
16:46:58 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:46:58 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/__tests__/utils/test-utils.ts', start=0, end=-1, thought="Let's check the test-utils.ts file in the services directory.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=None) | |
16:46:58 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/__tests__/utils/test-utils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/__tests__/utils/test-utils.ts: | |
1 import { AssistantCore } from '@/lib/services/realEstate/core/assistantCore' | |
2 import { logTestResult, supabaseClient } from '@/lib/services/shared/supabaseClient' | |
3 import { formatFullAddressParts, PropertyDetails } from '@/lib/types/property' | |
4 import { v4 as uuidv4 } from 'uuid' | |
5 import { getPropertyDetails } from '@/lib/services/zillow_ops/zil' | |
6 import { mock } from 'bun:test' | |
7 import { redis } from '@/lib/redis' | |
8 import { MR_ListingAgent, mr_people, MR_User } from '@/lib/types/sbPeople' | |
9 import { formatPhoneNumber } from '../../shared/phoneUtils' | |
10 import { Properties } from '@/lib/services/realEstate/constants/properties' | |
11 import { | |
12 findContactByPhone, | |
13 insertPerson, | |
14 getClientByPhone, | |
15 insertUser, | |
16 getListingAgentByPhone, | |
17 insertListingAgent | |
18 } from '@/lib/services/shared/supabaseClient' // Import the necessary functions | |
19 import { mr_properties_Row } from '@/lib/types/property' | |
20 import { WithCache } from '@/lib/services/shared/cacheDecorator' | |
21 import { formatFullAddress } from '@/lib/types/property' | |
22 import dayjs from 'dayjs' | |
23 import { convertToMRPropertiesRow } from '../../realEstate/core/listingAgentManager' | |
24 import { PropertyService } from '../../buyer_flow/property' | |
25 | |
26 const DELANCEY_PROPERTY = Properties.LISTED_HOME.fullAddress | |
27 | |
28 // 15 minutes in seconds | |
29 const REDIS_EXPIRY_TIME = 15 * 60; | |
30 // Maximum attempts before erroring to prevent infinite loops | |
31 const MAX_ATTEMPTS = 250; | |
32 // Default expiry time for the tests_running flag in seconds (10 minutes) | |
33 const DEFAULT_TESTS_RUNNING_EXPIRY = 600; | |
34 const ONE_DAY_IN_SECONDS = 86400 | |
35 | |
36 export interface MyTestContext { | |
37 assistant: AssistantCore | |
38 clientNumber: string | |
39 client: MR_User | |
40 listingAgentNumber: string | |
41 listingAgent: MR_ListingAgent | |
42 adminNumber: string | |
43 phoneGenerator: TestPhoneGenerator | |
44 generateProperty: () => Promise<PropertyDetails> | |
45 // getCachedPropertyFromExtendedSearch: () => Promise<PropertyDetails> | |
46 cleanup: () => Promise<void> | |
47 supabaseClient: typeof supabaseClient | |
48 testId: string // Unique ID for this test instance | |
49 setTestsRunningFlag: (expirySeconds?: number) => Promise<void> // Function to set tests_running flag | |
50 clearTestsRunningFlag: () => Promise<void> // Function to clear tests_running flag | |
51 generateUnknownPerson: (name?: string) => Promise<string> // Function to generate an unknown person | |
52 } | |
53 | |
54 /** | |
55 * Sets the tests_running flag in Redis | |
56 * | |
57 * @param expirySeconds - Optional expiry time in seconds, defaults to 10 minutes | |
58 */ | |
59 export async function setTestsRunningFlag(expirySeconds: number = DEFAULT_TESTS_RUNNING_EXPIRY): Promise<void> { | |
60 await redis.set('tests_running', 'true', { ex: expirySeconds }); | |
61 console.log(`Set tests_running flag to true with ${expirySeconds} second expiry`); | |
62 } | |
63 | |
64 /** | |
65 * Clears the tests_running flag from Redis | |
66 */ | |
67 export async function clearTestsRunningFlag(): Promise<void> { | |
68 await redis.del('tests_running'); | |
69 console.log('Cleared tests_running flag'); | |
70 } | |
71 | |
72 export class TestPhoneGenerator { | |
73 private clientCounter = 0 | |
74 private listingAgentCounter = 0 | |
75 private adminCounter = 0 | |
76 private lastGeneratedListingAgentNumber: string = '' | |
77 private lastGeneratedListingAgentName: string = '' | |
78 private testId: string | |
79 private allocatedPhoneNumbers: string[] = [] | |
80 private generatedZpids: string[] = [] // Add tracking for generated ZPIDs | |
81 | |
82 constructor(testId: string) { | |
83 this.testId = testId; | |
84 } | |
85 | |
86 async generateClient(name: string = 'client'): Promise<string> { | |
87 // Find an available phone number that's not already in use | |
88 let phoneNumber = ''; | |
89 let redisKey = ''; | |
90 let exists = true; | |
91 let attempts = 0; | |
92 | |
93 while (exists) { | |
94 // Check for too many attempts to prevent infinite loops | |
95 if (attempts >= MAX_ATTEMPTS) { | |
96 throw new Error(`More than ${MAX_ATTEMPTS} test instances occupied. Erroring due to infinite loop halt (are test numbers getting deleted?)`); | |
97 } | |
98 | |
99 // Create a unique key for this test run | |
100 redisKey = `test:phone:client:${this.testId}:${this.clientCounter}`; | |
101 phoneNumber = `+test_${name}${this.testId.substring(0, 4)}_${this.clientCounter}`; | |
102 | |
103 // Check if this key already exists in Redis | |
104 const keyExists = await redis.exists(redisKey); | |
105 | |
106 if (!keyExists) { | |
107 exists = false; | |
108 } else { | |
109 // Key exists, increment counter and try again | |
110 this.clientCounter++; | |
111 attempts++; | |
112 } | |
113 } | |
114 | |
115 // Store in Redis with the test ID and increment counter, with 15-minute expiry | |
116 await redis.set(redisKey, phoneNumber, { ex: REDIS_EXPIRY_TIME }); | |
117 await redis.sadd(`test:allocated:${this.testId}`, redisKey); | |
118 // Set expiry on the allocation set as well | |
119 await redis.expire(`test:allocated:${this.testId}`, REDIS_EXPIRY_TIME); | |
120 | |
121 this.allocatedPhoneNumbers.push(phoneNumber); | |
122 this.clientCounter++; // Increment for next time | |
123 | |
124 // Create a record in the mr_users table | |
125 try { | |
126 // First check if the client already exists to avoid duplicates | |
127 const existingUser = await getClientByPhone(phoneNumber); | |
128 | |
129 if (!existingUser) { | |
130 // Create a new client with minimal fields | |
131 const newUser: Partial<MR_User> = { | |
132 phone_number: phoneNumber, | |
133 first_name: name, | |
134 last_name: 'Test', | |
135 user_id: crypto.randomUUID(), | |
136 do_not_text: false, | |
137 previously_texted: false, | |
138 is_test: true | |
139 }; | |
140 | |
141 // Insert the new client using the helper function | |
142 await insertUser(newUser); | |
143 } | |
144 } catch (error) { | |
145 console.error('Error creating client record in database:', error); | |
146 // Continue anyway to avoid breaking tests | |
147 } | |
148 | |
149 return phoneNumber; | |
150 } | |
151 | |
152 async generateListingAgent( | |
153 name: string = 'agent' | |
154 ): Promise<{ phoneNumber: string; name: string }> { | |
155 // Find an available phone number that's not already in use | |
156 let phoneNumber = ''; | |
157 let redisKey = ''; | |
158 let exists = true; | |
159 let attempts = 0; | |
160 | |
161 while (exists) { | |
162 // Check for too many attempts to prevent infinite loops | |
163 if (attempts >= MAX_ATTEMPTS) { | |
164 throw new Error(`More than ${MAX_ATTEMPTS} test instances occupied. Erroring due to infinite loop halt (are test numbers getting deleted?)`); | |
165 } | |
166 | |
167 // Create a unique key for this test run | |
168 redisKey = `test:phone:listingAgent:${this.testId}:${this.listingAgentCounter}`; | |
169 phoneNumber = `+test_${name}${this.testId.substring(0, 4)}_${this.listingAgentCounter}`; | |
170 | |
171 // Check if this key already exists in Redis | |
172 const keyExists = await redis.exists(redisKey); | |
173 | |
174 if (!keyExists) { | |
175 exists = false; | |
176 } else { | |
177 // Key exists, increment counter and try again | |
178 this.listingAgentCounter++; | |
179 attempts++; | |
180 } | |
181 } | |
182 | |
183 // Store in Redis with the test ID, with 15-minute expiry | |
184 await redis.set(redisKey, phoneNumber, { ex: REDIS_EXPIRY_TIME }); | |
185 await redis.sadd(`test:allocated:${this.testId}`, redisKey); | |
186 // Set expiry on the allocation set as well | |
187 await redis.expire(`test:allocated:${this.testId}`, REDIS_EXPIRY_TIME); | |
188 | |
189 this.lastGeneratedListingAgentNumber = phoneNumber; | |
190 this.lastGeneratedListingAgentName = name; | |
191 this.allocatedPhoneNumbers.push(phoneNumber); | |
192 this.listingAgentCounter++; // Increment for next time | |
193 | |
194 // Create a record in the mr_listingagents table | |
195 try { | |
196 // First check if the agent already exists to avoid duplicates | |
197 const existingAgent = await getListingAgentByPhone(phoneNumber); | |
198 | |
199 if (!existingAgent) { | |
200 // Create a new agent with minimal fields | |
201 const newAgent: Partial<MR_ListingAgent> = { | |
202 phone_number: phoneNumber, | |
203 first_name: name, | |
204 last_name: 'Test', | |
205 agent_id: crypto.randomUUID(), | |
206 created_at: new Date(), | |
207 is_test: true | |
208 }; | |
209 | |
210 // Insert the new agent using the helper function | |
211 await insertListingAgent(newAgent); | |
212 } | |
213 } catch (error) { | |
214 console.error('Error creating listing agent record in database:', error); | |
215 // Continue anyway to avoid breaking tests | |
216 } | |
217 | |
218 return { phoneNumber, name }; | |
219 } | |
220 | |
221 async generateAdmin(name: string = 'admin'): Promise<string> { | |
222 // Find an available phone number that's not already in use | |
223 let phoneNumber = ''; | |
224 let redisKey = ''; | |
225 let exists = true; | |
226 let attempts = 0; | |
227 | |
228 while (exists) { | |
229 // Check for too many attempts to prevent infinite loops | |
230 if (attempts >= MAX_ATTEMPTS) { | |
231 throw new Error(`More than ${MAX_ATTEMPTS} test instances occupied. Erroring due to infinite loop halt (are test numbers getting deleted?)`); | |
232 } | |
233 | |
234 // Create a unique key for this test run | |
235 redisKey = `test:phone:admin:${this.testId}:${this.adminCounter}`; | |
236 phoneNumber = `+test_admin${this.testId.substring(0, 4)}_${this.adminCounter}`; | |
237 | |
238 // Check if this key already exists in Redis | |
239 const keyExists = await redis.exists(redisKey); | |
240 | |
241 if (!keyExists) { | |
242 exists = false; | |
243 } else { | |
244 // Key exists, increment counter and try again | |
245 this.adminCounter++; | |
246 attempts++; | |
247 } | |
248 } | |
249 | |
250 // Store in Redis with the test ID, with 15-minute expiry | |
251 await redis.set(redisKey, phoneNumber, { ex: REDIS_EXPIRY_TIME }); | |
252 await redis.sadd(`test:allocated:${this.testId}`, redisKey); | |
253 // Set expiry on the allocation set as well | |
254 await redis.expire(`test:allocated:${this.testId}`, REDIS_EXPIRY_TIME); | |
255 | |
256 this.allocatedPhoneNumbers.push(phoneNumber); | |
257 this.adminCounter++; // Increment for next time | |
258 return phoneNumber; | |
259 } | |
260 | |
261 async generateUnknownNumber(name: string = 'unknown'): Promise<string> { | |
262 // Find an available phone number that's not already in use | |
263 let phoneNumber = ''; | |
264 let redisKey = ''; | |
265 let exists = true; | |
266 let attempts = 0; | |
267 | |
268 while (exists) { | |
269 // Check for too many attempts to prevent infinite loops | |
270 if (attempts >= MAX_ATTEMPTS) { | |
271 throw new Error(`More than ${MAX_ATTEMPTS} test instances occupied. Erroring due to infinite loop halt (are test numbers getting deleted?)`); | |
272 } | |
273 | |
274 // Create a unique key for this test run | |
275 redisKey = `test:phone:unknown:${this.testId}:${this.adminCounter}`; | |
276 phoneNumber = `+test_${name}${this.testId.substring(0, 4)}_${this.adminCounter}`; | |
277 | |
278 // Check if this key already exists in Redis | |
279 const keyExists = await redis.exists(redisKey); | |
280 | |
281 if (!keyExists) { | |
282 exists = false; | |
283 } else { | |
284 // Key exists, increment counter and try again | |
285 this.adminCounter++; | |
286 attempts++; | |
287 } | |
288 } | |
289 | |
290 // Store in Redis with the test ID, with 15-minute expiry | |
291 await redis.set(redisKey, phoneNumber, { ex: REDIS_EXPIRY_TIME }); | |
292 await redis.sadd(`test:allocated:${this.testId}`, redisKey); | |
293 // Set expiry on the allocation set as well | |
294 await redis.expire(`test:allocated:${this.testId}`, REDIS_EXPIRY_TIME); | |
295 | |
296 this.allocatedPhoneNumbers.push(phoneNumber); | |
297 this.adminCounter++; // Increment for next time | |
298 return phoneNumber; | |
299 } | |
300 | |
301 getLastGeneratedListingAgentNumber(): string { | |
302 return this.lastGeneratedListingAgentNumber; | |
303 } | |
304 | |
305 getLastGeneratedListingAgentName(): string { | |
306 return this.lastGeneratedListingAgentName; | |
307 } | |
308 | |
309 getAllocatedPhoneNumbers(): string[] { | |
310 return [...this.allocatedPhoneNumbers]; | |
311 } | |
312 | |
313 // Add a method to track generated ZPIDs | |
314 addGeneratedZpid(zpid: string): void { | |
315 this.generatedZpids.push(zpid); | |
316 } | |
317 | |
318 // Get all generated ZPIDs | |
319 getGeneratedZpids(): string[] { | |
320 return [...this.generatedZpids]; | |
321 } | |
322 | |
323 async cleanup(): Promise<void> { | |
324 try { | |
325 // Get all keys allocated to this test ID | |
326 const keys = await redis.smembers(`test:allocated:${this.testId}`); | |
327 | |
328 // Delete all the individual phone entries | |
329 if (keys.length > 0) { | |
330 await redis.del(...keys); | |
331 } | |
332 | |
333 // Delete the set itself | |
334 await redis.del(`test:allocated:${this.testId}`); | |
335 | |
336 // SUPABASE CLEANUP | |
337 // Get list of phone numbers to clean up | |
338 const phoneNumbers = this.getAllocatedPhoneNumbers(); | |
339 const likePatterns = phoneNumbers.map(num => `${num.replace('+', '\+')}%`); | |
340 | |
341 // Ensure all phone numbers contain "test" to avoid deleting real data | |
342 const safePatterns = likePatterns.filter(pattern => pattern.toLowerCase().includes('test')); | |
343 | |
344 // If any patterns don't include "test", log a warning and remove them | |
345 if (safePatterns.length < likePatterns.length) { | |
346 console.warn(`Filtered out ${likePatterns.length - safePatterns.length} phone patterns that didn't contain "test" for safety`); | |
347 // Replace the original array with the filtered one | |
348 likePatterns.length = 0; | |
349 likePatterns.push(...safePatterns); | |
350 } | |
351 | |
352 // Clean up from supabase | |
353 try { | |
354 // --- Fetch relevant IDs first --- | |
355 const userIdsToDelete: string[] = []; | |
356 for (const pattern of likePatterns) { | |
357 const { data: users, error } = await supabaseClient | |
358 .from('mr_users') | |
359 .select('*') | |
360 .like('phone_number', pattern) | |
361 .overrideTypes<MR_User[], { merge: false }>(); | |
362 if (error) { | |
363 console.error(`Error fetching user IDs for pattern ${pattern}:`, error); | |
364 } else if (users) { | |
365 userIdsToDelete.push(...users.map(u => u.user_id!)); | |
366 } | |
367 } | |
368 const uniqueUserIds = [...new Set(userIdsToDelete)]; | |
369 | |
370 // Get specific ZPIDs to delete instead of using a pattern | |
371 const specificZpids = this.getGeneratedZpids(); | |
372 console.log(`Cleaning up ${specificZpids.length} specifically tracked ZPIDs`); | |
373 console.log(specificZpids) | |
374 | |
375 // --- Clean up related tables using IDs or patterns --- | |
376 | |
377 // Clean up property notes using specific ZPIDs | |
378 if (specificZpids.length > 0) { | |
379 await supabaseClient | |
380 .from('mr_propertynotes') | |
381 .delete() | |
382 .in('property_zpid', specificZpids); | |
383 } | |
384 | |
385 // Clean up sent listings and emails using user IDs | |
386 if (uniqueUserIds.length > 0) { | |
387 await supabaseClient | |
388 .from('mr_sentlistings') | |
389 .delete() | |
390 .in('user_id', uniqueUserIds); | |
391 | |
392 await supabaseClient | |
393 .from('mr_emails') | |
394 .delete() | |
395 .in('user_id', uniqueUserIds); | |
396 } | |
397 | |
398 // Clean up user, agent, people, and showami data using phone patterns | |
399 for (const pattern of likePatterns) { | |
400 await supabaseClient | |
401 .from('mr_users') | |
402 .delete() | |
403 .like('phone_number', pattern); | |
404 | |
405 await supabaseClient | |
406 .from('mr_listingagents') | |
407 .delete() | |
408 .like('phone_number', pattern); | |
409 | |
410 await supabaseClient | |
411 .from('mr_people') | |
412 .delete() | |
413 .like('phone_number', pattern); | |
414 | |
415 await supabaseClient | |
416 .from('mr_showamis') | |
417 .delete() | |
418 .like('phone_number', pattern); | |
419 } | |
420 | |
421 // Clean up property data using specific ZPIDs instead of pattern | |
422 if (specificZpids.length > 0) { | |
423 await supabaseClient | |
424 .from('mr_properties') | |
425 .delete() | |
426 .in('zpid', specificZpids); | |
427 } | |
428 | |
429 // Clean up messages and calls using phone patterns | |
430 for (const pattern of likePatterns) { | |
431 const orCondition = `sender_phone_number.like.${pattern},receiver_phone_number.like.${pattern}`; | |
432 await supabaseClient | |
433 .from('mr_messages') | |
434 .delete() | |
435 .or(orCondition); | |
436 | |
437 const callOrCondition = `caller_phone_number.like.${pattern},receiver_phone_number.like.${pattern}`; | |
438 await supabaseClient | |
439 .from('mr_calls') | |
440 <response clipped><NOTE>Due to the max output limit, only part of this file has been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.</NOTE> | |
16:46:58 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=65) | |
16:46:58 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 31 GLOBAL STEP 31 | |
16:47:07 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:47:07 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let me search for the function to create a test assistant in the test-utils.ts file. | |
COMMAND: | |
grep -n "createTestAssistant\|setupTest" /workspace/lib/services/__tests__/utils/test-utils.ts | |
16:47:07 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
552:export async function setupTest(): Promise<MyTestContext> { | |
757: const context = await setupTest(); | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:47:07 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=67) | |
16:47:07 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 32 GLOBAL STEP 32 | |
16:47:16 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:47:16 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/__tests__/utils/test-utils.ts', start=0, end=-1, thought="Let's look at the setupTest function in the test-utils.ts file.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=[552, 600]) | |
16:47:16 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/__tests__/utils/test-utils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/__tests__/utils/test-utils.ts: | |
552 export async function setupTest(): Promise<MyTestContext> { | |
553 // Generate a unique ID for this test run | |
554 const testId = uuidv4(); | |
555 await setTestsRunningFlag() | |
556 | |
557 // Create a new phone generator for this test instance | |
558 const phoneGenerator = new TestPhoneGenerator(testId); | |
559 const clientNumber = await phoneGenerator.generateClient(); | |
560 const { phoneNumber: listingAgentNumber, name: listingAgentName } = await phoneGenerator.generateListingAgent(); | |
561 const adminNumber = await phoneGenerator.generateAdmin(); | |
562 | |
563 const assistant = new AssistantCore(true); | |
564 | |
565 // Create an instance of our CachedPropertyService | |
566 const cachedPropertyService = new CachedPropertyService(); | |
567 | |
568 const generateProperty = async (): Promise<PropertyDetails> => { | |
569 try { | |
570 // Use cached API service | |
571 const zillowService = new ZillowAPIService(); | |
572 const result = await zillowService.getPropertyListings(); | |
573 | |
574 if (!result.props || result.props.length === 0) { | |
575 // Fallback to random data if no properties found | |
576 throw new Error('No properties found in search results'); | |
577 } | |
578 | |
579 // Sort properties by daysOnZillow from lowest to highest (newest listings first) | |
580 const sortedProps = [...result.props].sort((a, b) => { | |
581 const daysA = a.daysOnZillow || Number.MAX_SAFE_INTEGER; | |
582 const daysB = b.daysOnZillow || Number.MAX_SAFE_INTEGER; | |
583 return daysA - daysB; | |
584 }); | |
585 | |
586 // Find the first property with FOR_SALE status | |
587 let forSaleProperty: PropertyDetails | null = null; | |
588 | |
589 // Get already used zpids | |
590 const usedZpids = phoneGenerator.getGeneratedZpids(); | |
591 | |
592 for (const prop of sortedProps) { | |
593 // Convert the property ZPID to test format for comparison | |
594 const testFormatZpid = prop.zpid ? convertToTestZpid(prop.zpid, testId) : ''; | |
595 | |
596 // Skip if this zpid has already been used (comparing in test format) | |
597 if (prop.zpid && usedZpids.includes(testFormatZpid)) { | |
598 console.log(`Skipping already used property with zpid: ${prop.zpid}`); | |
599 continue; | |
600 } | |
16:47:16 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=69) | |
16:47:16 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 33 GLOBAL STEP 33 | |
16:47:24 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:47:24 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/__tests__/utils/test-utils.ts', start=0, end=-1, thought="Let's look at more of the setupTest function to understand how it works.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=[600, 650]) | |
16:47:24 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/__tests__/utils/test-utils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/__tests__/utils/test-utils.ts: | |
600 } | |
601 | |
602 // Check if status_type or a similar field indicates FOR_SALE | |
603 if (prop.listingStatus === 'FOR_SALE') { | |
604 // For fresh listings (0-1 days on market), use the property directly without getPropertyDetails | |
605 if (prop && (prop.daysOnZillow === 0 || prop.daysOnZillow === 1) && !prop.description?.toLowerCase().includes('pending')) { | |
606 forSaleProperty = prop!; | |
607 forSaleProperty!.formattedAddress = prop.address; // this is the get all properties type | |
608 break; | |
609 } | |
610 | |
611 const ps = new PropertyService(assistant.sharedState) | |
612 // Otherwise get full details to check for pending status in description | |
613 const tempPropertyDetails = await ps.getPropertyDetailsByZpid(prop.zpid); | |
614 | |
615 // Convert the temp property ZPID to test format for comparison | |
616 const tempTestFormatZpid = tempPropertyDetails.zpid ? convertToTestZpid(tempPropertyDetails.zpid, testId) : ''; | |
617 | |
618 // Skip if this tempPropertyDetails zpid has already been used | |
619 if (tempPropertyDetails.zpid && usedZpids.includes(tempTestFormatZpid)) { | |
620 console.log(`Skipping already used property with zpid: ${tempPropertyDetails.zpid}`); | |
621 continue; | |
622 } | |
623 | |
624 if (tempPropertyDetails.homeStatus === 'FOR_SALE' && !tempPropertyDetails.description?.toLowerCase().includes('pending')) { | |
625 forSaleProperty = tempPropertyDetails; | |
626 forSaleProperty!.formattedAddress = formatFullAddress(forSaleProperty!); /// this is the get 1 property type | |
627 break; | |
628 } | |
629 } | |
630 } | |
631 | |
632 // If no FOR_SALE property was found, use the first property | |
633 if (!forSaleProperty) { | |
634 // Find the first unused property | |
635 for (const prop of sortedProps) { | |
636 if (!prop.zpid || !usedZpids.includes(prop.zpid)) { | |
637 forSaleProperty = prop as PropertyDetails; | |
638 break; | |
639 } | |
640 } | |
641 | |
642 // If all properties have been used, just use the first one | |
643 if (!forSaleProperty) { | |
644 forSaleProperty = sortedProps[0] as PropertyDetails; | |
645 } | |
646 } | |
647 | |
648 // Generate a test ZPID using our helper function | |
649 const testZpid = convertToTestZpid(forSaleProperty!.zpid, testId); | |
650 | |
16:47:24 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=71) | |
16:47:24 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 34 GLOBAL STEP 34 | |
16:47:34 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:47:34 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/__tests__/utils/test-utils.ts', start=0, end=-1, thought="Let's look at more of the setupTest function to understand how it works.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=[650, 700]) | |
16:47:34 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/__tests__/utils/test-utils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/__tests__/utils/test-utils.ts: | |
650 | |
651 // Override the ZPID with our test ZPID | |
652 forSaleProperty!.zpid = testZpid; | |
653 | |
654 // Track this ZPID for specific cleanup | |
655 phoneGenerator.addGeneratedZpid(testZpid); | |
656 console.log('testZpid', testZpid) | |
657 | |
658 forSaleProperty!.isTest = true; | |
659 | |
660 // Make sure attribution info is included using values from the current scope | |
661 forSaleProperty!.attributionInfo = { | |
662 agentName: listingAgentName, | |
663 agentPhoneNumber: listingAgentNumber | |
664 }; | |
665 | |
666 return forSaleProperty!; | |
667 } catch (error) { | |
668 console.error('Error fetching property details:', error); | |
669 console.timeEnd('getPropertyFromExtendedSearch') | |
670 | |
671 // Fallback to random data if API call fails | |
672 const randomZpid = `random_${Math.floor(Math.random() * 1000000)}`; | |
673 const zpid = convertToTestZpid(randomZpid, testId); | |
674 | |
675 // Track this ZPID for specific cleanup | |
676 phoneGenerator.addGeneratedZpid(zpid); | |
677 console.log('zpid', zpid) | |
678 const formattedAddress = `${Math.floor(Math.random() * 1000)} Test St, San Francisco, CA 94110`; | |
679 | |
680 return { | |
681 zpid, | |
682 formattedAddress, | |
683 address: { | |
684 streetAddress: formattedAddress.split(',')[0], | |
685 city: 'San Francisco', | |
686 state: 'CA', | |
687 zipcode: '94110' | |
688 }, | |
689 price: 1000000 + Math.floor(Math.random() * 1000000), | |
690 bedrooms: 2 + Math.floor(Math.random() * 3), | |
691 bathrooms: 2 + Math.floor(Math.random() * 2), | |
692 homeStatus: 'FOR_SALE', | |
693 latitude: 37.75 + Math.random() * 0.1, | |
694 longitude: -122.4 + Math.random() * 0.1, | |
695 attributionInfo: { | |
696 agentName: listingAgentName, | |
697 agentPhoneNumber: listingAgentNumber | |
698 } | |
699 }; | |
700 } | |
16:47:34 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=73) | |
16:47:34 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 35 GLOBAL STEP 35 | |
16:47:42 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:47:42 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/services/__tests__/utils/test-utils.ts', start=0, end=-1, thought="Let's look at the rest of the setupTest function to understand how it works.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=[700, 750]) | |
16:47:42 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/services/__tests__/utils/test-utils.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/services/__tests__/utils/test-utils.ts: | |
700 } | |
701 }; | |
702 | |
703 const cleanup = async () => { | |
704 try { | |
705 // Use the enhanced phoneGenerator.cleanup() which now handles both Redis and Supabase | |
706 await phoneGenerator.cleanup(); | |
707 | |
708 // Also clear the tests_running flag if it was set by this test | |
709 await clearTestsRunningFlag(); | |
710 } catch (error) { | |
711 console.error('Error during test cleanup:', error); | |
712 } finally { | |
713 // Reset the global current test context | |
714 global.__currentTestContext = undefined; | |
715 } | |
716 }; | |
717 | |
718 // Set required properties using valid UUID | |
719 const agent = await getListingAgentByPhone(listingAgentNumber) | |
720 if (!agent) { | |
721 throw new Error('Unable to find listing agent for test') | |
722 } | |
723 | |
724 const client = await getClientByPhone(clientNumber) | |
725 if (!client) { | |
726 throw new Error('Unable to find client for test') | |
727 } | |
728 | |
729 const testContext: MyTestContext = { | |
730 assistant, | |
731 clientNumber, | |
732 client, | |
733 listingAgentNumber, | |
734 listingAgent: agent, | |
735 adminNumber, | |
736 phoneGenerator, | |
737 generateProperty, | |
738 // getCachedPropertyFromExtendedSearch: () => cachedPropertyService.getPropertyFromExtendedSearch(), | |
739 cleanup, | |
740 supabaseClient, | |
741 testId, | |
742 setTestsRunningFlag, | |
743 clearTestsRunningFlag, | |
744 generateUnknownPerson: (name?: string) => phoneGenerator.generateUnknownNumber(name) | |
745 }; | |
746 | |
747 // Store the current test context globally so mocks can access it | |
748 global.__currentTestContext = testContext; | |
749 | |
750 return testContext; | |
16:47:42 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=75) | |
16:47:42 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 36 GLOBAL STEP 36 | |
16:48:01 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileEditAction (id=-1) | |
16:48:01 - openhands:INFO: resolve_issue.py:233 - **FileEditAction** | |
Path: [/workspace/__tests__/listing_agent_tour_scheduling.test.ts] | |
Thought: Now I understand how to create a test. Let's update our test file to use the setupTest function. | |
Command: str_replace | |
Old String: ``` | |
import { describe, it, expect, beforeEach, jest } from '@jest/globals' | |
import { createTestAssistant } from './tour_test_utils' | |
import { SharedState } from '@/lib/services/realEstate/core/sharedState' | |
import { supabaseClient } from '@/lib/services/shared/supabaseClient' | |
describe('Listing Agent Tour Scheduling', () => { | |
let assistant: any | |
let sharedState: SharedState | |
beforeEach(async () => { | |
// Create a test assistant | |
const result = await createTestAssistant() | |
assistant = result.assistant | |
sharedState = result.sharedState | |
// Mock the supabase client | |
jest.spyOn(supabaseClient, 'from').mockImplementation((table: string) => { | |
if (table === 'mr_properties') { | |
return { | |
select: jest.fn().mockReturnThis(), | |
insert: jest.fn().mockReturnThis(), | |
update: jest.fn().mockReturnThis(), | |
eq: jest.fn().mockReturnThis(), | |
overrideTypes: jest.fn().mockReturnValue({ | |
data: [ | |
{ | |
zpid: '12345', | |
address: '123 Test St, San Francisco, CA 94110', | |
formatted_address: '123 Test St, San Francisco, CA 94110', | |
agent_id: 'agent123', | |
mr_users_id: 'user123', | |
client_proposed_showing_time: null, | |
agent_proposed_showing_time: null, | |
showing_status: null, | |
is_showami_tour: false | |
} | |
], | |
error: null | |
}) | |
} | |
} | |
return { | |
select: jest.fn().mockReturnThis(), | |
insert: jest.fn().mockReturnThis(), | |
update: jest.fn().mockReturnThis(), | |
eq: jest.fn().mockReturnThis(), | |
overrideTypes: jest.fn().mockReturnValue({ | |
data: [], | |
error: null | |
}) | |
} | |
}) | |
}) | |
``` | |
New String: ``` | |
import { describe, it, expect, beforeEach, jest, afterEach } from '@jest/globals' | |
import { setupTest } from '@/lib/services/__tests__/utils/test-utils' | |
import { SharedState } from '@/lib/services/realEstate/core/sharedState' | |
import { supabaseClient } from '@/lib/services/shared/supabaseClient' | |
describe('Listing Agent Tour Scheduling', () => { | |
let testContext: any | |
let assistant: any | |
let sharedState: SharedState | |
beforeEach(async () => { | |
// Create a test assistant | |
testContext = await setupTest() | |
assistant = testContext.assistant | |
sharedState = assistant.sharedState | |
}) | |
afterEach(async () => { | |
await testContext.cleanup() | |
}) | |
``` | |
16:48:01 - openhands:INFO: resolve_issue.py:233 - The file /workspace/__tests__/listing_agent_tour_scheduling.test.ts has been edited. Here's the result of running `cat -n` on a snippet of /workspace/__tests__/listing_agent_tour_scheduling.test.ts: | |
1 import { describe, it, expect, beforeEach, jest, afterEach } from '@jest/globals' | |
2 import { setupTest } from '@/lib/services/__tests__/utils/test-utils' | |
3 import { SharedState } from '@/lib/services/realEstate/core/sharedState' | |
4 import { supabaseClient } from '@/lib/services/shared/supabaseClient' | |
5 | |
6 describe('Listing Agent Tour Scheduling', () => { | |
7 let testContext: any | |
8 let assistant: any | |
9 let sharedState: SharedState | |
10 | |
11 beforeEach(async () => { | |
12 // Create a test assistant | |
13 testContext = await setupTest() | |
14 assistant = testContext.assistant | |
15 sharedState = assistant.sharedState | |
16 }) | |
17 | |
18 afterEach(async () => { | |
19 await testContext.cleanup() | |
20 }) | |
21 | |
22 it('should handle tour requests when we are the listing agent', async () => { | |
23 // Set up the shared state to simulate we are the listing agent | |
24 sharedState.listingAgent = { | |
25 | |
Review the changes and make sure they are as expected. Edit the file again if necessary. | |
16:48:01 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: FileEditAction (id=77) | |
16:48:01 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileEditObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 37 GLOBAL STEP 37 | |
16:48:23 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileEditAction (id=-1) | |
16:48:23 - openhands:INFO: resolve_issue.py:233 - **FileEditAction** | |
Path: [/workspace/__tests__/listing_agent_tour_scheduling.test.ts] | |
Thought: Now let's update the test case to properly test the listing agent tour scheduling. | |
Command: str_replace | |
Old String: ``` | |
it('should handle tour requests when we are the listing agent', async () => { | |
// Set up the shared state to simulate we are the listing agent | |
sharedState.listingAgent = { | |
agent_id: 'agent123', | |
phone_number: '+15555555555', | |
current_property_zpid: '12345', | |
current_mr_users_phone_number: '+16666666666' | |
} | |
// Simulate a client message requesting a tour | |
const response = await assistant.chat( | |
'I would like to schedule a tour for 123 Test St tomorrow at 3pm', | |
'+16666666666' | |
) | |
// Check that the response indicates we're handling it as the listing agent | |
expect(response).toContain('schedule') | |
expect(response).toContain('tour') | |
expect(response).toContain('123 Test St') | |
// Check that the draft messages were created correctly | |
const draftMessages = sharedState.messagingService.draftMessages | |
expect(draftMessages.length).toBeGreaterThan(0) | |
// Verify that the system recognized we're the listing agent | |
expect(sharedState.debugOutputs.some(output => | |
output.includes('listing agent') || output.includes('listing side') | |
)).toBeTruthy() | |
}) | |
``` | |
New String: ``` | |
it('should handle tour requests when we are the listing agent', async () => { | |
// Generate a test property | |
const property = await testContext.generateProperty(); | |
// Set up the shared state to simulate we are the listing agent | |
sharedState.listingAgent = { | |
agent_id: testContext.listingAgent.agent_id, | |
phone_number: testContext.listingAgent.phone_number, | |
current_property_zpid: property.zpid, | |
current_mr_users_phone_number: testContext.client.phone_number, | |
current_property: property.formattedAddress, | |
first_name: testContext.listingAgent.first_name, | |
last_name: testContext.listingAgent.last_name | |
} | |
// Create a property record in the database | |
const { error } = await supabaseClient | |
.from('mr_properties') | |
.insert({ | |
zpid: property.zpid, | |
address: property.formattedAddress, | |
formatted_address: property.formattedAddress, | |
agent_id: testContext.listingAgent.agent_id, | |
mr_users_id: testContext.client.user_id, | |
price: property.price || 1000000, | |
bedrooms: property.bedrooms || 3, | |
bathrooms: property.bathrooms || 2, | |
is_showami_tour: false | |
}); | |
if (error) { | |
console.error('Error creating property record:', error); | |
} | |
// Simulate a client message requesting a tour | |
const response = await assistant.chat( | |
`I would like to schedule a tour for ${property.formattedAddress} tomorrow at 3pm`, | |
testContext.client.phone_number | |
) | |
// Check that the response indicates we're handling it as the listing agent | |
expect(response).toContain('schedule') | |
expect(response).toContain('tour') | |
// Check that the draft messages were created correctly | |
const draftMessages = sharedState.messagingService.draftMessages | |
expect(draftMessages.length).toBeGreaterThan(0) | |
// Log debug outputs to understand what's happening | |
console.log('Debug outputs:', sharedState.debugOutputs); | |
console.log('Draft messages:', draftMessages); | |
// Verify that the system recognized we're the listing agent | |
expect(sharedState.debugOutputs.some(output => | |
output.includes('listing agent') || output.includes('listing side') | |
)).toBeTruthy() | |
}) | |
``` | |
16:48:23 - openhands:INFO: resolve_issue.py:233 - The file /workspace/__tests__/listing_agent_tour_scheduling.test.ts has been edited. Here's the result of running `cat -n` on a snippet of /workspace/__tests__/listing_agent_tour_scheduling.test.ts: | |
19 await testContext.cleanup() | |
20 }) | |
21 | |
22 it('should handle tour requests when we are the listing agent', async () => { | |
23 // Generate a test property | |
24 const property = await testContext.generateProperty(); | |
25 | |
26 // Set up the shared state to simulate we are the listing agent | |
27 sharedState.listingAgent = { | |
28 agent_id: testContext.listingAgent.agent_id, | |
29 phone_number: testContext.listingAgent.phone_number, | |
30 current_property_zpid: property.zpid, | |
31 current_mr_users_phone_number: testContext.client.phone_number, | |
32 current_property: property.formattedAddress, | |
33 first_name: testContext.listingAgent.first_name, | |
34 last_name: testContext.listingAgent.last_name | |
35 } | |
36 | |
37 // Create a property record in the database | |
38 const { error } = await supabaseClient | |
39 .from('mr_properties') | |
40 .insert({ | |
41 zpid: property.zpid, | |
42 address: property.formattedAddress, | |
43 formatted_address: property.formattedAddress, | |
44 agent_id: testContext.listingAgent.agent_id, | |
45 mr_users_id: testContext.client.user_id, | |
46 price: property.price || 1000000, | |
47 bedrooms: property.bedrooms || 3, | |
48 bathrooms: property.bathrooms || 2, | |
49 is_showami_tour: false | |
50 }); | |
51 | |
52 if (error) { | |
53 console.error('Error creating property record:', error); | |
54 } | |
55 | |
56 // Simulate a client message requesting a tour | |
57 const response = await assistant.chat( | |
58 `I would like to schedule a tour for ${property.formattedAddress} tomorrow at 3pm`, | |
59 testContext.client.phone_number | |
60 ) | |
61 | |
62 // Check that the response indicates we're handling it as the listing agent | |
63 expect(response).toContain('schedule') | |
64 expect(response).toContain('tour') | |
65 | |
66 // Check that the draft messages were created correctly | |
67 const draftMessages = sharedState.messagingService.draftMessages | |
68 expect(draftMessages.length).toBeGreaterThan(0) | |
69 | |
70 // Log debug outputs to understand what's happening | |
71 console.log('Debug outputs:', sharedState.debugOutputs); | |
72 console.log('Draft messages:', draftMessages); | |
73 | |
74 // Verify that the system recognized we're the listing agent | |
75 expect(sharedState.debugOutputs.some(output => | |
76 output.includes('listing agent') || output.includes('listing side') | |
77 )).toBeTruthy() | |
78 }) | |
79 }) | |
Review the changes and make sure they are as expected. Edit the file again if necessary. | |
16:48:23 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.03s: FileEditAction (id=79) | |
16:48:23 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileEditObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 38 GLOBAL STEP 38 | |
16:48:32 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:48:32 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's run the test to see what happens when we're the listing agent. | |
COMMAND: | |
./bun test __tests__/listing_agent_tour_scheduling.test.ts | |
16:48:40 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
bun test v1.1.34 (5e5e7c60) | |
__tests__/listing_agent_tour_scheduling.test.ts: | |
Set tests_running flag to true with 600 second expiry | |
[DB] No data found for user: +test_client73c2_0 | |
[DB] No data found for listing agent by phone: +test_agent73c2_0 | |
Cache hit for cache:getPropertyLis... | |
Cache hit for cache:getPropertyDet... | |
testZpid test_73c26a0d_15105185 | |
Error creating property record: { | |
code: "23502", | |
details: "Failing row contains (069cd9b0-43f7-405b-bdb8-aecf9562e2f5, null, 1418 27th Ave, San Francisco, CA, 94122, null, null, null, 2750000.00, 4, 4.0, null, null, 2025-04-23 16:48:36.18045+00, 2025-04-23 16:48:36.18045+00, test_73c26a0d_15105185, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 19ba2469-1a3a-4982-8255-f70798e3862d, null, 3993, null, null, null, 1418 27th Ave, San Francisco, CA, 94122, null, null, null, null, null, null, null, f, null, null, null, null, null).", | |
hint: null, | |
message: "null value in column \"city\" of relation \"mr_properties\" violates not-null constraint", | |
} | |
error: "failed to parse logic tree ((and(sender_phone_number.eq.I would like to schedule a tour for 1418 27th Ave, San Francisco, CA, 94122 tomorrow at 3pm,receiver_phone_number.eq.+test_client73c2_0),and(sender_phone_number.eq.+test_client73c2_0,receiver_phone_number.eq.I would like to schedule a tour for 1418 27th Ave, San Francisco, CA, 94122 tomorrow at 3pm)))" (line 1, column 95) | |
✗ Listing Agent Tour Scheduling > should handle tour requests when we are the listing agent [954.00ms] | |
Cleaning up 1 specifically tracked ZPIDs | |
[ "test_73c26a0d_15105185" ] | |
Cleared tests_running flag | |
---------------------------------------------------------------|---------|---------|------------------- | |
File | % Funcs | % Lines | Uncovered Line #s | |
---------------------------------------------------------------|---------|---------|------------------- | |
All files | 20.54 | 25.77 | | |
books_and_resources/processing/searchBooks.ts | 0.00 | 3.30 | 34-60,83-91,104-233,244-312,322-376,383-412,423-454 | |
lib/redis.ts | 100.00 | 100.00 | | |
lib/services/__tests__/utils/test-utils.ts | 53.85 | 48.73 | 258-297,301,305,455-458,462-465,469,495-523,535-547,754-770,784-814,822-852,860-888,894-908,913-927,932-1016,1031-1113,1119-1131,1136-1140,1149-1154 | |
lib/services/buyer_flow/buyer_flow.ts | 0.00 | 2.95 | 135-957 | |
lib/services/buyer_flow/external.ts | 0.00 | 6.17 | 11-86 | |
lib/services/buyer_flow/property.ts | 11.11 | 4.65 | 30-193 | |
lib/services/buyer_flow/showing.ts | 0.00 | 3.89 | 32-99,109-131,140-169,182-423,437-558,595-602,611-627,636-990 | |
lib/services/calendar/supabaseCalendar.ts | 0.00 | 5.63 | 9-75 | |
lib/services/calendar/zapierCalendar.ts | 0.00 | 3.20 | 33-61,102-121,131-167,177-243,256-293,305-355 | |
lib/services/deprecated_redfin_utils/rfu.ts | 0.00 | 9.60 | 19-90,99-134,143-147 | |
lib/services/drip_box/drip.ts | 0.00 | 3.49 | 57-60,93-323,348-693 | |
lib/services/drip_box/dripFrequency.ts | 0.00 | 0.69 | 24-88,102-179 | |
lib/services/drip_box/dripMessageBuilder.ts | 0.00 | 3.54 | 24-132 | |
lib/services/drip_box/dripPreviousListings.ts | 0.00 | 3.45 | 17-46,59-84 | |
lib/services/drip_box/dripScheduler.ts | 0.00 | 4.71 | 24-104 | |
lib/services/drip_box/utils/propertyConverters.ts | 0.00 | 2.74 | 24-34,41-51,58-68,75-93,101-119 | |
lib/services/drip_box/utils/propertyUtils.ts | 0.00 | 3.13 | 11-28,37-55,66-128,141-164 | |
lib/services/drip_box/utils/schedulingUtils.ts | 0.00 | 1.69 | 27-232,242-282,295-354,366-408 | |
lib/services/drip_box/utils/searchUtils.ts | 0.00 | 3.85 | 30-42,49-64,71-81,88-104,117-161,175-226,239-256,269-321 | |
lib/services/drip_box/utils/tourFollowup.ts | 0.00 | 2.11 | 29-69,82-218,231-332,344-420,433-492 | |
lib/services/drip_box/utils/userJourneyUtils.ts | 0.00 | 1.92 | 40-108,121-181,193-207,222-280 | |
lib/services/git/createPullRequest.ts | 0.00 | 2.07 | 30-45,58-153,160-390,397-443,450-481,491-605,614-661,668-788,795-798 | |
lib/services/knowledge_base/processUserInfo.ts | 0.00 | 3.50 | 48-425,439-533,545-623 | |
lib/services/phone_management/phoneManager.ts | 0.00 | 1.98 | 18-116 | |
lib/services/realEstate/configs/clientTools.ts | 50.00 | 97.46 | 629-641 | |
lib/services/realEstate/configs/realtorTools.ts | 100.00 | 100.00 | | |
lib/services/realEstate/configs/sellerTools.ts | 100.00 | 100.00 | | |
lib/services/realEstate/constants/phoneNumbers.ts | 0.00 | 88.24 | 49-51 | |
lib/services/realEstate/constants/properties.ts | 0.00 | 100.00 | | |
lib/services/realEstate/convertClientAddressToFullAddress.ts | 0.00 | 4.94 | 7-83 | |
lib/services/realEstate/core/AdminManager.ts | 33.33 | 6.25 | 14-118 | |
lib/services/realEstate/core/ContextProvider.ts | 0.00 | 8.33 | 14-57,68-89 | |
lib/services/realEstate/core/ModelService.ts | 25.00 | 7.56 | 41-260 | |
lib/services/realEstate/core/ParticipantManager.ts | 0.00 | 2.57 | 28-444 | |
lib/services/realEstate/core/ResponseGenerator.ts | 16.67 | 2.66 | 20-458 | |
lib/services/realEstate/core/ToolCallHandler.ts | 0.00 | 2.62 | 39-297 | |
lib/services/realEstate/core/aiDetection.ts | 0.00 | 3.37 | 44-79,92-128,139-143,153-160 | |
lib/services/realEstate/core/assistantCore.ts | 60.00 | 97.87 | 116-118 | |
lib/services/realEstate/core/bookInstructions.ts | 0.00 | 1.71 | 27-47,56-96,110-166,178-216,229-358 | |
lib/services/realEstate/core/callModel.ts | 0.00 | 3.56 | 61-95,115-160,181-233,243-245,268-337,361-448,474-557,584-680,706-766,786-809,835-928,954-1057,1081-1139,1158-1196,1216-1278 | |
lib/services/realEstate/core/chatMessageProcessor.ts | 16.67 | 10.41 | 106-518 | |
lib/services/realEstate/core/databaseManager.ts | 23.08 | 4.39 | 52-573,600-643 | |
lib/services/realEstate/core/followUp.ts | 0.00 | 5.26 | 33-48,57-84,95-115,127-154,164-180,188-236,246-260,272-292,304-378 | |
lib/services/realEstate/core/listingAgentManager.ts | 12.50 | 2.04 | 28-217,229-709 | |
lib/services/realEstate/core/messageFormatter.ts | 0.00 | 8.33 | 4-14 | |
lib/services/realEstate/core/messageUtils.ts | 0.00 | 2.81 | 45-74,89-285,295-304,319-517,528-579,589-636,648-702,715-852,863-895 | |
lib/services/realEstate/core/messagingService.ts | 10.00 | 8.62 | 73-238,247-264,275-493 | |
lib/services/realEstate/core/propertyAccessExtractor.ts | 0.00 | 2.13 | 32-258,269-300,312-374 | |
lib/services/realEstate/core/sharedState.ts | 100.00 | 100.00 | | |
lib/services/realEstate/core/toolCallCounts.ts | 33.33 | 65.71 | 35-43,52-54 | |
lib/services/realEstate/core/whetherIncludeZillowLink.ts | 0.00 | 3.21 | 18-25,29-33,46-120,133-195 | |
lib/services/realEstate/getFilteredPropertyInfo.ts | 0.00 | 1.00 | 9-107 | |
lib/services/realEstate/linking/linkUsers.ts | 0.00 | 2.70 | 10-45 | |
lib/services/realEstate/prompts/promptSelector.ts | 0.00 | 9.09 | 21-80 | |
lib/services/realEstate/prompts/realtorShowamiRelay.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/sellerPropertyFAQ.ts | 0.00 | 54.69 | 15-72 | |
lib/services/realEstate/prompts/talksToClientPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/talksToRealtorPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/talksToSellerPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/utils/anthropicUtils.ts | 0.00 | 4.76 | 9-14,23-43,52-59,68-92 | |
lib/services/realEstate/utils/claude2OpenaiFormatConverter.ts | 0.00 | 2.50 | 17-37,46-93,103-137,147-159 | |
lib/services/realEstate/utils/rooClaude2OpenaiConvert.ts | 0.00 | 0.49 | 4-151,156-209 | |
lib/services/realtor_flow/realtor_flow.ts | 0.00 | 4.62 | 41-267 | |
lib/services/redfin_utils/marked_fields.ts | 100.00 | 100.00 | | |
lib/services/redfin_utils/rapidapi_redf.ts | 0.00 | 5.82 | 26-54,76-96,107-182,194-271,284-306,316-354,363-366,375-378,388-432,441-461 | |
lib/services/seller_flow/seller_flow.ts | 0.00 | 4.60 | 32-197 | |
lib/services/serper_ops/ser.ts | 0.00 | 3.13 | 5-6,17-76,86-100,111-143,153-168,178-206 | |
lib/services/shared/apiUsageTracking.ts | 0.00 | 27.07 | 112-160,169-194,203-224 | |
lib/services/shared/cacheDecorator.ts | 62.50 | 81.25 | 9,141-153 | |
lib/services/shared/homeHarvestClient.ts | 0.00 | 2.81 | 74-75,82-85,102-129,142-308,320-328,340-360,378-488,507-613 | |
lib/services/shared/perplexityService.ts | 0.00 | 3.37 | 21-154,164-193,203-249,258-300,309,319-430,446-481,492-518 | |
lib/services/shared/phoneUtils.ts | 0.00 | 15.49 | 10,13,19,26-29,33-41,50-70,79-97,106-134,143-145,154-164,173-175,185-194,203-210 | |
lib/services/shared/supabase/agents.ts | 23.53 | 10.76 | 16-30,39-54,63-79,88-104,128-129,143-151,160-171,180-268,277-299,308-322,331-348,357-371,380-407,422-423,433-434,445-529 | |
lib/services/shared/supabase/calls.ts | 0.00 | 5.08 | 15-42,51-66,75-90,99-120,129-145,153-165 | |
lib/services/shared/supabase/client.ts | 100.00 | 54.55 | 14-18 | |
lib/services/shared/supabase/emails.ts | 0.00 | 5.88 | 16-32,42-58,68-81 | |
lib/services/shared/supabase/index.ts | 100.00 | 100.00 | | |
lib/services/shared/supabase/messageEmbeddings.ts | 0.00 | 5.66 | 15-34,43-60,69-84,92-103,112-127,136-153 | |
lib/services/shared/supabase/messages.ts | 0.00 | 3.96 | 18-40,49-69,78-100,109-127,136-155,164-183,192-226,235-269,278-297,306-336,345-365,374-396 | |
lib/services/shared/supabase/people.ts | 0.00 | 4.26 | 15-29,38-52,61-101,112-130 | |
lib/services/shared/supabase/properties.ts | 0.00 | 4.61 | 19-35,45-65,74-90,100-116,126-152,162-177,186-223,232-245,254-275,284-298,309-326,336-349,358-371,380-394,405-435,446-480 | |
lib/services/shared/supabase/test.ts | 0.00 | 18.18 | 10-18 | |
lib/services/shared/supabase/users.ts | 33.33 | 19.90 | 30-31,45-61,70-82,91-105,115-138,147-166,175-185,200-201,211-212,223-257,267-278 | |
lib/services/shared/supabaseClient.ts | 100.00 | 100.00 | | |
lib/services/zillow_ops/extendedSearch.ts | 0.00 | 1.79 | 16-125 | |
lib/services/zillow_ops/zil.ts | 0.00 | 2.69 | 29-74,83-100,110-208,214-216,220-222,226-228,237-328,332-340,351-395,410-724,736-753,764-779,783-810,852-941,951-980,992-1021,1032-1153,1164-1209 | |
lib/services/zillow_ops/zutils.ts | 100.00 | 100.00 | | |
lib/twilioUtils.ts | 0.00 | 2.40 | 14-61,70-72,81-83,92-96,106-129,139-159,169-179,188-238,246-249,257-274,281-296,306-324,335-363,374-389,398-551,555-649,659-686,697-727,733-765 | |
lib/types/MREmailFilter.ts | 0.00 | 2.17 | 9-53 | |
lib/types/MRUserFilter.ts | 0.00 | 1.82 | 9-62 | |
lib/types/property.ts | 33.33 | 35.71 | 556-564,590-598 | |
lib/types/zodMRListingAgentSchema.ts | 100.00 | 100.00 | | |
lib/types/zodMRUserSchema.ts | 100.00 | 100.00 | | |
lib/utils.ts | 6.25 | 26.79 | 10,19-37,41-46,50-53,56-58,62,65-67,79-91,96,100,104,108-120,128,136-140,144-153 | |
lib/utils/dates.ts | 0.00 | 30.95 | 19-30,70-73,80-84,91-92,99-100,122-125 | |
lib/utils/errorUtils.ts | 0.00 | 10.20 | 6-11,20-40,51-67 | |
lib/utils/getShorthandAddress.ts | 0.00 | 2.50 | 8-46 | |
lib/utils/parseShowingTime.ts | 0.00 | 2.78 | 10-102,112-123 | |
lib/utils/performanceTracker.ts | 0.00 | 12.63 | 11,19-21,29-52,62-93,104-118,129,133-139 | |
lib/utils/rateLimiter.ts | 50.00 | 21.05 | 13-27 | |
---------------------------------------------------------------|---------|---------|------------------- | |
0 pass | |
1 fail | |
Ran 1 tests across 1 files. [7.98s] | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:48:40 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 8.18s: CmdRunAction (id=81) | |
16:48:40 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 39 GLOBAL STEP 39 | |
16:49:03 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileEditAction (id=-1) | |
16:49:03 - openhands:INFO: resolve_issue.py:233 - **FileEditAction** | |
Path: [/workspace/__tests__/listing_agent_tour_scheduling.test.ts] | |
Thought: It looks like we're having an issue with the property creation in the database. Let's fix the test by providing all the required fields for the property. | |
Command: str_replace | |
Old String: ``` | |
// Create a property record in the database | |
const { error } = await supabaseClient | |
.from('mr_properties') | |
.insert({ | |
zpid: property.zpid, | |
address: property.formattedAddress, | |
formatted_address: property.formattedAddress, | |
agent_id: testContext.listingAgent.agent_id, | |
mr_users_id: testContext.client.user_id, | |
price: property.price || 1000000, | |
bedrooms: property.bedrooms || 3, | |
bathrooms: property.bathrooms || 2, | |
is_showami_tour: false | |
}); | |
if (error) { | |
console.error('Error creating property record:', error); | |
} | |
``` | |
New String: ``` | |
// Extract address parts | |
const addressParts = property.formattedAddress.split(','); | |
const streetAddress = addressParts[0].trim(); | |
const city = addressParts[1]?.trim() || 'San Francisco'; | |
const stateZip = addressParts[2]?.trim() || 'CA 94110'; | |
const [state, zip] = stateZip.split(' '); | |
// Create a property record in the database | |
const { error } = await supabaseClient | |
.from('mr_properties') | |
.insert({ | |
zpid: property.zpid, | |
address: property.formattedAddress, | |
formatted_address: property.formattedAddress, | |
agent_id: testContext.listingAgent.agent_id, | |
mr_users_id: testContext.client.user_id, | |
price: property.price || 1000000, | |
bedrooms: property.bedrooms || 3, | |
bathrooms: property.bathrooms || 2, | |
is_showami_tour: false, | |
street_address: streetAddress, | |
city: city, | |
state: state.trim(), | |
zip: zip?.trim() || '94110' | |
}); | |
if (error) { | |
console.error('Error creating property record:', error); | |
} | |
``` | |
16:49:03 - openhands:INFO: resolve_issue.py:233 - The file /workspace/__tests__/listing_agent_tour_scheduling.test.ts has been edited. Here's the result of running `cat -n` on a snippet of /workspace/__tests__/listing_agent_tour_scheduling.test.ts: | |
34 last_name: testContext.listingAgent.last_name | |
35 } | |
36 | |
37 // Extract address parts | |
38 const addressParts = property.formattedAddress.split(','); | |
39 const streetAddress = addressParts[0].trim(); | |
40 const city = addressParts[1]?.trim() || 'San Francisco'; | |
41 const stateZip = addressParts[2]?.trim() || 'CA 94110'; | |
42 const [state, zip] = stateZip.split(' '); | |
43 | |
44 // Create a property record in the database | |
45 const { error } = await supabaseClient | |
46 .from('mr_properties') | |
47 .insert({ | |
48 zpid: property.zpid, | |
49 address: property.formattedAddress, | |
50 formatted_address: property.formattedAddress, | |
51 agent_id: testContext.listingAgent.agent_id, | |
52 mr_users_id: testContext.client.user_id, | |
53 price: property.price || 1000000, | |
54 bedrooms: property.bedrooms || 3, | |
55 bathrooms: property.bathrooms || 2, | |
56 is_showami_tour: false, | |
57 street_address: streetAddress, | |
58 city: city, | |
59 state: state.trim(), | |
60 zip: zip?.trim() || '94110' | |
61 }); | |
62 | |
63 if (error) { | |
64 console.error('Error creating property record:', error); | |
65 } | |
66 | |
67 // Simulate a client message requesting a tour | |
68 const response = await assistant.chat( | |
69 `I would like to schedule a tour for ${property.formattedAddress} tomorrow at 3pm`, | |
70 | |
Review the changes and make sure they are as expected. Edit the file again if necessary. | |
16:49:03 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileEditAction (id=83) | |
16:49:03 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileEditObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 40 GLOBAL STEP 40 | |
16:49:13 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:49:13 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's run the test again to see if it works. | |
COMMAND: | |
./bun test __tests__/listing_agent_tour_scheduling.test.ts | |
16:49:21 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
bun test v1.1.34 (5e5e7c60) | |
__tests__/listing_agent_tour_scheduling.test.ts: | |
Set tests_running flag to true with 600 second expiry | |
[DB] No data found for user: +test_clientb058_0 | |
[DB] No data found for listing agent by phone: +test_agentb058_0 | |
Cache hit for cache:getPropertyLis... | |
Cache hit for cache:getPropertyDet... | |
testZpid test_b058457b_15105185 | |
Error creating property record: { | |
code: "PGRST204", | |
details: null, | |
hint: null, | |
message: "Column 'street_address' of relation 'mr_properties' does not exist", | |
} | |
error: "failed to parse logic tree ((and(sender_phone_number.eq.I would like to schedule a tour for 1418 27th Ave, San Francisco, CA, 94122 tomorrow at 3pm,receiver_phone_number.eq.+test_clientb058_0),and(sender_phone_number.eq.+test_clientb058_0,receiver_phone_number.eq.I would like to schedule a tour for 1418 27th Ave, San Francisco, CA, 94122 tomorrow at 3pm)))" (line 1, column 95) | |
✗ Listing Agent Tour Scheduling > should handle tour requests when we are the listing agent [667.00ms] | |
Cleaning up 1 specifically tracked ZPIDs | |
[ "test_b058457b_15105185" ] | |
Cleared tests_running flag | |
---------------------------------------------------------------|---------|---------|------------------- | |
File | % Funcs | % Lines | Uncovered Line #s | |
---------------------------------------------------------------|---------|---------|------------------- | |
All files | 20.54 | 25.77 | | |
books_and_resources/processing/searchBooks.ts | 0.00 | 3.30 | 34-60,83-91,104-233,244-312,322-376,383-412,423-454 | |
lib/redis.ts | 100.00 | 100.00 | | |
lib/services/__tests__/utils/test-utils.ts | 53.85 | 48.73 | 258-297,301,305,455-458,462-465,469,495-523,535-547,754-770,784-814,822-852,860-888,894-908,913-927,932-1016,1031-1113,1119-1131,1136-1140,1149-1154 | |
lib/services/buyer_flow/buyer_flow.ts | 0.00 | 2.95 | 135-957 | |
lib/services/buyer_flow/external.ts | 0.00 | 6.17 | 11-86 | |
lib/services/buyer_flow/property.ts | 11.11 | 4.65 | 30-193 | |
lib/services/buyer_flow/showing.ts | 0.00 | 3.89 | 32-99,109-131,140-169,182-423,437-558,595-602,611-627,636-990 | |
lib/services/calendar/supabaseCalendar.ts | 0.00 | 5.63 | 9-75 | |
lib/services/calendar/zapierCalendar.ts | 0.00 | 3.20 | 33-61,102-121,131-167,177-243,256-293,305-355 | |
lib/services/deprecated_redfin_utils/rfu.ts | 0.00 | 9.60 | 19-90,99-134,143-147 | |
lib/services/drip_box/drip.ts | 0.00 | 3.49 | 57-60,93-323,348-693 | |
lib/services/drip_box/dripFrequency.ts | 0.00 | 0.69 | 24-88,102-179 | |
lib/services/drip_box/dripMessageBuilder.ts | 0.00 | 3.54 | 24-132 | |
lib/services/drip_box/dripPreviousListings.ts | 0.00 | 3.45 | 17-46,59-84 | |
lib/services/drip_box/dripScheduler.ts | 0.00 | 4.71 | 24-104 | |
lib/services/drip_box/utils/propertyConverters.ts | 0.00 | 2.74 | 24-34,41-51,58-68,75-93,101-119 | |
lib/services/drip_box/utils/propertyUtils.ts | 0.00 | 3.13 | 11-28,37-55,66-128,141-164 | |
lib/services/drip_box/utils/schedulingUtils.ts | 0.00 | 1.69 | 27-232,242-282,295-354,366-408 | |
lib/services/drip_box/utils/searchUtils.ts | 0.00 | 3.85 | 30-42,49-64,71-81,88-104,117-161,175-226,239-256,269-321 | |
lib/services/drip_box/utils/tourFollowup.ts | 0.00 | 2.11 | 29-69,82-218,231-332,344-420,433-492 | |
lib/services/drip_box/utils/userJourneyUtils.ts | 0.00 | 1.92 | 40-108,121-181,193-207,222-280 | |
lib/services/git/createPullRequest.ts | 0.00 | 2.07 | 30-45,58-153,160-390,397-443,450-481,491-605,614-661,668-788,795-798 | |
lib/services/knowledge_base/processUserInfo.ts | 0.00 | 3.50 | 48-425,439-533,545-623 | |
lib/services/phone_management/phoneManager.ts | 0.00 | 1.98 | 18-116 | |
lib/services/realEstate/configs/clientTools.ts | 50.00 | 97.46 | 629-641 | |
lib/services/realEstate/configs/realtorTools.ts | 100.00 | 100.00 | | |
lib/services/realEstate/configs/sellerTools.ts | 100.00 | 100.00 | | |
lib/services/realEstate/constants/phoneNumbers.ts | 0.00 | 88.24 | 49-51 | |
lib/services/realEstate/constants/properties.ts | 0.00 | 100.00 | | |
lib/services/realEstate/convertClientAddressToFullAddress.ts | 0.00 | 4.94 | 7-83 | |
lib/services/realEstate/core/AdminManager.ts | 33.33 | 6.25 | 14-118 | |
lib/services/realEstate/core/ContextProvider.ts | 0.00 | 8.33 | 14-57,68-89 | |
lib/services/realEstate/core/ModelService.ts | 25.00 | 7.56 | 41-260 | |
lib/services/realEstate/core/ParticipantManager.ts | 0.00 | 2.57 | 28-444 | |
lib/services/realEstate/core/ResponseGenerator.ts | 16.67 | 2.66 | 20-458 | |
lib/services/realEstate/core/ToolCallHandler.ts | 0.00 | 2.62 | 39-297 | |
lib/services/realEstate/core/aiDetection.ts | 0.00 | 3.37 | 44-79,92-128,139-143,153-160 | |
lib/services/realEstate/core/assistantCore.ts | 60.00 | 97.87 | 116-118 | |
lib/services/realEstate/core/bookInstructions.ts | 0.00 | 1.71 | 27-47,56-96,110-166,178-216,229-358 | |
lib/services/realEstate/core/callModel.ts | 0.00 | 3.56 | 61-95,115-160,181-233,243-245,268-337,361-448,474-557,584-680,706-766,786-809,835-928,954-1057,1081-1139,1158-1196,1216-1278 | |
lib/services/realEstate/core/chatMessageProcessor.ts | 16.67 | 10.41 | 106-518 | |
lib/services/realEstate/core/databaseManager.ts | 23.08 | 4.39 | 52-573,600-643 | |
lib/services/realEstate/core/followUp.ts | 0.00 | 5.26 | 33-48,57-84,95-115,127-154,164-180,188-236,246-260,272-292,304-378 | |
lib/services/realEstate/core/listingAgentManager.ts | 12.50 | 2.04 | 28-217,229-709 | |
lib/services/realEstate/core/messageFormatter.ts | 0.00 | 8.33 | 4-14 | |
lib/services/realEstate/core/messageUtils.ts | 0.00 | 2.81 | 45-74,89-285,295-304,319-517,528-579,589-636,648-702,715-852,863-895 | |
lib/services/realEstate/core/messagingService.ts | 10.00 | 8.62 | 73-238,247-264,275-493 | |
lib/services/realEstate/core/propertyAccessExtractor.ts | 0.00 | 2.13 | 32-258,269-300,312-374 | |
lib/services/realEstate/core/sharedState.ts | 100.00 | 100.00 | | |
lib/services/realEstate/core/toolCallCounts.ts | 33.33 | 65.71 | 35-43,52-54 | |
lib/services/realEstate/core/whetherIncludeZillowLink.ts | 0.00 | 3.21 | 18-25,29-33,46-120,133-195 | |
lib/services/realEstate/getFilteredPropertyInfo.ts | 0.00 | 1.00 | 9-107 | |
lib/services/realEstate/linking/linkUsers.ts | 0.00 | 2.70 | 10-45 | |
lib/services/realEstate/prompts/promptSelector.ts | 0.00 | 9.09 | 21-80 | |
lib/services/realEstate/prompts/realtorShowamiRelay.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/sellerPropertyFAQ.ts | 0.00 | 54.69 | 15-72 | |
lib/services/realEstate/prompts/talksToClientPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/talksToRealtorPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/talksToSellerPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/utils/anthropicUtils.ts | 0.00 | 4.76 | 9-14,23-43,52-59,68-92 | |
lib/services/realEstate/utils/claude2OpenaiFormatConverter.ts | 0.00 | 2.50 | 17-37,46-93,103-137,147-159 | |
lib/services/realEstate/utils/rooClaude2OpenaiConvert.ts | 0.00 | 0.49 | 4-151,156-209 | |
lib/services/realtor_flow/realtor_flow.ts | 0.00 | 4.62 | 41-267 | |
lib/services/redfin_utils/marked_fields.ts | 100.00 | 100.00 | | |
lib/services/redfin_utils/rapidapi_redf.ts | 0.00 | 5.82 | 26-54,76-96,107-182,194-271,284-306,316-354,363-366,375-378,388-432,441-461 | |
lib/services/seller_flow/seller_flow.ts | 0.00 | 4.60 | 32-197 | |
lib/services/serper_ops/ser.ts | 0.00 | 3.13 | 5-6,17-76,86-100,111-143,153-168,178-206 | |
lib/services/shared/apiUsageTracking.ts | 0.00 | 27.07 | 112-160,169-194,203-224 | |
lib/services/shared/cacheDecorator.ts | 62.50 | 81.25 | 9,141-153 | |
lib/services/shared/homeHarvestClient.ts | 0.00 | 2.81 | 74-75,82-85,102-129,142-308,320-328,340-360,378-488,507-613 | |
lib/services/shared/perplexityService.ts | 0.00 | 3.37 | 21-154,164-193,203-249,258-300,309,319-430,446-481,492-518 | |
lib/services/shared/phoneUtils.ts | 0.00 | 15.49 | 10,13,19,26-29,33-41,50-70,79-97,106-134,143-145,154-164,173-175,185-194,203-210 | |
lib/services/shared/supabase/agents.ts | 23.53 | 10.76 | 16-30,39-54,63-79,88-104,128-129,143-151,160-171,180-268,277-299,308-322,331-348,357-371,380-407,422-423,433-434,445-529 | |
lib/services/shared/supabase/calls.ts | 0.00 | 5.08 | 15-42,51-66,75-90,99-120,129-145,153-165 | |
lib/services/shared/supabase/client.ts | 100.00 | 54.55 | 14-18 | |
lib/services/shared/supabase/emails.ts | 0.00 | 5.88 | 16-32,42-58,68-81 | |
lib/services/shared/supabase/index.ts | 100.00 | 100.00 | | |
lib/services/shared/supabase/messageEmbeddings.ts | 0.00 | 5.66 | 15-34,43-60,69-84,92-103,112-127,136-153 | |
lib/services/shared/supabase/messages.ts | 0.00 | 3.96 | 18-40,49-69,78-100,109-127,136-155,164-183,192-226,235-269,278-297,306-336,345-365,374-396 | |
lib/services/shared/supabase/people.ts | 0.00 | 4.26 | 15-29,38-52,61-101,112-130 | |
lib/services/shared/supabase/properties.ts | 0.00 | 4.61 | 19-35,45-65,74-90,100-116,126-152,162-177,186-223,232-245,254-275,284-298,309-326,336-349,358-371,380-394,405-435,446-480 | |
lib/services/shared/supabase/test.ts | 0.00 | 18.18 | 10-18 | |
lib/services/shared/supabase/users.ts | 33.33 | 19.90 | 30-31,45-61,70-82,91-105,115-138,147-166,175-185,200-201,211-212,223-257,267-278 | |
lib/services/shared/supabaseClient.ts | 100.00 | 100.00 | | |
lib/services/zillow_ops/extendedSearch.ts | 0.00 | 1.79 | 16-125 | |
lib/services/zillow_ops/zil.ts | 0.00 | 2.69 | 29-74,83-100,110-208,214-216,220-222,226-228,237-328,332-340,351-395,410-724,736-753,764-779,783-810,852-941,951-980,992-1021,1032-1153,1164-1209 | |
lib/services/zillow_ops/zutils.ts | 100.00 | 100.00 | | |
lib/twilioUtils.ts | 0.00 | 2.40 | 14-61,70-72,81-83,92-96,106-129,139-159,169-179,188-238,246-249,257-274,281-296,306-324,335-363,374-389,398-551,555-649,659-686,697-727,733-765 | |
lib/types/MREmailFilter.ts | 0.00 | 2.17 | 9-53 | |
lib/types/MRUserFilter.ts | 0.00 | 1.82 | 9-62 | |
lib/types/property.ts | 33.33 | 35.71 | 556-564,590-598 | |
lib/types/zodMRListingAgentSchema.ts | 100.00 | 100.00 | | |
lib/types/zodMRUserSchema.ts | 100.00 | 100.00 | | |
lib/utils.ts | 6.25 | 26.79 | 10,19-37,41-46,50-53,56-58,62,65-67,79-91,96,100,104,108-120,128,136-140,144-153 | |
lib/utils/dates.ts | 0.00 | 30.95 | 19-30,70-73,80-84,91-92,99-100,122-125 | |
lib/utils/errorUtils.ts | 0.00 | 10.20 | 6-11,20-40,51-67 | |
lib/utils/getShorthandAddress.ts | 0.00 | 2.50 | 8-46 | |
lib/utils/parseShowingTime.ts | 0.00 | 2.78 | 10-102,112-123 | |
lib/utils/performanceTracker.ts | 0.00 | 12.63 | 11,19-21,29-52,62-93,104-118,129,133-139 | |
lib/utils/rateLimiter.ts | 50.00 | 21.05 | 13-27 | |
---------------------------------------------------------------|---------|---------|------------------- | |
0 pass | |
1 fail | |
Ran 1 tests across 1 files. [7.34s] | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:49:21 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 7.68s: CmdRunAction (id=85) | |
16:49:21 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 41 GLOBAL STEP 41 | |
16:49:32 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:49:32 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: It looks like the column names in the mr_properties table are different than what we expected. Let's check the schema of the mr_properties table. | |
COMMAND: | |
grep -r "mr_properties_Row" --include="*.ts" /workspace | |
16:49:32 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
/workspace/scripts/realestate/notify_recent_transactions.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/scripts/realestate/notify_recent_transactions.ts: property: mr_properties_Row, | |
/workspace/scripts/analytics/property_city_distribution.ts:import { mr_properties_Row } from '../../lib/types/property'; | |
/workspace/scripts/analytics/property_city_distribution.ts:async function fetchLastMonthProperties(): Promise<mr_properties_Row[]> { | |
/workspace/scripts/analytics/property_city_distribution.ts: .overrideTypes<mr_properties_Row[], { merge: false }>(); | |
/workspace/scripts/analytics/property_city_distribution.ts:function groupPropertiesByCity(properties: mr_properties_Row[]): Record<string, mr_properties_Row[]> { | |
/workspace/scripts/analytics/property_city_distribution.ts: const propertiesByCity: Record<string, mr_properties_Row[]> = {}; | |
/workspace/scripts/analytics/property_city_distribution.ts: propertiesByCity: Record<string, mr_properties_Row[]>, | |
/workspace/lib/types/property.ts:export type mr_properties_Row = { | |
/workspace/lib/types/property.ts: * Formats a full address string from an mr_properties_Row object | |
/workspace/lib/types/property.ts: * @param property - The mr_properties_Row object containing address information | |
/workspace/lib/types/property.ts:export function formatMRPropertyAddress(property: mr_properties_Row): string { | |
/workspace/lib/types/sbPeople.ts:import type { mr_properties_Row } from './property' | |
/workspace/lib/types/sbPeople.ts: properties?: mr_properties_Row[] | |
/workspace/lib/services/email/processors/emailProcessor.ts:import { mr_propertynotes_Row, mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/email/processors/genericEmailProcessor.ts:import { mr_propertynotes_Row, mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/email/processors/genericEmailProcessor.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/email/utils/utils.ts: mr_properties_Row, | |
/workspace/lib/services/email/utils/utils.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/email/utils/emailUtils.ts: mr_properties_Row, | |
/workspace/lib/services/email/utils/storageUtils.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/email/utils/storageUtils.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/email/utils/zipUtils.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/email/utils/zipUtils.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/__tests__/utils/test-utils.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/__tests__/utils/test-utils.ts: * @returns The created mr_properties_Row object | |
/workspace/lib/services/__tests__/utils/test-utils.ts:}): Promise<mr_properties_Row | null> { | |
/workspace/lib/services/__tests__/utils/test-utils.ts: const propertyData: Partial<mr_properties_Row> = { | |
/workspace/lib/services/__tests__/utils/test-utils.ts: .single<mr_properties_Row>(); | |
/workspace/lib/services/__tests__/showingRequest.test.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/__tests__/showingRequest.test.ts: .single<mr_properties_Row>() | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/__tests__/realtor_flow/confirmShowingWithClient.test.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/drip_box/utils/addressUtils.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/drip_box/utils/addressUtils.ts: userProperties: mr_properties_Row[] | |
/workspace/lib/services/drip_box/utils/userJourneyUtils.ts:import { mr_offers_Row, mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/drip_box/utils/userJourneyUtils.ts: .overrideTypes<mr_properties_Row[]>() | |
/workspace/lib/services/drip_box/utils/tourFollowup.ts: mr_properties_Row | |
/workspace/lib/services/drip_box/utils/tourFollowup.ts: tours: mr_properties_Row[] | |
/workspace/lib/services/drip_box/utils/tourFollowup.ts: tours: mr_properties_Row[] | |
/workspace/lib/services/drip_box/utils/tourFollowup.ts: const userProperties: mr_properties_Row[] = [] // We don't need mr_properties entries for this function | |
/workspace/lib/services/shared/supabase/properties.ts: mr_properties_Row, | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row | null> { | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row | null> { | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row | null> { | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row[]> { | |
/workspace/lib/services/shared/supabase/properties.ts: mr_properties_Row[], | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row[]> { | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/properties.ts: .single<mr_properties_Row>() | |
/workspace/lib/services/shared/supabase/properties.ts: updateData: Partial<mr_properties_Row> | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row | null> { | |
/workspace/lib/services/shared/supabase/properties.ts: .single<mr_properties_Row>() | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row | null> { | |
/workspace/lib/services/shared/supabase/properties.ts: .single<mr_properties_Row>() | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row[]> { | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/properties.ts:): Promise<mr_properties_Row[]> { | |
/workspace/lib/services/shared/supabase/properties.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/shared/supabase/agents.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/shared/supabase/agents.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/propertyUpdates/soldPropertiesUpdater.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/realEstate/propertyUpdates/soldPropertiesUpdater.ts: property: mr_properties_Row, | |
/workspace/lib/services/realEstate/propertyUpdates/soldPropertiesUpdater.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/getFilteredPropertyInfo.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/realEstate/getFilteredPropertyInfo.ts:export function getFilteredPropertyInfo(property: mr_properties_Row): string { | |
/workspace/lib/services/realEstate/convertClientAddressToFullAddress.ts:import { formatFullAddressParts, mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/realEstate/convertClientAddressToFullAddress.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/core/propertyAccessExtractor.ts: mr_properties_Row, | |
/workspace/lib/services/realEstate/core/propertyAccessExtractor.ts: .single<mr_properties_Row>() | |
/workspace/lib/services/realEstate/core/clientUpdateService.ts: mr_properties_Row, | |
/workspace/lib/services/realEstate/core/whetherIncludeZillowLink.ts:import { mr_properties_Row, mr_sentlistings_Row } from '@/lib/types/property' | |
/workspace/lib/services/realEstate/core/whetherIncludeZillowLink.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/core/whetherIncludeZillowLink.ts: (p: Pick<mr_properties_Row, 'zpid'>) => p.zpid?.toString() || '' | |
/workspace/lib/services/realEstate/core/whetherIncludeZillowLink.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/core/whetherIncludeZillowLink.ts: (p: Pick<mr_properties_Row, 'zpid'>) => p.zpid?.toString() || '' | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts:import { PropertyDetails, mr_properties_Row } from '../../../types/property' | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts: * Converts PropertyDetails to mr_properties_Row format | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts:): mr_properties_Row { | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts: // Convert property details to mr_properties_Row format first | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts: mr_properties_Row[], | |
/workspace/lib/services/realEstate/core/listingAgentManager.ts: properties: mr_properties_Row[] | |
/workspace/lib/services/realEstate/core/transactionTracker.ts: mr_properties_Row, | |
/workspace/lib/services/realEstate/core/transactionTracker.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/realEstate/core/callSummaryNotificationService.ts:import { mr_properties_Row, mr_propertynotes_Row } from '@/lib/types/property' | |
/workspace/lib/services/realEstate/core/callSummaryNotificationService.ts: propertyDetails?: mr_properties_Row | |
/workspace/lib/services/realEstate/core/callSummaryNotificationService.ts: .single<mr_properties_Row>(), | |
/workspace/lib/services/calendar/zapierCalendar.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/calendar/zapierCalendar.ts: property: mr_properties_Row, | |
/workspace/lib/services/calendar/supabaseCalendar.ts:import { mr_properties_Row, formatFullAddressParts } from '../../types/property' | |
/workspace/lib/services/twilio/call_utils/callSummary.ts:import { mr_properties_Row } from '@/lib/types/property' | |
/workspace/lib/services/twilio/call_utils/callSummary.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/lib/services/buyer_flow/property.ts: mr_properties_Row, | |
/workspace/lib/services/buyer_flow/showing.ts:import { mr_properties_Row, PropertyDetails } from '../../types/property' | |
/workspace/lib/services/buyer_flow/showing.ts: .overrideTypes<mr_properties_Row[], { merge: false }>() | |
/workspace/app/api/cron/update-sold-properties/route.ts:import { mr_properties_Row } from '@/lib/types/property' | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:49:32 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=87) | |
16:49:32 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 42 GLOBAL STEP 42 | |
16:49:44 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileReadAction (id=-1) | |
16:49:44 - openhands:INFO: resolve_issue.py:233 - FileReadAction(path='/workspace/lib/types/property.ts', start=0, end=-1, thought="Let's check the definition of the mr_properties_Row type to understand the correct column names.", action=<ActionType.READ: 'read'>, security_risk=None, impl_source=<FileReadSource.OH_ACI: 'oh_aci'>, view_range=[1, 100]) | |
16:49:44 - openhands:INFO: resolve_issue.py:233 - [Read from /workspace/lib/types/property.ts is successful.] | |
Here's the result of running `cat -n` on /workspace/lib/types/property.ts: | |
1 export interface School { | |
2 link?: string | |
3 rating?: number | |
4 totalCount?: number | |
5 distance?: number | |
6 assigned?: string | null | |
7 name?: string | |
8 studentsPerTeacher?: number | |
9 isAssigned?: boolean | |
10 size?: number | |
11 level?: string | |
12 grades?: string | |
13 type?: string | |
14 } | |
15 | |
16 export interface ContactRecipient { | |
17 agent_reason?: number | |
18 zpro?: string | null | |
19 recent_sales?: number | |
20 review_count?: number | |
21 display_name?: string | |
22 zuid?: string | |
23 rating_average?: number | |
24 badge_type?: string | |
25 business_name?: string | |
26 phone?: { | |
27 prefix?: string | |
28 areacode?: string | |
29 number?: string | |
30 } | |
31 image_url?: string | |
32 } | |
33 | |
34 export interface ListedBy { | |
35 agent_reason?: number | |
36 zpro?: boolean | |
37 recent_sales?: number | |
38 review_count?: number | |
39 display_name?: string | |
40 badge_type?: string | |
41 business_name?: string | |
42 rating_average?: number | |
43 phone?: { | |
44 prefix?: string | |
45 areacode?: string | |
46 number?: string | |
47 } | |
48 zuid?: string | |
49 image_url?: string | |
50 profile_url?: string | |
51 } | |
52 | |
53 export interface ResoFacts { | |
54 hasAttachedProperty?: boolean | |
55 frontageType?: string | null | |
56 poolFeatures?: string | null | |
57 flooring?: string[] | |
58 foundationDetails?: string[] | |
59 accessibilityFeatures?: string | null | |
60 hasGarage?: boolean | |
61 hasPetsAllowed?: string | null | |
62 bodyType?: string | null | |
63 topography?: string | null | |
64 landLeaseExpirationDate?: string | null | |
65 hasAdditionalParcels?: boolean | |
66 waterViewYN?: boolean | |
67 atAGlanceFacts?: object[] | |
68 offerReviewDate?: string | null | |
69 aboveGradeFinishedArea?: string | null | |
70 view?: string[] | |
71 buyerAgencyCompensationType?: string | null | |
72 rooms?: object[] | |
73 carportSpaces?: string | null | |
74 cityRegion?: string | |
75 mainLevelBathrooms?: string | null | |
76 hasPrivatePool?: string | null | |
77 associationFeeIncludes?: string | null | |
78 waterSource?: string[] | |
79 exteriorFeatures?: object | |
80 coveredSpaces?: number | |
81 inclusions?: string[] | |
82 hasFireplace?: boolean | |
83 zoningDescription?: string | |
84 garageSpaces?: number | |
85 sewer?: string[] | |
86 elevationUnits?: string | |
87 exclusions?: string | null | |
88 mainLevelBedrooms?: number | |
89 numberOfUnitsVacant?: string | null | |
90 hasWaterfrontView?: string | null | |
91 listAOR?: string | null | |
92 lotSize?: string | |
93 entryLevel?: string | null | |
94 irrigationWaterRightsAcres?: string | null | |
95 greenWaterConservation?: string | null | |
96 stories?: string | null | |
97 livingArea?: string | |
98 numberOfUnitsInCommunity?: string | null | |
99 listingTerms?: string | |
100 otherStructures?: string | null | |
16:49:44 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileReadAction (id=89) | |
16:49:44 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileReadObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 43 GLOBAL STEP 43 | |
16:49:58 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:49:58 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let's look at the mr_properties_Row type definition. | |
COMMAND: | |
grep -n -A 50 "export type mr_properties_Row" /workspace/lib/types/property.ts | |
16:49:59 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
476:export type mr_properties_Row = { | |
477- id?: number // auto gen'd by supabase, now an integer type | |
478- address: string | |
479- city: string | |
480- state: string | |
481- zip_code: string | |
482- agent_id?: string // Optional UUID | |
483- mr_users_id?: string | |
484- mls_number?: string | |
485- price?: number | |
486- bedrooms?: number | |
487- bathrooms?: number | |
488- square_feet?: number | |
489- status?: string // 'FOR_SALE' | 'PENDING' | 'SOLD' | 'OFF_MARKET' | 'OTHER'; | |
490- created_at?: Date | |
491- updated_at?: Date | |
492- zpid?: string | |
493- mls_source?: string | |
494- external_listing_id?: string | |
495- property_type?: string | |
496- year_built?: number | |
497- lot_size?: number | |
498- parking_spaces?: number | |
499- hoa_fee?: number | |
500- hoa_features?: string[] | |
501- amenities?: string[] | |
502- school_district?: string | |
503- zoning?: string | |
504- property_condition?: string | |
505- last_sold_date?: Date | |
506- last_sold_price?: number | |
507- property_tax?: number | |
508- days_on_market?: number | |
509- disclosure_url?: string | |
510- private_remarks?: string | |
511- showing_instructions?: string | |
512- offer_deadline?: Date | |
513- offer_submission_method?: string | |
514- seller_preferences?: string | |
515- property_access_info?: string | |
516- open_house_dates?: string[] | |
517- commission_split?: number | |
518- contingencies_accepted?: boolean | |
519- multiple_offers_received?: boolean | |
520- zillow_url?: string | |
521- original_list_date?: Date | |
522- mls_status_change_date?: Date | |
523- dom_mls?: number | |
524- cdom?: number | |
525- mls_area?: string | |
526- listing_agreement_type?: string | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:49:59 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=91) | |
16:49:59 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 44 GLOBAL STEP 44 | |
16:50:18 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: FileEditAction (id=-1) | |
16:50:18 - openhands:INFO: resolve_issue.py:233 - **FileEditAction** | |
Path: [/workspace/__tests__/listing_agent_tour_scheduling.test.ts] | |
Thought: Now I understand the correct column names for the mr_properties table. Let's update our test to use the correct column names. | |
Command: str_replace | |
Old String: ``` | |
// Extract address parts | |
const addressParts = property.formattedAddress.split(','); | |
const streetAddress = addressParts[0].trim(); | |
const city = addressParts[1]?.trim() || 'San Francisco'; | |
const stateZip = addressParts[2]?.trim() || 'CA 94110'; | |
const [state, zip] = stateZip.split(' '); | |
// Create a property record in the database | |
const { error } = await supabaseClient | |
.from('mr_properties') | |
.insert({ | |
zpid: property.zpid, | |
address: property.formattedAddress, | |
formatted_address: property.formattedAddress, | |
agent_id: testContext.listingAgent.agent_id, | |
mr_users_id: testContext.client.user_id, | |
price: property.price || 1000000, | |
bedrooms: property.bedrooms || 3, | |
bathrooms: property.bathrooms || 2, | |
is_showami_tour: false, | |
street_address: streetAddress, | |
city: city, | |
state: state.trim(), | |
zip: zip?.trim() || '94110' | |
}); | |
if (error) { | |
console.error('Error creating property record:', error); | |
} | |
``` | |
New String: ``` | |
// Extract address parts | |
const addressParts = property.formattedAddress.split(','); | |
const streetAddress = addressParts[0].trim(); | |
const city = addressParts[1]?.trim() || 'San Francisco'; | |
const stateZip = addressParts[2]?.trim() || 'CA 94110'; | |
const [state, zip] = stateZip.split(' '); | |
// Create a property record in the database | |
const { error } = await supabaseClient | |
.from('mr_properties') | |
.insert({ | |
zpid: property.zpid, | |
address: property.formattedAddress, | |
agent_id: testContext.listingAgent.agent_id, | |
mr_users_id: testContext.client.user_id, | |
price: property.price || 1000000, | |
bedrooms: property.bedrooms || 3, | |
bathrooms: property.bathrooms || 2, | |
city: city, | |
state: state.trim(), | |
zip_code: zip?.trim() || '94110', | |
client_proposed_showing_time: null, | |
agent_proposed_showing_time: null, | |
showing_status: null, | |
is_showami_tour: false | |
}); | |
if (error) { | |
console.error('Error creating property record:', error); | |
} | |
``` | |
16:50:18 - openhands:INFO: resolve_issue.py:233 - The file /workspace/__tests__/listing_agent_tour_scheduling.test.ts has been edited. Here's the result of running `cat -n` on a snippet of /workspace/__tests__/listing_agent_tour_scheduling.test.ts: | |
34 last_name: testContext.listingAgent.last_name | |
35 } | |
36 | |
37 // Extract address parts | |
38 const addressParts = property.formattedAddress.split(','); | |
39 const streetAddress = addressParts[0].trim(); | |
40 const city = addressParts[1]?.trim() || 'San Francisco'; | |
41 const stateZip = addressParts[2]?.trim() || 'CA 94110'; | |
42 const [state, zip] = stateZip.split(' '); | |
43 | |
44 // Create a property record in the database | |
45 const { error } = await supabaseClient | |
46 .from('mr_properties') | |
47 .insert({ | |
48 zpid: property.zpid, | |
49 address: property.formattedAddress, | |
50 agent_id: testContext.listingAgent.agent_id, | |
51 mr_users_id: testContext.client.user_id, | |
52 price: property.price || 1000000, | |
53 bedrooms: property.bedrooms || 3, | |
54 bathrooms: property.bathrooms || 2, | |
55 city: city, | |
56 state: state.trim(), | |
57 zip_code: zip?.trim() || '94110', | |
58 client_proposed_showing_time: null, | |
59 agent_proposed_showing_time: null, | |
60 showing_status: null, | |
61 is_showami_tour: false | |
62 }); | |
63 | |
64 if (error) { | |
65 console.error('Error creating property record:', error); | |
66 } | |
67 | |
68 // Simulate a client message requesting a tour | |
69 const response = await assistant.chat( | |
70 `I would like to schedule a tour for ${property.formattedAddress} tomorrow at 3pm`, | |
71 | |
Review the changes and make sure they are as expected. Edit the file again if necessary. | |
16:50:18 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.02s: FileEditAction (id=93) | |
16:50:18 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: FileEditObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 45 GLOBAL STEP 45 | |
16:50:30 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:50:30 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's run the test again to see if it works. | |
COMMAND: | |
./bun test __tests__/listing_agent_tour_scheduling.test.ts | |
16:50:37 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=1, metadata={ | |
"exit_code": 1, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 1.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
bun test v1.1.34 (5e5e7c60) | |
__tests__/listing_agent_tour_scheduling.test.ts: | |
Set tests_running flag to true with 600 second expiry | |
[DB] No data found for user: +test_client16a2_0 | |
[DB] No data found for listing agent by phone: +test_agent16a2_0 | |
Cache hit for cache:getPropertyLis... | |
Cache hit for cache:getPropertyDet... | |
testZpid test_16a2491e_15105185 | |
error: "failed to parse logic tree ((and(sender_phone_number.eq.I would like to schedule a tour for 1418 27th Ave, San Francisco, CA, 94122 tomorrow at 3pm,receiver_phone_number.eq.+test_client16a2_0),and(sender_phone_number.eq.+test_client16a2_0,receiver_phone_number.eq.I would like to schedule a tour for 1418 27th Ave, San Francisco, CA, 94122 tomorrow at 3pm)))" (line 1, column 95) | |
✗ Listing Agent Tour Scheduling > should handle tour requests when we are the listing agent [600.00ms] | |
Cleaning up 1 specifically tracked ZPIDs | |
[ "test_16a2491e_15105185" ] | |
Cleared tests_running flag | |
---------------------------------------------------------------|---------|---------|------------------- | |
File | % Funcs | % Lines | Uncovered Line #s | |
---------------------------------------------------------------|---------|---------|------------------- | |
All files | 20.54 | 25.77 | | |
books_and_resources/processing/searchBooks.ts | 0.00 | 3.30 | 34-60,83-91,104-233,244-312,322-376,383-412,423-454 | |
lib/redis.ts | 100.00 | 100.00 | | |
lib/services/__tests__/utils/test-utils.ts | 53.85 | 48.73 | 258-297,301,305,455-458,462-465,469,495-523,535-547,754-770,784-814,822-852,860-888,894-908,913-927,932-1016,1031-1113,1119-1131,1136-1140,1149-1154 | |
lib/services/buyer_flow/buyer_flow.ts | 0.00 | 2.95 | 135-957 | |
lib/services/buyer_flow/external.ts | 0.00 | 6.17 | 11-86 | |
lib/services/buyer_flow/property.ts | 11.11 | 4.65 | 30-193 | |
lib/services/buyer_flow/showing.ts | 0.00 | 3.89 | 32-99,109-131,140-169,182-423,437-558,595-602,611-627,636-990 | |
lib/services/calendar/supabaseCalendar.ts | 0.00 | 5.63 | 9-75 | |
lib/services/calendar/zapierCalendar.ts | 0.00 | 3.20 | 33-61,102-121,131-167,177-243,256-293,305-355 | |
lib/services/deprecated_redfin_utils/rfu.ts | 0.00 | 9.60 | 19-90,99-134,143-147 | |
lib/services/drip_box/drip.ts | 0.00 | 3.49 | 57-60,93-323,348-693 | |
lib/services/drip_box/dripFrequency.ts | 0.00 | 0.69 | 24-88,102-179 | |
lib/services/drip_box/dripMessageBuilder.ts | 0.00 | 3.54 | 24-132 | |
lib/services/drip_box/dripPreviousListings.ts | 0.00 | 3.45 | 17-46,59-84 | |
lib/services/drip_box/dripScheduler.ts | 0.00 | 4.71 | 24-104 | |
lib/services/drip_box/utils/propertyConverters.ts | 0.00 | 2.74 | 24-34,41-51,58-68,75-93,101-119 | |
lib/services/drip_box/utils/propertyUtils.ts | 0.00 | 3.13 | 11-28,37-55,66-128,141-164 | |
lib/services/drip_box/utils/schedulingUtils.ts | 0.00 | 1.69 | 27-232,242-282,295-354,366-408 | |
lib/services/drip_box/utils/searchUtils.ts | 0.00 | 3.85 | 30-42,49-64,71-81,88-104,117-161,175-226,239-256,269-321 | |
lib/services/drip_box/utils/tourFollowup.ts | 0.00 | 2.11 | 29-69,82-218,231-332,344-420,433-492 | |
lib/services/drip_box/utils/userJourneyUtils.ts | 0.00 | 1.92 | 40-108,121-181,193-207,222-280 | |
lib/services/git/createPullRequest.ts | 0.00 | 2.07 | 30-45,58-153,160-390,397-443,450-481,491-605,614-661,668-788,795-798 | |
lib/services/knowledge_base/processUserInfo.ts | 0.00 | 3.50 | 48-425,439-533,545-623 | |
lib/services/phone_management/phoneManager.ts | 0.00 | 1.98 | 18-116 | |
lib/services/realEstate/configs/clientTools.ts | 50.00 | 97.46 | 629-641 | |
lib/services/realEstate/configs/realtorTools.ts | 100.00 | 100.00 | | |
lib/services/realEstate/configs/sellerTools.ts | 100.00 | 100.00 | | |
lib/services/realEstate/constants/phoneNumbers.ts | 0.00 | 88.24 | 49-51 | |
lib/services/realEstate/constants/properties.ts | 0.00 | 100.00 | | |
lib/services/realEstate/convertClientAddressToFullAddress.ts | 0.00 | 4.94 | 7-83 | |
lib/services/realEstate/core/AdminManager.ts | 33.33 | 6.25 | 14-118 | |
lib/services/realEstate/core/ContextProvider.ts | 0.00 | 8.33 | 14-57,68-89 | |
lib/services/realEstate/core/ModelService.ts | 25.00 | 7.56 | 41-260 | |
lib/services/realEstate/core/ParticipantManager.ts | 0.00 | 2.57 | 28-444 | |
lib/services/realEstate/core/ResponseGenerator.ts | 16.67 | 2.66 | 20-458 | |
lib/services/realEstate/core/ToolCallHandler.ts | 0.00 | 2.62 | 39-297 | |
lib/services/realEstate/core/aiDetection.ts | 0.00 | 3.37 | 44-79,92-128,139-143,153-160 | |
lib/services/realEstate/core/assistantCore.ts | 60.00 | 97.87 | 116-118 | |
lib/services/realEstate/core/bookInstructions.ts | 0.00 | 1.71 | 27-47,56-96,110-166,178-216,229-358 | |
lib/services/realEstate/core/callModel.ts | 0.00 | 3.56 | 61-95,115-160,181-233,243-245,268-337,361-448,474-557,584-680,706-766,786-809,835-928,954-1057,1081-1139,1158-1196,1216-1278 | |
lib/services/realEstate/core/chatMessageProcessor.ts | 16.67 | 10.41 | 106-518 | |
lib/services/realEstate/core/databaseManager.ts | 23.08 | 4.39 | 52-573,600-643 | |
lib/services/realEstate/core/followUp.ts | 0.00 | 5.26 | 33-48,57-84,95-115,127-154,164-180,188-236,246-260,272-292,304-378 | |
lib/services/realEstate/core/listingAgentManager.ts | 12.50 | 2.04 | 28-217,229-709 | |
lib/services/realEstate/core/messageFormatter.ts | 0.00 | 8.33 | 4-14 | |
lib/services/realEstate/core/messageUtils.ts | 0.00 | 2.81 | 45-74,89-285,295-304,319-517,528-579,589-636,648-702,715-852,863-895 | |
lib/services/realEstate/core/messagingService.ts | 10.00 | 8.62 | 73-238,247-264,275-493 | |
lib/services/realEstate/core/propertyAccessExtractor.ts | 0.00 | 2.13 | 32-258,269-300,312-374 | |
lib/services/realEstate/core/sharedState.ts | 100.00 | 100.00 | | |
lib/services/realEstate/core/toolCallCounts.ts | 33.33 | 65.71 | 35-43,52-54 | |
lib/services/realEstate/core/whetherIncludeZillowLink.ts | 0.00 | 3.21 | 18-25,29-33,46-120,133-195 | |
lib/services/realEstate/getFilteredPropertyInfo.ts | 0.00 | 1.00 | 9-107 | |
lib/services/realEstate/linking/linkUsers.ts | 0.00 | 2.70 | 10-45 | |
lib/services/realEstate/prompts/promptSelector.ts | 0.00 | 9.09 | 21-80 | |
lib/services/realEstate/prompts/realtorShowamiRelay.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/sellerPropertyFAQ.ts | 0.00 | 54.69 | 15-72 | |
lib/services/realEstate/prompts/talksToClientPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/talksToRealtorPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/prompts/talksToSellerPrompt.ts | 100.00 | 100.00 | | |
lib/services/realEstate/utils/anthropicUtils.ts | 0.00 | 4.76 | 9-14,23-43,52-59,68-92 | |
lib/services/realEstate/utils/claude2OpenaiFormatConverter.ts | 0.00 | 2.50 | 17-37,46-93,103-137,147-159 | |
lib/services/realEstate/utils/rooClaude2OpenaiConvert.ts | 0.00 | 0.49 | 4-151,156-209 | |
lib/services/realtor_flow/realtor_flow.ts | 0.00 | 4.62 | 41-267 | |
lib/services/redfin_utils/marked_fields.ts | 100.00 | 100.00 | | |
lib/services/redfin_utils/rapidapi_redf.ts | 0.00 | 5.82 | 26-54,76-96,107-182,194-271,284-306,316-354,363-366,375-378,388-432,441-461 | |
lib/services/seller_flow/seller_flow.ts | 0.00 | 4.60 | 32-197 | |
lib/services/serper_ops/ser.ts | 0.00 | 3.13 | 5-6,17-76,86-100,111-143,153-168,178-206 | |
lib/services/shared/apiUsageTracking.ts | 0.00 | 27.07 | 112-160,169-194,203-224 | |
lib/services/shared/cacheDecorator.ts | 62.50 | 81.25 | 9,141-153 | |
lib/services/shared/homeHarvestClient.ts | 0.00 | 2.81 | 74-75,82-85,102-129,142-308,320-328,340-360,378-488,507-613 | |
lib/services/shared/perplexityService.ts | 0.00 | 3.37 | 21-154,164-193,203-249,258-300,309,319-430,446-481,492-518 | |
lib/services/shared/phoneUtils.ts | 0.00 | 15.49 | 10,13,19,26-29,33-41,50-70,79-97,106-134,143-145,154-164,173-175,185-194,203-210 | |
lib/services/shared/supabase/agents.ts | 23.53 | 10.76 | 16-30,39-54,63-79,88-104,128-129,143-151,160-171,180-268,277-299,308-322,331-348,357-371,380-407,422-423,433-434,445-529 | |
lib/services/shared/supabase/calls.ts | 0.00 | 5.08 | 15-42,51-66,75-90,99-120,129-145,153-165 | |
lib/services/shared/supabase/client.ts | 100.00 | 54.55 | 14-18 | |
lib/services/shared/supabase/emails.ts | 0.00 | 5.88 | 16-32,42-58,68-81 | |
lib/services/shared/supabase/index.ts | 100.00 | 100.00 | | |
lib/services/shared/supabase/messageEmbeddings.ts | 0.00 | 5.66 | 15-34,43-60,69-84,92-103,112-127,136-153 | |
lib/services/shared/supabase/messages.ts | 0.00 | 3.96 | 18-40,49-69,78-100,109-127,136-155,164-183,192-226,235-269,278-297,306-336,345-365,374-396 | |
lib/services/shared/supabase/people.ts | 0.00 | 4.26 | 15-29,38-52,61-101,112-130 | |
lib/services/shared/supabase/properties.ts | 0.00 | 4.61 | 19-35,45-65,74-90,100-116,126-152,162-177,186-223,232-245,254-275,284-298,309-326,336-349,358-371,380-394,405-435,446-480 | |
lib/services/shared/supabase/test.ts | 0.00 | 18.18 | 10-18 | |
lib/services/shared/supabase/users.ts | 33.33 | 19.90 | 30-31,45-61,70-82,91-105,115-138,147-166,175-185,200-201,211-212,223-257,267-278 | |
lib/services/shared/supabaseClient.ts | 100.00 | 100.00 | | |
lib/services/zillow_ops/extendedSearch.ts | 0.00 | 1.79 | 16-125 | |
lib/services/zillow_ops/zil.ts | 0.00 | 2.69 | 29-74,83-100,110-208,214-216,220-222,226-228,237-328,332-340,351-395,410-724,736-753,764-779,783-810,852-941,951-980,992-1021,1032-1153,1164-1209 | |
lib/services/zillow_ops/zutils.ts | 100.00 | 100.00 | | |
lib/twilioUtils.ts | 0.00 | 2.40 | 14-61,70-72,81-83,92-96,106-129,139-159,169-179,188-238,246-249,257-274,281-296,306-324,335-363,374-389,398-551,555-649,659-686,697-727,733-765 | |
lib/types/MREmailFilter.ts | 0.00 | 2.17 | 9-53 | |
lib/types/MRUserFilter.ts | 0.00 | 1.82 | 9-62 | |
lib/types/property.ts | 33.33 | 35.71 | 556-564,590-598 | |
lib/types/zodMRListingAgentSchema.ts | 100.00 | 100.00 | | |
lib/types/zodMRUserSchema.ts | 100.00 | 100.00 | | |
lib/utils.ts | 6.25 | 26.79 | 10,19-37,41-46,50-53,56-58,62,65-67,79-91,96,100,104,108-120,128,136-140,144-153 | |
lib/utils/dates.ts | 0.00 | 30.95 | 19-30,70-73,80-84,91-92,99-100,122-125 | |
lib/utils/errorUtils.ts | 0.00 | 10.20 | 6-11,20-40,51-67 | |
lib/utils/getShorthandAddress.ts | 0.00 | 2.50 | 8-46 | |
lib/utils/parseShowingTime.ts | 0.00 | 2.78 | 10-102,112-123 | |
lib/utils/performanceTracker.ts | 0.00 | 12.63 | 11,19-21,29-52,62-93,104-118,129,133-139 | |
lib/utils/rateLimiter.ts | 50.00 | 21.05 | 13-27 | |
---------------------------------------------------------------|---------|---------|------------------- | |
0 pass | |
1 fail | |
Ran 1 tests across 1 files. [6.66s] | |
[The command completed with exit code 1.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 1] | |
--END AGENT OBSERVATION-- | |
16:50:37 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 7.18s: CmdRunAction (id=95) | |
16:50:37 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 46 GLOBAL STEP 46 | |
16:50:51 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:50:51 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: It looks like we're still having an issue with the test. Let's try a different approach. Instead of creating a test, let's implement the solution directly by modifying the buyer_flow.ts and showing.ts files to handle the case when we're the listing agent. | |
Let's first check how the system determines if we're the listing agent. | |
COMMAND: | |
grep -r "current_property_zpid" --include="*.ts" /workspace/lib/services/realtor_flow/realtor_flow.ts | |
16:50:52 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
if (!user?.current_property_zpid) { | |
.eq('zpid', user.current_property_zpid) | |
const property = await getPropertyByZpid(user.current_property_zpid) | |
const property = await findPropertyByZpidAndAgentId(this.sharedState.listingAgent?.current_property_zpid!, | |
.eq('zpid', this.sharedState.listingAgent?.current_property_zpid!) | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:50:52 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=97) | |
16:50:52 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 47 GLOBAL STEP 47 | |
16:51:04 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:51:04 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's look at the buyer_flow.ts file to see where we need to make changes to handle the case when we're the listing agent. | |
COMMAND: | |
grep -n "initiateScheduleShowing" -A 10 /workspace/lib/services/buyer_flow/buyer_flow.ts | |
16:51:04 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
312: async initiateScheduleShowing(params: InitiateScheduleShowingParams): Promise<string> { // TODO: if the showing has already been scheduled, then move straight into the negotiate function. | |
313- const { | |
314- address, | |
315- showingTime, | |
316- clientName, | |
317- email: initialEmail, | |
318- senderPhoneNumber, | |
319- lastMessage, | |
320- isTest = false, | |
321- overrideAgentName: initialOverrideAgentName = 'None', | |
322- overrideAgentNumber: initialOverrideAgentNumber = 'None' | |
-- | |
326: console.log('BuyerFlow.initiateScheduleShowing sharedState:', { | |
327- hasUser: !!this.sharedState.client, | |
328- clientNumber: this.sharedState.client?.phone_number, | |
329- senderPhoneNumber | |
330- }); | |
331- | |
332- // Process client information to identify the client | |
333- const { clientPhone, email, overrideAgentName, overrideAgentNumber } = | |
334- await this.processProvidedClientInfo({ | |
335- senderPhoneNumber, | |
336- lastMessage, | |
-- | |
503: return await this.showingService.initiateScheduleShowing({ | |
504- address: processedAddress, | |
505- showingTime: showingTime, | |
506- propertyDetails: propertyDetails, | |
507- clientName: clientName, | |
508- clientPhone: clientPhone, | |
509- email: email, | |
510- isTest: isTest, | |
511- lastMessage: lastMessage, | |
512- senderPhoneNumber: senderPhoneNumber, | |
513- overrideListingAgentName: overrideAgentName, | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:04 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=99) | |
16:51:04 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 48 GLOBAL STEP 48 | |
16:51:16 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:51:16 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Now let's look at the showing.ts file to see where we need to make changes to handle the case when we're the listing agent. | |
COMMAND: | |
grep -n "initiateScheduleShowing" -A 10 /workspace/lib/services/buyer_flow/showing.ts | grep -A 20 "async initiateScheduleShowing" | |
16:51:16 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
869: async initiateScheduleShowing(params: ShowingScheduleParams): Promise<string> { | |
870- const { | |
871- address, | |
872- showingTime, | |
873- propertyDetails, | |
874- clientName, | |
875- clientPhone, | |
876- email, | |
877- isTest = false, | |
878- lastMessage, | |
879- senderPhoneNumber, | |
-- | |
886: // Debug shared state in ShowingService.initiateScheduleShowing | |
887: console.log('ShowingService.initiateScheduleShowing sharedState:', { | |
888- hasUser: !!this.sharedState.client, | |
889- user: this.sharedState.client ? { | |
890- id: this.sharedState.client.user_id, | |
891- phone: this.sharedState.client.phone_number | |
892- } : null, | |
893- clientNumber: this.sharedState.client?.phone_number, | |
894- clientPhone: clientPhone | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:16 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=101) | |
16:51:16 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 49 GLOBAL STEP 49 | |
16:51:29 - openhands:INFO: agent_controller.py:979 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Set pending action: CmdRunAction (id=-1) | |
16:51:29 - openhands:INFO: resolve_issue.py:233 - **CmdRunAction (source=EventSource.AGENT, is_input=False)** | |
THOUGHT: Let's look at the ShowingService class to see where we need to add the check for when we're the listing agent. | |
COMMAND: | |
grep -n "class ShowingService" -A 20 /workspace/lib/services/buyer_flow/showing.ts | |
16:51:30 - openhands:INFO: resolve_issue.py:233 - **CmdOutputObservation (source=EventSource.AGENT, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
585:export class ShowingService { | |
586- private sharedState: SharedState | |
587- private listingAgentManager: ListingAgentManager | |
588- private regularScheduler: ListingAgentScheduler | |
589- private showamiScheduler: ShowamiSchedulingService | |
590- | |
591- // Reference to Raffi's photo for agent messages | |
592- public RAFFI_PHOTO = | |
593- 'https://media.marketreactor.com/images/mr/raffi_headshot.jpg' | |
594- | |
595- constructor(sharedState: SharedState) { | |
596- this.sharedState = sharedState | |
597- console.log('ShowingService constructor - sharedState:', { | |
598- hasUser: !!sharedState.client, | |
599- clientNumber: sharedState.client?.phone_number | |
600- }) | |
601- this.listingAgentManager = new ListingAgentManager() | |
602- this.regularScheduler = new ListingAgentScheduler(sharedState) | |
603- this.showamiScheduler = new ShowamiSchedulingService(sharedState) | |
604- } | |
605- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:30 - openhands:INFO: agent_controller.py:970 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Cleared pending action after 0.64s: CmdRunAction (id=103) | |
16:51:30 - openhands:INFO: agent_controller.py:416 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Stepping agent after event: CmdOutputObservation | |
[Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] LEVEL 0 LOCAL STEP 50 GLOBAL STEP 50 | |
16:51:30 - openhands:ERROR: loop.py:24 - RuntimeError: Agent reached maximum iteration in headless mode. Current iteration: 50, max iteration: 50 | |
16:51:30 - openhands:INFO: agent_controller.py:586 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Setting agent(CodeActAgent) state from AgentState.RUNNING to AgentState.ERROR | |
16:51:30 - openhands:ERROR: loop.py:24 - RuntimeError: Agent reached maximum budget in headless mode. Current budget: 7.85, max budget: 4.00 | |
16:51:30 - openhands:INFO: agent_controller.py:586 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Setting agent(CodeActAgent) state from AgentState.ERROR to AgentState.ERROR | |
16:51:30 - openhands:WARNING: agent_controller.py:799 - Stopping agent due to traffic control | |
16:51:30 - openhands:INFO: agent_controller.py:586 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Setting agent(CodeActAgent) state from AgentState.ERROR to AgentState.ERROR | |
16:51:30 - openhands:INFO: agent_controller.py:586 - [Agent Controller 762916a8-4fb4-48c2-a3b7-b0917a1cf171-319e8e72befff0c3] Setting agent(CodeActAgent) state from AgentState.ERROR to AgentState.ERROR | |
16:51:30 - openhands:INFO: resolve_issue.py:233 - AgentStateChangedObservation(content='', agent_state='error', reason='RuntimeError: Agent reached maximum iteration in headless mode. Current iteration: 50, max iteration: 50', observation=<ObservationType.AGENT_STATE_CHANGED: 'agent_state_changed'>) | |
16:51:30 - openhands:INFO: resolve_issue.py:97 - ------------------------------ | |
16:51:30 - openhands:INFO: resolve_issue.py:98 - BEGIN Runtime Completion Fn | |
16:51:30 - openhands:INFO: resolve_issue.py:99 - ------------------------------ | |
16:51:30 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
cd /workspace | |
16:51:31 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:31 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
git config --global core.pager "" | |
16:51:31 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:31 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
git config --global --add safe.directory /workspace | |
16:51:32 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:32 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
git add -A | |
16:51:33 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:33 - ACTION | |
**CmdRunAction (source=None, is_input=False)** | |
COMMAND: | |
git diff --no-color --cached b13e91f9674f63279246c9a62ae048892c47f9de | |
16:51:33 - OBSERVATION | |
**CmdOutputObservation (source=None, exit code=0, metadata={ | |
"exit_code": 0, | |
"pid": -1, | |
"username": "openhands", | |
"hostname": "aae885bd2acb", | |
"working_dir": "/workspace", | |
"py_interpreter_path": "/openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python", | |
"prefix": "[Previous command outputs are truncated. Showing the last 10735 lines of the output below.]\n", | |
"suffix": "\n[The command completed with exit code 0.]" | |
})** | |
--BEGIN AGENT OBSERVATION-- | |
[Previous command outputs are truncated. Showing the last 10735 lines of the output below.] | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/class-variance-authority": { | |
+ "version": "0.7.1", | |
+ "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", | |
+ "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "clsx": "^2.1.1" | |
+ }, | |
+ "funding": { | |
+ "url": "https://polar.sh/cva" | |
+ } | |
+ }, | |
+ "node_modules/cli-boxes": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", | |
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/cli-table3": { | |
+ "version": "0.6.5", | |
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", | |
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "string-width": "^4.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": "10.* || >= 12.*" | |
+ }, | |
+ "optionalDependencies": { | |
+ "@colors/colors": "1.5.0" | |
+ } | |
+ }, | |
+ "node_modules/client-only": { | |
+ "version": "0.0.1", | |
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", | |
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/cliui": { | |
+ "version": "8.0.1", | |
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", | |
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "string-width": "^4.2.0", | |
+ "strip-ansi": "^6.0.1", | |
+ "wrap-ansi": "^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12" | |
+ } | |
+ }, | |
+ "node_modules/clsx": { | |
+ "version": "2.1.1", | |
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", | |
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/co": { | |
+ "version": "4.6.0", | |
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", | |
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "iojs": ">= 1.0.0", | |
+ "node": ">= 0.12.0" | |
+ } | |
+ }, | |
+ "node_modules/collect-v8-coverage": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", | |
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/color": { | |
+ "version": "4.2.3", | |
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", | |
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "color-convert": "^2.0.1", | |
+ "color-string": "^1.9.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12.5.0" | |
+ } | |
+ }, | |
+ "node_modules/color-convert": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | |
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "color-name": "~1.1.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=7.0.0" | |
+ } | |
+ }, | |
+ "node_modules/color-name": { | |
+ "version": "1.1.4", | |
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | |
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/color-string": { | |
+ "version": "1.9.1", | |
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", | |
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "color-name": "^1.0.0", | |
+ "simple-swizzle": "^0.2.2" | |
+ } | |
+ }, | |
+ "node_modules/colors": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", | |
+ "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.1.90" | |
+ } | |
+ }, | |
+ "node_modules/combined-stream": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | |
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "delayed-stream": "~1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.8" | |
+ } | |
+ }, | |
+ "node_modules/comma-separated-tokens": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", | |
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/commander": { | |
+ "version": "8.3.0", | |
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", | |
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 12" | |
+ } | |
+ }, | |
+ "node_modules/concat-map": { | |
+ "version": "0.0.1", | |
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | |
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/convert-source-map": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", | |
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/core-util-is": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | |
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/create-jest": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", | |
+ "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "chalk": "^4.0.0", | |
+ "exit": "^0.1.2", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-config": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "prompts": "^2.0.1" | |
+ }, | |
+ "bin": { | |
+ "create-jest": "bin/create-jest.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/create-jest/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/cross-fetch": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", | |
+ "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "node-fetch": "^2.7.0" | |
+ } | |
+ }, | |
+ "node_modules/cross-fetch/node_modules/node-fetch": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | |
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "whatwg-url": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "4.x || >=6.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "encoding": "^0.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "encoding": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/cross-spawn": { | |
+ "version": "7.0.6", | |
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", | |
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "path-key": "^3.1.0", | |
+ "shebang-command": "^2.0.0", | |
+ "which": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 8" | |
+ } | |
+ }, | |
+ "node_modules/crypto-js": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", | |
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/cssesc": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", | |
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "bin": { | |
+ "cssesc": "bin/cssesc" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/csstype": { | |
+ "version": "3.1.3", | |
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | |
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/csv-parse": { | |
+ "version": "5.6.0", | |
+ "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.6.0.tgz", | |
+ "integrity": "sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/damerau-levenshtein": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", | |
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause" | |
+ }, | |
+ "node_modules/data-uri-to-buffer": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", | |
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 12" | |
+ } | |
+ }, | |
+ "node_modules/data-view-buffer": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", | |
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "is-data-view": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/data-view-byte-length": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", | |
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "is-data-view": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/inspect-js" | |
+ } | |
+ }, | |
+ "node_modules/data-view-byte-offset": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", | |
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "es-errors": "^1.3.0", | |
+ "is-data-view": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/date-fns": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", | |
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/kossnocorp" | |
+ } | |
+ }, | |
+ "node_modules/date-fns-tz": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.2.0.tgz", | |
+ "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "date-fns": "^3.0.0 || ^4.0.0" | |
+ } | |
+ }, | |
+ "node_modules/dayjs": { | |
+ "version": "1.11.13", | |
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", | |
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/debug": { | |
+ "version": "4.3.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "supports-color": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/decode-named-character-reference": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", | |
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "character-entities": "^2.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/decode-named-character-reference/node_modules/character-entities": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", | |
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/decompress-response": { | |
+ "version": "6.0.0", | |
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", | |
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "mimic-response": "^3.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/dedent": { | |
+ "version": "1.5.3", | |
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", | |
+ "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "peerDependencies": { | |
+ "babel-plugin-macros": "^3.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "babel-plugin-macros": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/deep-extend": { | |
+ "version": "0.6.0", | |
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", | |
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4.0.0" | |
+ } | |
+ }, | |
+ "node_modules/deep-is": { | |
+ "version": "0.1.4", | |
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", | |
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/deepmerge": { | |
+ "version": "4.3.1", | |
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", | |
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/define-data-property": { | |
+ "version": "1.1.4", | |
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", | |
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-define-property": "^1.0.0", | |
+ "es-errors": "^1.3.0", | |
+ "gopd": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/define-properties": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", | |
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-data-property": "^1.0.1", | |
+ "has-property-descriptors": "^1.0.0", | |
+ "object-keys": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/delayed-stream": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | |
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.4.0" | |
+ } | |
+ }, | |
+ "node_modules/dequal": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", | |
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/detect-libc": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", | |
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/detect-newline": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", | |
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/detect-node-es": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", | |
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/didyoumean": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", | |
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0" | |
+ }, | |
+ "node_modules/diff": { | |
+ "version": "7.0.0", | |
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", | |
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", | |
+ "license": "BSD-3-Clause", | |
+ "engines": { | |
+ "node": ">=0.3.1" | |
+ } | |
+ }, | |
+ "node_modules/diff-match-patch": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", | |
+ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", | |
+ "license": "Apache-2.0" | |
+ }, | |
+ "node_modules/diff-sequences": { | |
+ "version": "29.6.3", | |
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", | |
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/dlv": { | |
+ "version": "1.1.3", | |
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", | |
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/doctrine": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", | |
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "esutils": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/dom-serializer": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", | |
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "domelementtype": "^2.3.0", | |
+ "domhandler": "^5.0.2", | |
+ "entities": "^4.2.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/domelementtype": { | |
+ "version": "2.3.0", | |
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", | |
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/fb55" | |
+ } | |
+ ], | |
+ "license": "BSD-2-Clause" | |
+ }, | |
+ "node_modules/domhandler": { | |
+ "version": "5.0.3", | |
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", | |
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "domelementtype": "^2.3.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/fb55/domhandler?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/domutils": { | |
+ "version": "3.2.2", | |
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", | |
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "dom-serializer": "^2.0.0", | |
+ "domelementtype": "^2.3.0", | |
+ "domhandler": "^5.0.3" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/fb55/domutils?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/dotenv": { | |
+ "version": "16.5.0", | |
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", | |
+ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://dotenvx.com" | |
+ } | |
+ }, | |
+ "node_modules/dunder-proto": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", | |
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind-apply-helpers": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "gopd": "^1.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/eastasianwidth": { | |
+ "version": "0.2.0", | |
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", | |
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/ecdsa-sig-formatter": { | |
+ "version": "1.0.11", | |
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", | |
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "safe-buffer": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/ejs": { | |
+ "version": "3.1.10", | |
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", | |
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "jake": "^10.8.5" | |
+ }, | |
+ "bin": { | |
+ "ejs": "bin/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/electron-to-chromium": { | |
+ "version": "1.5.140", | |
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.140.tgz", | |
+ "integrity": "sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/emittery": { | |
+ "version": "0.13.1", | |
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", | |
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/emoji-regex": { | |
+ "version": "8.0.0", | |
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | |
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/end-of-stream": { | |
+ "version": "1.4.4", | |
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", | |
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "once": "^1.4.0" | |
+ } | |
+ }, | |
+ "node_modules/entities": { | |
+ "version": "4.5.0", | |
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", | |
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=0.12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/fb55/entities?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/error-ex": { | |
+ "version": "1.3.2", | |
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", | |
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "is-arrayish": "^0.2.1" | |
+ } | |
+ }, | |
+ "node_modules/es-abstract": { | |
+ "version": "1.23.9", | |
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", | |
+ "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "array-buffer-byte-length": "^1.0.2", | |
+ "arraybuffer.prototype.slice": "^1.0.4", | |
+ "available-typed-arrays": "^1.0.7", | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "data-view-buffer": "^1.0.2", | |
+ "data-view-byte-length": "^1.0.2", | |
+ "data-view-byte-offset": "^1.0.1", | |
+ "es-define-property": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.0.0", | |
+ "es-set-tostringtag": "^2.1.0", | |
+ "es-to-primitive": "^1.3.0", | |
+ "function.prototype.name": "^1.1.8", | |
+ "get-intrinsic": "^1.2.7", | |
+ "get-proto": "^1.0.0", | |
+ "get-symbol-description": "^1.1.0", | |
+ "globalthis": "^1.0.4", | |
+ "gopd": "^1.2.0", | |
+ "has-property-descriptors": "^1.0.2", | |
+ "has-proto": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "hasown": "^2.0.2", | |
+ "internal-slot": "^1.1.0", | |
+ "is-array-buffer": "^3.0.5", | |
+ "is-callable": "^1.2.7", | |
+ "is-data-view": "^1.0.2", | |
+ "is-regex": "^1.2.1", | |
+ "is-shared-array-buffer": "^1.0.4", | |
+ "is-string": "^1.1.1", | |
+ "is-typed-array": "^1.1.15", | |
+ "is-weakref": "^1.1.0", | |
+ "math-intrinsics": "^1.1.0", | |
+ "object-inspect": "^1.13.3", | |
+ "object-keys": "^1.1.1", | |
+ "object.assign": "^4.1.7", | |
+ "own-keys": "^1.0.1", | |
+ "regexp.prototype.flags": "^1.5.3", | |
+ "safe-array-concat": "^1.1.3", | |
+ "safe-push-apply": "^1.0.0", | |
+ "safe-regex-test": "^1.1.0", | |
+ "set-proto": "^1.0.0", | |
+ "string.prototype.trim": "^1.2.10", | |
+ "string.prototype.trimend": "^1.0.9", | |
+ "string.prototype.trimstart": "^1.0.8", | |
+ "typed-array-buffer": "^1.0.3", | |
+ "typed-array-byte-length": "^1.0.3", | |
+ "typed-array-byte-offset": "^1.0.4", | |
+ "typed-array-length": "^1.0.7", | |
+ "unbox-primitive": "^1.1.0", | |
+ "which-typed-array": "^1.1.18" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/es-define-property": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", | |
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-errors": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", | |
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-iterator-helpers": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", | |
+ "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.6", | |
+ "es-errors": "^1.3.0", | |
+ "es-set-tostringtag": "^2.0.3", | |
+ "function-bind": "^1.1.2", | |
+ "get-intrinsic": "^1.2.6", | |
+ "globalthis": "^1.0.4", | |
+ "gopd": "^1.2.0", | |
+ "has-property-descriptors": "^1.0.2", | |
+ "has-proto": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "internal-slot": "^1.1.0", | |
+ "iterator.prototype": "^1.1.4", | |
+ "safe-array-concat": "^1.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-object-atoms": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", | |
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-set-tostringtag": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", | |
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0", | |
+ "get-intrinsic": "^1.2.6", | |
+ "has-tostringtag": "^1.0.2", | |
+ "hasown": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-shim-unscopables": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", | |
+ "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "hasown": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-to-primitive": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", | |
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-callable": "^1.2.7", | |
+ "is-date-object": "^1.0.5", | |
+ "is-symbol": "^1.0.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/escalade": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", | |
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/escape-string-regexp": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", | |
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint": { | |
+ "version": "9.25.1", | |
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", | |
+ "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@eslint-community/eslint-utils": "^4.2.0", | |
+ "@eslint-community/regexpp": "^4.12.1", | |
+ "@eslint/config-array": "^0.20.0", | |
+ "@eslint/config-helpers": "^0.2.1", | |
+ "@eslint/core": "^0.13.0", | |
+ "@eslint/eslintrc": "^3.3.1", | |
+ "@eslint/js": "9.25.1", | |
+ "@eslint/plugin-kit": "^0.2.8", | |
+ "@humanfs/node": "^0.16.6", | |
+ "@humanwhocodes/module-importer": "^1.0.1", | |
+ "@humanwhocodes/retry": "^0.4.2", | |
+ "@types/estree": "^1.0.6", | |
+ "@types/json-schema": "^7.0.15", | |
+ "ajv": "^6.12.4", | |
+ "chalk": "^4.0.0", | |
+ "cross-spawn": "^7.0.6", | |
+ "debug": "^4.3.2", | |
+ "escape-string-regexp": "^4.0.0", | |
+ "eslint-scope": "^8.3.0", | |
+ "eslint-visitor-keys": "^4.2.0", | |
+ "espree": "^10.3.0", | |
+ "esquery": "^1.5.0", | |
+ "esutils": "^2.0.2", | |
+ "fast-deep-equal": "^3.1.3", | |
+ "file-entry-cache": "^8.0.0", | |
+ "find-up": "^5.0.0", | |
+ "glob-parent": "^6.0.2", | |
+ "ignore": "^5.2.0", | |
+ "imurmurhash": "^0.1.4", | |
+ "is-glob": "^4.0.0", | |
+ "json-stable-stringify-without-jsonify": "^1.0.1", | |
+ "lodash.merge": "^4.6.2", | |
+ "minimatch": "^3.1.2", | |
+ "natural-compare": "^1.4.0", | |
+ "optionator": "^0.9.3" | |
+ }, | |
+ "bin": { | |
+ "eslint": "bin/eslint.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://eslint.org/donate" | |
+ }, | |
+ "peerDependencies": { | |
+ "jiti": "*" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "jiti": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-config-next": { | |
+ "version": "15.3.1", | |
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.3.1.tgz", | |
+ "integrity": "sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@next/eslint-plugin-next": "15.3.1", | |
+ "@rushstack/eslint-patch": "^1.10.3", | |
+ "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", | |
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", | |
+ "eslint-import-resolver-node": "^0.3.6", | |
+ "eslint-import-resolver-typescript": "^3.5.2", | |
+ "eslint-plugin-import": "^2.31.0", | |
+ "eslint-plugin-jsx-a11y": "^6.10.0", | |
+ "eslint-plugin-react": "^7.37.0", | |
+ "eslint-plugin-react-hooks": "^5.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", | |
+ "typescript": ">=3.3.1" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "typescript": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-node": { | |
+ "version": "0.3.9", | |
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", | |
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "debug": "^3.2.7", | |
+ "is-core-module": "^2.13.0", | |
+ "resolve": "^1.22.4" | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-node/node_modules/debug": { | |
+ "version": "3.2.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | |
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-typescript": { | |
+ "version": "3.10.1", | |
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", | |
+ "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "@nolyfill/is-core-module": "1.0.39", | |
+ "debug": "^4.4.0", | |
+ "get-tsconfig": "^4.10.0", | |
+ "is-bun-module": "^2.0.0", | |
+ "stable-hash": "^0.0.5", | |
+ "tinyglobby": "^0.2.13", | |
+ "unrs-resolver": "^1.6.2" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.18.0 || >=16.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint-import-resolver-typescript" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "*", | |
+ "eslint-plugin-import": "*", | |
+ "eslint-plugin-import-x": "*" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "eslint-plugin-import": { | |
+ "optional": true | |
+ }, | |
+ "eslint-plugin-import-x": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-typescript/node_modules/debug": { | |
+ "version": "4.4.0", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", | |
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "supports-color": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-module-utils": { | |
+ "version": "2.12.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", | |
+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "debug": "^3.2.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "eslint": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-module-utils/node_modules/debug": { | |
+ "version": "3.2.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | |
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-import": { | |
+ "version": "2.31.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", | |
+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@rtsao/scc": "^1.1.0", | |
+ "array-includes": "^3.1.8", | |
+ "array.prototype.findlastindex": "^1.2.5", | |
+ "array.prototype.flat": "^1.3.2", | |
+ "array.prototype.flatmap": "^1.3.2", | |
+ "debug": "^3.2.7", | |
+ "doctrine": "^2.1.0", | |
+ "eslint-import-resolver-node": "^0.3.9", | |
+ "eslint-module-utils": "^2.12.0", | |
+ "hasown": "^2.0.2", | |
+ "is-core-module": "^2.15.1", | |
+ "is-glob": "^4.0.3", | |
+ "minimatch": "^3.1.2", | |
+ "object.fromentries": "^2.0.8", | |
+ "object.groupby": "^1.0.3", | |
+ "object.values": "^1.2.0", | |
+ "semver": "^6.3.1", | |
+ "string.prototype.trimend": "^1.0.8", | |
+ "tsconfig-paths": "^3.15.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-import/node_modules/debug": { | |
+ "version": "3.2.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | |
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-jsx-a11y": { | |
+ "version": "6.10.2", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", | |
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "aria-query": "^5.3.2", | |
+ "array-includes": "^3.1.8", | |
+ "array.prototype.flatmap": "^1.3.2", | |
+ "ast-types-flow": "^0.0.8", | |
+ "axe-core": "^4.10.0", | |
+ "axobject-query": "^4.1.0", | |
+ "damerau-levenshtein": "^1.0.8", | |
+ "emoji-regex": "^9.2.2", | |
+ "hasown": "^2.0.2", | |
+ "jsx-ast-utils": "^3.3.5", | |
+ "language-tags": "^1.0.9", | |
+ "minimatch": "^3.1.2", | |
+ "object.fromentries": "^2.0.8", | |
+ "safe-regex-test": "^1.0.3", | |
+ "string.prototype.includes": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { | |
+ "version": "9.2.2", | |
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", | |
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/eslint-plugin-react": { | |
+ "version": "7.37.5", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", | |
+ "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "array-includes": "^3.1.8", | |
+ "array.prototype.findlast": "^1.2.5", | |
+ "array.prototype.flatmap": "^1.3.3", | |
+ "array.prototype.tosorted": "^1.1.4", | |
+ "doctrine": "^2.1.0", | |
+ "es-iterator-helpers": "^1.2.1", | |
+ "estraverse": "^5.3.0", | |
+ "hasown": "^2.0.2", | |
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0", | |
+ "minimatch": "^3.1.2", | |
+ "object.entries": "^1.1.9", | |
+ "object.fromentries": "^2.0.8", | |
+ "object.values": "^1.2.1", | |
+ "prop-types": "^15.8.1", | |
+ "resolve": "^2.0.0-next.5", | |
+ "semver": "^6.3.1", | |
+ "string.prototype.matchall": "^4.0.12", | |
+ "string.prototype.repeat": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-react-hooks": { | |
+ "version": "5.2.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", | |
+ "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-react/node_modules/resolve": { | |
+ "version": "2.0.0-next.5", | |
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", | |
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-core-module": "^2.13.0", | |
+ "path-parse": "^1.0.7", | |
+ "supports-preserve-symlinks-flag": "^1.0.0" | |
+ }, | |
+ "bin": { | |
+ "resolve": "bin/resolve" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/eslint-scope": { | |
+ "version": "8.3.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", | |
+ "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "esrecurse": "^4.3.0", | |
+ "estraverse": "^5.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/eslint-visitor-keys": { | |
+ "version": "3.4.3", | |
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", | |
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/escape-string-regexp": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", | |
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/eslint-visitor-keys": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", | |
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/find-up": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", | |
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "locate-path": "^6.0.0", | |
+ "path-exists": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/locate-path": { | |
+ "version": "6.0.0", | |
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", | |
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "p-locate": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/p-limit": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", | |
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "yocto-queue": "^0.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/p-locate": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", | |
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "p-limit": "^3.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/yocto-queue": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", | |
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/esm-env": { | |
+ "version": "1.1.4", | |
+ "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz", | |
+ "integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==", | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/espree": { | |
+ "version": "10.3.0", | |
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", | |
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "acorn": "^8.14.0", | |
+ "acorn-jsx": "^5.3.2", | |
+ "eslint-visitor-keys": "^4.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/espree/node_modules/eslint-visitor-keys": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", | |
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/esprima": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | |
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "peer": true, | |
+ "bin": { | |
+ "esparse": "bin/esparse.js", | |
+ "esvalidate": "bin/esvalidate.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/esquery": { | |
+ "version": "1.6.0", | |
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", | |
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "dependencies": { | |
+ "estraverse": "^5.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10" | |
+ } | |
+ }, | |
+ "node_modules/esrap": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz", | |
+ "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==", | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jridgewell/sourcemap-codec": "^1.4.15", | |
+ "@types/estree": "^1.0.1" | |
+ } | |
+ }, | |
+ "node_modules/esrecurse": { | |
+ "version": "4.3.0", | |
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", | |
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "estraverse": "^5.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ } | |
+ }, | |
+ "node_modules/estraverse": { | |
+ "version": "5.3.0", | |
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", | |
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ } | |
+ }, | |
+ "node_modules/estree-walker": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", | |
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/esutils": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", | |
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/event-target-shim": { | |
+ "version": "5.0.1", | |
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", | |
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/events": { | |
+ "version": "3.3.0", | |
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", | |
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.8.x" | |
+ } | |
+ }, | |
+ "node_modules/eventsource-parser": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-1.1.2.tgz", | |
+ "integrity": "sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=14.18" | |
+ } | |
+ }, | |
+ "node_modules/execa": { | |
+ "version": "5.1.1", | |
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", | |
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "cross-spawn": "^7.0.3", | |
+ "get-stream": "^6.0.0", | |
+ "human-signals": "^2.1.0", | |
+ "is-stream": "^2.0.0", | |
+ "merge-stream": "^2.0.0", | |
+ "npm-run-path": "^4.0.1", | |
+ "onetime": "^5.1.2", | |
+ "signal-exit": "^3.0.3", | |
+ "strip-final-newline": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sindresorhus/execa?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/exit": { | |
+ "version": "0.1.2", | |
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", | |
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", | |
+ "dev": true, | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">= 0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/expand-template": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", | |
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", | |
+ "license": "(MIT OR WTFPL)", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/expect": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", | |
+ "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@jest/expect-utils": "^29.7.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "jest-matcher-utils": "^29.7.0", | |
+ "jest-message-util": "^29.7.0", | |
+ "jest-util": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/extend": { | |
+ "version": "3.0.2", | |
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | |
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fast-deep-equal": { | |
+ "version": "3.1.3", | |
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | |
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fast-glob": { | |
+ "version": "3.3.2", | |
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", | |
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@nodelib/fs.stat": "^2.0.2", | |
+ "@nodelib/fs.walk": "^1.2.3", | |
+ "glob-parent": "^5.1.2", | |
+ "merge2": "^1.3.0", | |
+ "micromatch": "^4.0.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8.6.0" | |
+ } | |
+ }, | |
+ "node_modules/fast-glob/node_modules/glob-parent": { | |
+ "version": "5.1.2", | |
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", | |
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "is-glob": "^4.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/fast-json-stable-stringify": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | |
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fast-levenshtein": { | |
+ "version": "2.0.6", | |
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", | |
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fastq": { | |
+ "version": "1.17.1", | |
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", | |
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "reusify": "^1.0.4" | |
+ } | |
+ }, | |
+ "node_modules/fault": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", | |
+ "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "format": "^0.2.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/fb-watchman": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", | |
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "bser": "2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/fetch-blob": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", | |
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/jimmywarting" | |
+ }, | |
+ { | |
+ "type": "paypal", | |
+ "url": "https://paypal.me/jimmywarting" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "node-domexception": "^1.0.0", | |
+ "web-streams-polyfill": "^3.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^12.20 || >= 14.13" | |
+ } | |
+ }, | |
+ "node_modules/fetch-blob/node_modules/web-streams-polyfill": { | |
+ "version": "3.3.3", | |
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", | |
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 8" | |
+ } | |
+ }, | |
+ "node_modules/file-entry-cache": { | |
+ "version": "8.0.0", | |
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", | |
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "flat-cache": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16.0.0" | |
+ } | |
+ }, | |
+ "node_modules/filelist": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", | |
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "minimatch": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/filelist/node_modules/brace-expansion": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", | |
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "balanced-match": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/filelist/node_modules/minimatch": { | |
+ "version": "5.1.6", | |
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", | |
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "brace-expansion": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/fill-range": { | |
+ "version": "7.1.1", | |
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", | |
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "to-regex-range": "^5.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/find-up": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", | |
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "locate-path": "^5.0.0", | |
+ "path-exists": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/flat-cache": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", | |
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "flatted": "^3.2.9", | |
+ "keyv": "^4.5.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16" | |
+ } | |
+ }, | |
+ "node_modules/flatted": { | |
+ "version": "3.3.3", | |
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", | |
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/follow-redirects": { | |
+ "version": "1.15.9", | |
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", | |
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "individual", | |
+ "url": "https://github.com/sponsors/RubenVerborgh" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "debug": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/for-each": { | |
+ "version": "0.3.5", | |
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", | |
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-callable": "^1.2.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/foreground-child": { | |
+ "version": "3.3.0", | |
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", | |
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "cross-spawn": "^7.0.0", | |
+ "signal-exit": "^4.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/foreground-child/node_modules/signal-exit": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", | |
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "engines": { | |
+ "node": ">=14" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/form-data": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", | |
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "asynckit": "^0.4.0", | |
+ "combined-stream": "^1.0.8", | |
+ "mime-types": "^2.1.12" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/form-data-encoder": { | |
+ "version": "1.7.2", | |
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", | |
+ "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/format": { | |
+ "version": "0.2.2", | |
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", | |
+ "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", | |
+ "engines": { | |
+ "node": ">=0.4.x" | |
+ } | |
+ }, | |
+ "node_modules/formdata-node": { | |
+ "version": "4.4.1", | |
+ "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", | |
+ "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "node-domexception": "1.0.0", | |
+ "web-streams-polyfill": "4.0.0-beta.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 12.20" | |
+ } | |
+ }, | |
+ "node_modules/formdata-polyfill": { | |
+ "version": "4.0.10", | |
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", | |
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "fetch-blob": "^3.1.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12.20.0" | |
+ } | |
+ }, | |
+ "node_modules/fraction.js": { | |
+ "version": "4.3.7", | |
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", | |
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": "*" | |
+ }, | |
+ "funding": { | |
+ "type": "patreon", | |
+ "url": "https://github.com/sponsors/rawify" | |
+ } | |
+ }, | |
+ "node_modules/framer-motion": { | |
+ "version": "11.18.2", | |
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", | |
+ "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "motion-dom": "^11.18.1", | |
+ "motion-utils": "^11.18.1", | |
+ "tslib": "^2.4.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "@emotion/is-prop-valid": "*", | |
+ "react": "^18.0.0 || ^19.0.0", | |
+ "react-dom": "^18.0.0 || ^19.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@emotion/is-prop-valid": { | |
+ "optional": true | |
+ }, | |
+ "react": { | |
+ "optional": true | |
+ }, | |
+ "react-dom": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/fs-constants": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", | |
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fs.realpath": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | |
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true | |
+ }, | |
+ "node_modules/fsevents": { | |
+ "version": "2.3.3", | |
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", | |
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", | |
+ "dev": true, | |
+ "hasInstallScript": true, | |
+ "license": "MIT", | |
+ "optional": true, | |
+ "os": [ | |
+ "darwin" | |
+ ], | |
+ "engines": { | |
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" | |
+ } | |
+ }, | |
+ "node_modules/function-bind": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", | |
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/function.prototype.name": { | |
+ "version": "1.1.8", | |
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", | |
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "functions-have-names": "^1.2.3", | |
+ "hasown": "^2.0.2", | |
+ "is-callable": "^1.2.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/functions-have-names": { | |
+ "version": "1.2.3", | |
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", | |
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/gaxios": { | |
+ "version": "6.7.1", | |
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", | |
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "extend": "^3.0.2", | |
+ "https-proxy-agent": "^7.0.1", | |
+ "is-stream": "^2.0.0", | |
+ "node-fetch": "^2.6.9", | |
+ "uuid": "^9.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/gaxios/node_modules/node-fetch": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | |
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "whatwg-url": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "4.x || >=6.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "encoding": "^0.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "encoding": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/gaxios/node_modules/uuid": { | |
+ "version": "9.0.1", | |
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", | |
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", | |
+ "funding": [ | |
+ "https://github.com/sponsors/broofa", | |
+ "https://github.com/sponsors/ctavan" | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "uuid": "dist/bin/uuid" | |
+ } | |
+ }, | |
+ "node_modules/gcp-metadata": { | |
+ "version": "6.1.0", | |
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", | |
+ "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "gaxios": "^6.0.0", | |
+ "json-bigint": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/geist": { | |
+ "version": "1.3.1", | |
+ "resolved": "https://registry.npmjs.org/geist/-/geist-1.3.1.tgz", | |
+ "integrity": "sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==", | |
+ "license": "SIL OPEN FONT LICENSE", | |
+ "peerDependencies": { | |
+ "next": ">=13.2.0" | |
+ } | |
+ }, | |
+ "node_modules/gensync": { | |
+ "version": "1.0.0-beta.2", | |
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", | |
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6.9.0" | |
+ } | |
+ }, | |
+ "node_modules/geolib": { | |
+ "version": "3.3.4", | |
+ "resolved": "https://registry.npmjs.org/geolib/-/geolib-3.3.4.tgz", | |
+ "integrity": "sha512-EicrlLLL3S42gE9/wde+11uiaYAaeSVDwCUIv2uMIoRBfNJCn8EsSI+6nS3r4TCKDO6+RQNM9ayLq2at+oZQWQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/get-caller-file": { | |
+ "version": "2.0.5", | |
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", | |
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": "6.* || 8.* || >= 10.*" | |
+ } | |
+ }, | |
+ "node_modules/get-east-asian-width": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", | |
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/get-intrinsic": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", | |
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind-apply-helpers": "^1.0.2", | |
+ "es-define-property": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.1.1", | |
+ "function-bind": "^1.1.2", | |
+ "get-proto": "^1.0.1", | |
+ "gopd": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "hasown": "^2.0.2", | |
+ "math-intrinsics": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/get-nonce": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", | |
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/get-package-type": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", | |
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8.0.0" | |
+ } | |
+ }, | |
+ "node_modules/get-proto": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", | |
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "dunder-proto": "^1.0.1", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/get-stream": { | |
+ "version": "6.0.1", | |
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", | |
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/get-symbol-description": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", | |
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "get-intrinsic": "^1.2.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/get-tsconfig": { | |
+ "version": "4.10.0", | |
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", | |
+ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "resolve-pkg-maps": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/github-from-package": { | |
+ "version": "0.0.0", | |
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", | |
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/glob": { | |
+ "version": "7.2.3", | |
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", | |
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", | |
+ "deprecated": "Glob versions prior to v9 are no longer supported", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "fs.realpath": "^1.0.0", | |
+ "inflight": "^1.0.4", | |
+ "inherits": "2", | |
+ "minimatch": "^3.1.1", | |
+ "once": "^1.3.0", | |
+ "path-is-absolute": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "*" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/glob-parent": { | |
+ "version": "6.0.2", | |
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", | |
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "is-glob": "^4.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10.13.0" | |
+ } | |
+ }, | |
+ "node_modules/globals": { | |
+ "version": "16.0.0", | |
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", | |
+ "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/globalthis": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", | |
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-properties": "^1.2.1", | |
+ "gopd": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/google-auth-library": { | |
+ "version": "9.15.1", | |
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", | |
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "base64-js": "^1.3.0", | |
+ "ecdsa-sig-formatter": "^1.0.11", | |
+ "gaxios": "^6.1.1", | |
+ "gcp-metadata": "^6.1.0", | |
+ "gtoken": "^7.0.0", | |
+ "jws": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/googleapis": { | |
+ "version": "144.0.0", | |
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-144.0.0.tgz", | |
+ "integrity": "sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "google-auth-library": "^9.0.0", | |
+ "googleapis-common": "^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/googleapis-common": { | |
+ "version": "7.2.0", | |
+ "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", | |
+ "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "extend": "^3.0.2", | |
+ "gaxios": "^6.0.3", | |
+ "google-auth-library": "^9.7.0", | |
+ "qs": "^6.7.0", | |
+ "url-template": "^2.0.8", | |
+ "uuid": "^9.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/googleapis-common/node_modules/uuid": { | |
+ "version": "9.0.1", | |
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", | |
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", | |
+ "funding": [ | |
+ "https://github.com/sponsors/broofa", | |
+ "https://github.com/sponsors/ctavan" | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "uuid": "dist/bin/uuid" | |
+ } | |
+ }, | |
+ "node_modules/gopd": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", | |
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/gpt-tokenizer": { | |
+ "version": "2.9.0", | |
+ "resolved": "https://registry.npmjs.org/gpt-tokenizer/-/gpt-tokenizer-2.9.0.tgz", | |
+ "integrity": "sha512-YSpexBL/k4bfliAzMrRqn3M6+it02LutVyhVpDeMKrC/O9+pCe/5s8U2hYKa2vFLD5/vHhsKc8sOn/qGqII8Kg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/graceful-fs": { | |
+ "version": "4.2.11", | |
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", | |
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/graphemer": { | |
+ "version": "1.4.0", | |
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", | |
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/gtoken": { | |
+ "version": "7.1.0", | |
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", | |
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "gaxios": "^6.0.0", | |
+ "jws": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/handlebars": { | |
+ "version": "4.7.8", | |
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", | |
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "minimist": "^1.2.5", | |
+ "neo-async": "^2.6.2", | |
+ "source-map": "^0.6.1", | |
+ "wordwrap": "^1.0.0" | |
+ }, | |
+ "bin": { | |
+ "handlebars": "bin/handlebars" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.4.7" | |
+ }, | |
+ "optionalDependencies": { | |
+ "uglify-js": "^3.1.4" | |
+ } | |
+ }, | |
+ "node_modules/has-bigints": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", | |
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/has-flag": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", | |
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/has-property-descriptors": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", | |
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-define-property": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/has-proto": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", | |
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "dunder-proto": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/has-symbols": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", | |
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/has-tostringtag": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", | |
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "has-symbols": "^1.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/hasown": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", | |
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "function-bind": "^1.1.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/hast-util-parse-selector": { | |
+ "version": "2.2.5", | |
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", | |
+ "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/hast-util-whitespace": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", | |
+ "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/hastscript": { | |
+ "version": "6.0.0", | |
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", | |
+ "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/hast": "^2.0.0", | |
+ "comma-separated-tokens": "^1.0.0", | |
+ "hast-util-parse-selector": "^2.0.0", | |
+ "property-information": "^5.0.0", | |
+ "space-separated-tokens": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/hastscript/node_modules/comma-separated-tokens": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", | |
+ "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/hastscript/node_modules/property-information": { | |
+ "version": "5.6.0", | |
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", | |
+ "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "xtend": "^4.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/hastscript/node_modules/space-separated-tokens": { | |
+ "version": "1.1.5", | |
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", | |
+ "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/highlight.js": { | |
+ "version": "10.7.3", | |
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", | |
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", | |
+ "license": "BSD-3-Clause", | |
+ "engines": { | |
+ "node": "*" | |
+ } | |
+ }, | |
+ "node_modules/highlightjs-vue": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", | |
+ "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", | |
+ "license": "CC0-1.0" | |
+ }, | |
+ "node_modules/html-escaper": { | |
+ "version": "3.0.3", | |
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", | |
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/html-to-text": { | |
+ "version": "9.0.5", | |
+ "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", | |
+ "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@selderee/plugin-htmlparser2": "^0.11.0", | |
+ "deepmerge": "^4.3.1", | |
+ "dom-serializer": "^2.0.0", | |
+ "htmlparser2": "^8.0.2", | |
+ "selderee": "^0.11.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/htmlparser2": { | |
+ "version": "8.0.2", | |
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", | |
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", | |
+ "funding": [ | |
+ "https://github.com/fb55/htmlparser2?sponsor=1", | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/fb55" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "domelementtype": "^2.3.0", | |
+ "domhandler": "^5.0.3", | |
+ "domutils": "^3.0.1", | |
+ "entities": "^4.4.0" | |
+ } | |
+ }, | |
+ "node_modules/http-proxy-agent": { | |
+ "version": "7.0.2", | |
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", | |
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "agent-base": "^7.1.0", | |
+ "debug": "^4.3.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 14" | |
+ } | |
+ }, | |
+ "node_modules/https-proxy-agent": { | |
+ "version": "7.0.5", | |
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", | |
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "agent-base": "^7.0.2", | |
+ "debug": "4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 14" | |
+ } | |
+ }, | |
+ "node_modules/human-signals": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", | |
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10.17.0" | |
+ } | |
+ }, | |
+ "node_modules/humanize-ms": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", | |
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.0.0" | |
+ } | |
+ }, | |
+ "node_modules/ieee754": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | |
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "BSD-3-Clause" | |
+ }, | |
+ "node_modules/ignore": { | |
+ "version": "5.3.2", | |
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", | |
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 4" | |
+ } | |
+ }, | |
+ "node_modules/immediate": { | |
+ "version": "3.0.6", | |
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", | |
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/import-fresh": { | |
+ "version": "3.3.1", | |
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", | |
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "parent-module": "^1.0.0", | |
+ "resolve-from": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/import-fresh/node_modules/resolve-from": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", | |
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/import-local": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", | |
+ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "pkg-dir": "^4.2.0", | |
+ "resolve-cwd": "^3.0.0" | |
+ }, | |
+ "bin": { | |
+ "import-local-fixture": "fixtures/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/imurmurhash": { | |
+ "version": "0.1.4", | |
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", | |
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.8.19" | |
+ } | |
+ }, | |
+ "node_modules/inflight": { | |
+ "version": "1.0.6", | |
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | |
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", | |
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "once": "^1.3.0", | |
+ "wrappy": "1" | |
+ } | |
+ }, | |
+ "node_modules/inherits": { | |
+ "version": "2.0.4", | |
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | |
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/ini": { | |
+ "version": "1.3.8", | |
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", | |
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/inline-style-parser": { | |
+ "version": "0.1.1", | |
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", | |
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/internal-slot": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", | |
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0", | |
+ "hasown": "^2.0.2", | |
+ "side-channel": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/is-alphabetical": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", | |
+ "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/is-alphanumerical": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", | |
+ "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-alphabetical": "^1.0.0", | |
+ "is-decimal": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/is-array-buffer": { | |
+ "version": "3.0.5", | |
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", | |
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "get-intrinsic": "^1.2.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-arrayish": { | |
+ "version": "0.2.1", | |
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", | |
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/is-async-function": { | |
+ "version": "2.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", | |
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "async-function": "^1.0.0", | |
+ "call-bound": "^1.0.3", | |
+ "get-proto": "^1.0.1", | |
+ "has-tostringtag": "^1.0.2", | |
+ "safe-regex-test": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-bigint": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", | |
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "has-bigints": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-binary-path": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", | |
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "binary-extensions": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/is-boolean-object": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", | |
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "has-tostringtag": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-buffer": { | |
+ "version": "2.0.5", | |
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", | |
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/is-bun-module": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", | |
+ "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "semver": "^7.7.1" | |
+ } | |
+ }, | |
+ "node_modules/is-bun-module/node_modules/semver": { | |
+ "version": "7.7.1", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", | |
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/is-callable": { | |
+ "version": "1.2.7", | |
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", | |
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-core-module": { | |
+ "version": "2.15.1", | |
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", | |
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "hasown": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-data-view": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", | |
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "get-intrinsic": "^1.2.6", | |
+ "is-typed-array": "^1.1.13" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-date-object": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", | |
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "has-tostringtag": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-decimal": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", | |
+ "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/is-extglob": { | |
+ "version": "2.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | |
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/is-finalizationregistry": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", | |
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-fullwidth-code-point": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", | |
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/is-generator-fn": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", | |
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/is-generator-function": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", | |
+ "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "get-proto": "^1.0.0", | |
+ "has-tostringtag": "^1.0.2", | |
+ "safe-regex-test": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-glob": { | |
+ "version": "4.0.3", | |
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", | |
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-extglob": "^2.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/is-hexadecimal": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", | |
+ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/is-map": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", | |
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-number": { | |
+ "version": "7.0.0", | |
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", | |
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.12.0" | |
+ } | |
+ }, | |
+ "node_modules/is-number-object": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", | |
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "has-tostringtag": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-plain-obj": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", | |
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/is-reference": { | |
+ "version": "3.0.2", | |
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", | |
+ "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@types/estree": "*" | |
+ } | |
+ }, | |
+ "node_modules/is-regex": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", | |
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "gopd": "^1.2.0", | |
+ "has-tostringtag": "^1.0.2", | |
+ "hasown": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-set": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", | |
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-shared-array-buffer": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", | |
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-stream": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", | |
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/is-string": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", | |
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "has-tostringtag": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-symbol": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", | |
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "has-symbols": "^1.1.0", | |
+ "safe-regex-test": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-typed-array": { | |
+ "version": "1.1.15", | |
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", | |
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "which-typed-array": "^1.1.16" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-weakmap": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", | |
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-weakref": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", | |
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/is-weakset": { | |
+ "version": "2.0.4", | |
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", | |
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "get-intrinsic": "^1.2.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/isarray": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | |
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/isexe": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", | |
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/istanbul-lib-coverage": { | |
+ "version": "3.2.2", | |
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", | |
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/istanbul-lib-instrument": { | |
+ "version": "6.0.3", | |
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", | |
+ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@babel/core": "^7.23.9", | |
+ "@babel/parser": "^7.23.9", | |
+ "@istanbuljs/schema": "^0.1.3", | |
+ "istanbul-lib-coverage": "^3.2.0", | |
+ "semver": "^7.5.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/istanbul-lib-instrument/node_modules/semver": { | |
+ "version": "7.6.3", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | |
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/istanbul-lib-report": { | |
+ "version": "3.0.1", | |
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", | |
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "istanbul-lib-coverage": "^3.0.0", | |
+ "make-dir": "^4.0.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/istanbul-lib-source-maps": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", | |
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "debug": "^4.1.1", | |
+ "istanbul-lib-coverage": "^3.0.0", | |
+ "source-map": "^0.6.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/istanbul-reports": { | |
+ "version": "3.1.7", | |
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", | |
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "html-escaper": "^2.0.0", | |
+ "istanbul-lib-report": "^3.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/istanbul-reports/node_modules/html-escaper": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", | |
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/iterator.prototype": { | |
+ "version": "1.1.5", | |
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", | |
+ "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-data-property": "^1.1.4", | |
+ "es-object-atoms": "^1.0.0", | |
+ "get-intrinsic": "^1.2.6", | |
+ "get-proto": "^1.0.0", | |
+ "has-symbols": "^1.1.0", | |
+ "set-function-name": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/jackspeak": { | |
+ "version": "3.4.3", | |
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", | |
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", | |
+ "dev": true, | |
+ "license": "BlueOak-1.0.0", | |
+ "dependencies": { | |
+ "@isaacs/cliui": "^8.0.2" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ }, | |
+ "optionalDependencies": { | |
+ "@pkgjs/parseargs": "^0.11.0" | |
+ } | |
+ }, | |
+ "node_modules/jake": { | |
+ "version": "10.9.2", | |
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", | |
+ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "async": "^3.2.3", | |
+ "chalk": "^4.0.2", | |
+ "filelist": "^1.0.4", | |
+ "minimatch": "^3.1.2" | |
+ }, | |
+ "bin": { | |
+ "jake": "bin/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/jake/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", | |
+ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/core": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "import-local": "^3.0.2", | |
+ "jest-cli": "^29.7.0" | |
+ }, | |
+ "bin": { | |
+ "jest": "bin/jest.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "node-notifier": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/jest-changed-files": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", | |
+ "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "execa": "^5.0.0", | |
+ "jest-util": "^29.7.0", | |
+ "p-limit": "^3.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-changed-files/node_modules/p-limit": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", | |
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "yocto-queue": "^0.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-changed-files/node_modules/yocto-queue": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", | |
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-circus": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", | |
+ "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/environment": "^29.7.0", | |
+ "@jest/expect": "^29.7.0", | |
+ "@jest/test-result": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "chalk": "^4.0.0", | |
+ "co": "^4.6.0", | |
+ "dedent": "^1.0.0", | |
+ "is-generator-fn": "^2.0.0", | |
+ "jest-each": "^29.7.0", | |
+ "jest-matcher-utils": "^29.7.0", | |
+ "jest-message-util": "^29.7.0", | |
+ "jest-runtime": "^29.7.0", | |
+ "jest-snapshot": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "p-limit": "^3.1.0", | |
+ "pretty-format": "^29.7.0", | |
+ "pure-rand": "^6.0.0", | |
+ "slash": "^3.0.0", | |
+ "stack-utils": "^2.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-circus/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-circus/node_modules/p-limit": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", | |
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "yocto-queue": "^0.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-circus/node_modules/yocto-queue": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", | |
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-cli": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", | |
+ "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/core": "^29.7.0", | |
+ "@jest/test-result": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "chalk": "^4.0.0", | |
+ "create-jest": "^29.7.0", | |
+ "exit": "^0.1.2", | |
+ "import-local": "^3.0.2", | |
+ "jest-config": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "jest-validate": "^29.7.0", | |
+ "yargs": "^17.3.1" | |
+ }, | |
+ "bin": { | |
+ "jest": "bin/jest.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "node-notifier": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/jest-cli/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-config": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", | |
+ "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@babel/core": "^7.11.6", | |
+ "@jest/test-sequencer": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "babel-jest": "^29.7.0", | |
+ "chalk": "^4.0.0", | |
+ "ci-info": "^3.2.0", | |
+ "deepmerge": "^4.2.2", | |
+ "glob": "^7.1.3", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-circus": "^29.7.0", | |
+ "jest-environment-node": "^29.7.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "jest-regex-util": "^29.6.3", | |
+ "jest-resolve": "^29.7.0", | |
+ "jest-runner": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "jest-validate": "^29.7.0", | |
+ "micromatch": "^4.0.4", | |
+ "parse-json": "^5.2.0", | |
+ "pretty-format": "^29.7.0", | |
+ "slash": "^3.0.0", | |
+ "strip-json-comments": "^3.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/node": "*", | |
+ "ts-node": ">=9.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/node": { | |
+ "optional": true | |
+ }, | |
+ "ts-node": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/jest-config/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-diff": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", | |
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "chalk": "^4.0.0", | |
+ "diff-sequences": "^29.6.3", | |
+ "jest-get-type": "^29.6.3", | |
+ "pretty-format": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-diff/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-docblock": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", | |
+ "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "detect-newline": "^3.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-each": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", | |
+ "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "chalk": "^4.0.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "jest-util": "^29.7.0", | |
+ "pretty-format": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-each/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-environment-node": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", | |
+ "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/environment": "^29.7.0", | |
+ "@jest/fake-timers": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "jest-mock": "^29.7.0", | |
+ "jest-util": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-get-type": { | |
+ "version": "29.6.3", | |
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", | |
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-haste-map": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", | |
+ "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "@types/graceful-fs": "^4.1.3", | |
+ "@types/node": "*", | |
+ "anymatch": "^3.0.3", | |
+ "fb-watchman": "^2.0.0", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-regex-util": "^29.6.3", | |
+ "jest-util": "^29.7.0", | |
+ "jest-worker": "^29.7.0", | |
+ "micromatch": "^4.0.4", | |
+ "walker": "^1.0.8" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ }, | |
+ "optionalDependencies": { | |
+ "fsevents": "^2.3.2" | |
+ } | |
+ }, | |
+ "node_modules/jest-leak-detector": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", | |
+ "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "jest-get-type": "^29.6.3", | |
+ "pretty-format": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-matcher-utils": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", | |
+ "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "chalk": "^4.0.0", | |
+ "jest-diff": "^29.7.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "pretty-format": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-matcher-utils/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-message-util": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", | |
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@babel/code-frame": "^7.12.13", | |
+ "@jest/types": "^29.6.3", | |
+ "@types/stack-utils": "^2.0.0", | |
+ "chalk": "^4.0.0", | |
+ "graceful-fs": "^4.2.9", | |
+ "micromatch": "^4.0.4", | |
+ "pretty-format": "^29.7.0", | |
+ "slash": "^3.0.0", | |
+ "stack-utils": "^2.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-message-util/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-mock": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", | |
+ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "jest-util": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-pnp-resolver": { | |
+ "version": "1.2.3", | |
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", | |
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ }, | |
+ "peerDependencies": { | |
+ "jest-resolve": "*" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "jest-resolve": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/jest-regex-util": { | |
+ "version": "29.6.3", | |
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", | |
+ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-resolve": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", | |
+ "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "chalk": "^4.0.0", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-haste-map": "^29.7.0", | |
+ "jest-pnp-resolver": "^1.2.2", | |
+ "jest-util": "^29.7.0", | |
+ "jest-validate": "^29.7.0", | |
+ "resolve": "^1.20.0", | |
+ "resolve.exports": "^2.0.0", | |
+ "slash": "^3.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-resolve-dependencies": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", | |
+ "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "jest-regex-util": "^29.6.3", | |
+ "jest-snapshot": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-resolve/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-runner": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", | |
+ "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/console": "^29.7.0", | |
+ "@jest/environment": "^29.7.0", | |
+ "@jest/test-result": "^29.7.0", | |
+ "@jest/transform": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "chalk": "^4.0.0", | |
+ "emittery": "^0.13.1", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-docblock": "^29.7.0", | |
+ "jest-environment-node": "^29.7.0", | |
+ "jest-haste-map": "^29.7.0", | |
+ "jest-leak-detector": "^29.7.0", | |
+ "jest-message-util": "^29.7.0", | |
+ "jest-resolve": "^29.7.0", | |
+ "jest-runtime": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "jest-watcher": "^29.7.0", | |
+ "jest-worker": "^29.7.0", | |
+ "p-limit": "^3.1.0", | |
+ "source-map-support": "0.5.13" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-runner/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-runner/node_modules/p-limit": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", | |
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "yocto-queue": "^0.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-runner/node_modules/yocto-queue": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", | |
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-runtime": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", | |
+ "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/environment": "^29.7.0", | |
+ "@jest/fake-timers": "^29.7.0", | |
+ "@jest/globals": "^29.7.0", | |
+ "@jest/source-map": "^29.6.3", | |
+ "@jest/test-result": "^29.7.0", | |
+ "@jest/transform": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "chalk": "^4.0.0", | |
+ "cjs-module-lexer": "^1.0.0", | |
+ "collect-v8-coverage": "^1.0.0", | |
+ "glob": "^7.1.3", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-haste-map": "^29.7.0", | |
+ "jest-message-util": "^29.7.0", | |
+ "jest-mock": "^29.7.0", | |
+ "jest-regex-util": "^29.6.3", | |
+ "jest-resolve": "^29.7.0", | |
+ "jest-snapshot": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "slash": "^3.0.0", | |
+ "strip-bom": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-runtime/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-snapshot": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", | |
+ "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@babel/core": "^7.11.6", | |
+ "@babel/generator": "^7.7.2", | |
+ "@babel/plugin-syntax-jsx": "^7.7.2", | |
+ "@babel/plugin-syntax-typescript": "^7.7.2", | |
+ "@babel/types": "^7.3.3", | |
+ "@jest/expect-utils": "^29.7.0", | |
+ "@jest/transform": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "babel-preset-current-node-syntax": "^1.0.0", | |
+ "chalk": "^4.0.0", | |
+ "expect": "^29.7.0", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-diff": "^29.7.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "jest-matcher-utils": "^29.7.0", | |
+ "jest-message-util": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "natural-compare": "^1.4.0", | |
+ "pretty-format": "^29.7.0", | |
+ "semver": "^7.5.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-snapshot/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-snapshot/node_modules/semver": { | |
+ "version": "7.6.3", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | |
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/jest-util": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", | |
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "chalk": "^4.0.0", | |
+ "ci-info": "^3.2.0", | |
+ "graceful-fs": "^4.2.9", | |
+ "picomatch": "^2.2.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-util/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-validate": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", | |
+ "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "camelcase": "^6.2.0", | |
+ "chalk": "^4.0.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "leven": "^3.1.0", | |
+ "pretty-format": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-validate/node_modules/camelcase": { | |
+ "version": "6.3.0", | |
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", | |
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/jest-validate/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-watcher": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", | |
+ "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/test-result": "^29.7.0", | |
+ "@jest/types": "^29.6.3", | |
+ "@types/node": "*", | |
+ "ansi-escapes": "^4.2.1", | |
+ "chalk": "^4.0.0", | |
+ "emittery": "^0.13.1", | |
+ "jest-util": "^29.7.0", | |
+ "string-length": "^4.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-watcher/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jest-worker": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", | |
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@types/node": "*", | |
+ "jest-util": "^29.7.0", | |
+ "merge-stream": "^2.0.0", | |
+ "supports-color": "^8.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jest-worker/node_modules/supports-color": { | |
+ "version": "8.1.1", | |
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", | |
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "has-flag": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/supports-color?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/jiti": { | |
+ "version": "1.21.6", | |
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", | |
+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "bin": { | |
+ "jiti": "bin/jiti.js" | |
+ } | |
+ }, | |
+ "node_modules/jose": { | |
+ "version": "5.9.6", | |
+ "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", | |
+ "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/panva" | |
+ } | |
+ }, | |
+ "node_modules/jotai": { | |
+ "version": "2.8.0", | |
+ "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.8.0.tgz", | |
+ "integrity": "sha512-yZNMC36FdLOksOr8qga0yLf14miCJlEThlp5DeFJNnqzm2+ZG7wLcJzoOyij5K6U6Xlc5ljQqPDlJRgqW0Y18g==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12.20.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": ">=17.0.0", | |
+ "react": ">=17.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ }, | |
+ "react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/js-tokens": { | |
+ "version": "9.0.1", | |
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", | |
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/js-yaml": { | |
+ "version": "3.14.1", | |
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", | |
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "argparse": "^1.0.7", | |
+ "esprima": "^4.0.0" | |
+ }, | |
+ "bin": { | |
+ "js-yaml": "bin/js-yaml.js" | |
+ } | |
+ }, | |
+ "node_modules/jsesc": { | |
+ "version": "3.0.2", | |
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", | |
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "bin": { | |
+ "jsesc": "bin/jsesc" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/json-bigint": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", | |
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "bignumber.js": "^9.0.0" | |
+ } | |
+ }, | |
+ "node_modules/json-buffer": { | |
+ "version": "3.0.1", | |
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", | |
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/json-parse-even-better-errors": { | |
+ "version": "2.3.1", | |
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", | |
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/json-schema": { | |
+ "version": "0.4.0", | |
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", | |
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", | |
+ "license": "(AFL-2.1 OR BSD-3-Clause)" | |
+ }, | |
+ "node_modules/json-schema-traverse": { | |
+ "version": "0.4.1", | |
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", | |
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/json-stable-stringify-without-jsonify": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", | |
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/json5": { | |
+ "version": "2.2.3", | |
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", | |
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "bin": { | |
+ "json5": "lib/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/jsondiffpatch": { | |
+ "version": "0.6.0", | |
+ "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", | |
+ "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/diff-match-patch": "^1.0.36", | |
+ "chalk": "^5.3.0", | |
+ "diff-match-patch": "^1.0.5" | |
+ }, | |
+ "bin": { | |
+ "jsondiffpatch": "bin/jsondiffpatch.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.0.0 || >=20.0.0" | |
+ } | |
+ }, | |
+ "node_modules/jsonwebtoken": { | |
+ "version": "9.0.2", | |
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", | |
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "jws": "^3.2.2", | |
+ "lodash.includes": "^4.3.0", | |
+ "lodash.isboolean": "^3.0.3", | |
+ "lodash.isinteger": "^4.0.4", | |
+ "lodash.isnumber": "^3.0.3", | |
+ "lodash.isplainobject": "^4.0.6", | |
+ "lodash.isstring": "^4.0.1", | |
+ "lodash.once": "^4.0.0", | |
+ "ms": "^2.1.1", | |
+ "semver": "^7.5.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12", | |
+ "npm": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/jsonwebtoken/node_modules/jwa": { | |
+ "version": "1.4.1", | |
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", | |
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "buffer-equal-constant-time": "1.0.1", | |
+ "ecdsa-sig-formatter": "1.0.11", | |
+ "safe-buffer": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/jsonwebtoken/node_modules/jws": { | |
+ "version": "3.2.2", | |
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", | |
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "jwa": "^1.4.1", | |
+ "safe-buffer": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/jsonwebtoken/node_modules/semver": { | |
+ "version": "7.6.3", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | |
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | |
+ "license": "ISC", | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/jsx-ast-utils": { | |
+ "version": "3.3.5", | |
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", | |
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "array-includes": "^3.1.6", | |
+ "array.prototype.flat": "^1.3.1", | |
+ "object.assign": "^4.1.4", | |
+ "object.values": "^1.1.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ } | |
+ }, | |
+ "node_modules/jszip": { | |
+ "version": "3.10.1", | |
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", | |
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", | |
+ "license": "(MIT OR GPL-3.0-or-later)", | |
+ "dependencies": { | |
+ "lie": "~3.3.0", | |
+ "pako": "~1.0.2", | |
+ "readable-stream": "~2.3.6", | |
+ "setimmediate": "^1.0.5" | |
+ } | |
+ }, | |
+ "node_modules/jwa": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", | |
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "buffer-equal-constant-time": "1.0.1", | |
+ "ecdsa-sig-formatter": "1.0.11", | |
+ "safe-buffer": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/jws": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", | |
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "jwa": "^2.0.0", | |
+ "safe-buffer": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/katex": { | |
+ "version": "0.16.11", | |
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", | |
+ "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", | |
+ "funding": [ | |
+ "https://opencollective.com/katex", | |
+ "https://github.com/sponsors/katex" | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "commander": "^8.3.0" | |
+ }, | |
+ "bin": { | |
+ "katex": "cli.js" | |
+ } | |
+ }, | |
+ "node_modules/keyv": { | |
+ "version": "4.5.4", | |
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", | |
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "json-buffer": "3.0.1" | |
+ } | |
+ }, | |
+ "node_modules/kleur": { | |
+ "version": "3.0.3", | |
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", | |
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/language-subtag-registry": { | |
+ "version": "0.3.23", | |
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", | |
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", | |
+ "dev": true, | |
+ "license": "CC0-1.0" | |
+ }, | |
+ "node_modules/language-tags": { | |
+ "version": "1.0.9", | |
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", | |
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "language-subtag-registry": "^0.3.20" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10" | |
+ } | |
+ }, | |
+ "node_modules/leac": { | |
+ "version": "0.6.0", | |
+ "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", | |
+ "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://ko-fi.com/killymxi" | |
+ } | |
+ }, | |
+ "node_modules/leven": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", | |
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/levn": { | |
+ "version": "0.4.1", | |
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", | |
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "prelude-ls": "^1.2.1", | |
+ "type-check": "~0.4.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/lie": { | |
+ "version": "3.3.0", | |
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", | |
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "immediate": "~3.0.5" | |
+ } | |
+ }, | |
+ "node_modules/lilconfig": { | |
+ "version": "3.1.3", | |
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", | |
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=14" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/antonk52" | |
+ } | |
+ }, | |
+ "node_modules/lines-and-columns": { | |
+ "version": "1.2.4", | |
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", | |
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/linkify-it": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", | |
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "uc.micro": "^2.0.0" | |
+ } | |
+ }, | |
+ "node_modules/locate-character": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", | |
+ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/locate-path": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", | |
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "p-locate": "^4.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/lodash": { | |
+ "version": "4.17.21", | |
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | |
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.castarray": { | |
+ "version": "4.4.0", | |
+ "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", | |
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.includes": { | |
+ "version": "4.3.0", | |
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", | |
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.isboolean": { | |
+ "version": "3.0.3", | |
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", | |
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.isinteger": { | |
+ "version": "4.0.4", | |
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", | |
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.isnumber": { | |
+ "version": "3.0.3", | |
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", | |
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.isplainobject": { | |
+ "version": "4.0.6", | |
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", | |
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.isstring": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", | |
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.memoize": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", | |
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.merge": { | |
+ "version": "4.6.2", | |
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", | |
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lodash.once": { | |
+ "version": "4.1.1", | |
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", | |
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/longest-streak": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", | |
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/loose-envify": { | |
+ "version": "1.4.0", | |
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", | |
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "js-tokens": "^3.0.0 || ^4.0.0" | |
+ }, | |
+ "bin": { | |
+ "loose-envify": "cli.js" | |
+ } | |
+ }, | |
+ "node_modules/loose-envify/node_modules/js-tokens": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", | |
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/lowlight": { | |
+ "version": "1.20.0", | |
+ "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", | |
+ "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "fault": "^1.0.0", | |
+ "highlight.js": "~10.7.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/lru-cache": { | |
+ "version": "5.1.1", | |
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", | |
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "yallist": "^3.0.2" | |
+ } | |
+ }, | |
+ "node_modules/lucide-react": { | |
+ "version": "0.441.0", | |
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.441.0.tgz", | |
+ "integrity": "sha512-0vfExYtvSDhkC2lqg0zYVW1Uu9GsI4knuV9GP9by5z0Xhc4Zi5RejTxfz9LsjRmCyWVzHCJvxGKZWcRyvQCWVg==", | |
+ "license": "ISC", | |
+ "peerDependencies": { | |
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" | |
+ } | |
+ }, | |
+ "node_modules/lunr": { | |
+ "version": "2.3.9", | |
+ "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", | |
+ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/luxon": { | |
+ "version": "3.5.0", | |
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", | |
+ "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12" | |
+ } | |
+ }, | |
+ "node_modules/magic-string": { | |
+ "version": "0.30.12", | |
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", | |
+ "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jridgewell/sourcemap-codec": "^1.5.0" | |
+ } | |
+ }, | |
+ "node_modules/make-dir": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", | |
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "semver": "^7.5.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/make-dir/node_modules/semver": { | |
+ "version": "7.6.3", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | |
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/make-error": { | |
+ "version": "1.3.6", | |
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", | |
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/makeerror": { | |
+ "version": "1.0.12", | |
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", | |
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "tmpl": "1.0.5" | |
+ } | |
+ }, | |
+ "node_modules/markdown-it": { | |
+ "version": "14.1.0", | |
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", | |
+ "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", | |
+ "license": "MIT", | |
+ "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" | |
+ }, | |
+ "bin": { | |
+ "markdown-it": "bin/markdown-it.mjs" | |
+ } | |
+ }, | |
+ "node_modules/markdown-it/node_modules/argparse": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", | |
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", | |
+ "license": "Python-2.0" | |
+ }, | |
+ "node_modules/markdown-table": { | |
+ "version": "3.0.4", | |
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", | |
+ "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/math-intrinsics": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", | |
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-definitions": { | |
+ "version": "5.1.2", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", | |
+ "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "@types/unist": "^2.0.0", | |
+ "unist-util-visit": "^4.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-find-and-replace": { | |
+ "version": "2.2.2", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", | |
+ "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "escape-string-regexp": "^5.0.0", | |
+ "unist-util-is": "^5.0.0", | |
+ "unist-util-visit-parents": "^5.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-from-markdown": { | |
+ "version": "1.3.1", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", | |
+ "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "@types/unist": "^2.0.0", | |
+ "decode-named-character-reference": "^1.0.0", | |
+ "mdast-util-to-string": "^3.1.0", | |
+ "micromark": "^3.0.0", | |
+ "micromark-util-decode-numeric-character-reference": "^1.0.0", | |
+ "micromark-util-decode-string": "^1.0.0", | |
+ "micromark-util-normalize-identifier": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "unist-util-stringify-position": "^3.0.0", | |
+ "uvu": "^0.5.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-gfm": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", | |
+ "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "mdast-util-from-markdown": "^1.0.0", | |
+ "mdast-util-gfm-autolink-literal": "^1.0.0", | |
+ "mdast-util-gfm-footnote": "^1.0.0", | |
+ "mdast-util-gfm-strikethrough": "^1.0.0", | |
+ "mdast-util-gfm-table": "^1.0.0", | |
+ "mdast-util-gfm-task-list-item": "^1.0.0", | |
+ "mdast-util-to-markdown": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-gfm-autolink-literal": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", | |
+ "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "ccount": "^2.0.0", | |
+ "mdast-util-find-and-replace": "^2.0.0", | |
+ "micromark-util-character": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-gfm-footnote": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", | |
+ "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-to-markdown": "^1.3.0", | |
+ "micromark-util-normalize-identifier": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-gfm-strikethrough": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", | |
+ "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-to-markdown": "^1.3.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-gfm-table": { | |
+ "version": "1.0.7", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", | |
+ "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "markdown-table": "^3.0.0", | |
+ "mdast-util-from-markdown": "^1.0.0", | |
+ "mdast-util-to-markdown": "^1.3.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-gfm-task-list-item": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", | |
+ "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-to-markdown": "^1.3.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-math": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-2.0.2.tgz", | |
+ "integrity": "sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "longest-streak": "^3.0.0", | |
+ "mdast-util-to-markdown": "^1.3.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-phrasing": { | |
+ "version": "3.0.1", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", | |
+ "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "unist-util-is": "^5.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-to-hast": { | |
+ "version": "12.3.0", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", | |
+ "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/hast": "^2.0.0", | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-definitions": "^5.0.0", | |
+ "micromark-util-sanitize-uri": "^1.1.0", | |
+ "trim-lines": "^3.0.0", | |
+ "unist-util-generated": "^2.0.0", | |
+ "unist-util-position": "^4.0.0", | |
+ "unist-util-visit": "^4.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-to-markdown": { | |
+ "version": "1.5.0", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", | |
+ "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "@types/unist": "^2.0.0", | |
+ "longest-streak": "^3.0.0", | |
+ "mdast-util-phrasing": "^3.0.0", | |
+ "mdast-util-to-string": "^3.0.0", | |
+ "micromark-util-decode-string": "^1.0.0", | |
+ "unist-util-visit": "^4.0.0", | |
+ "zwitch": "^2.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdast-util-to-string": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", | |
+ "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/mdurl": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", | |
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/merge-stream": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", | |
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/merge2": { | |
+ "version": "1.4.1", | |
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", | |
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 8" | |
+ } | |
+ }, | |
+ "node_modules/micromark": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", | |
+ "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/debug": "^4.0.0", | |
+ "debug": "^4.0.0", | |
+ "decode-named-character-reference": "^1.0.0", | |
+ "micromark-core-commonmark": "^1.0.1", | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-chunked": "^1.0.0", | |
+ "micromark-util-combine-extensions": "^1.0.0", | |
+ "micromark-util-decode-numeric-character-reference": "^1.0.0", | |
+ "micromark-util-encode": "^1.0.0", | |
+ "micromark-util-normalize-identifier": "^1.0.0", | |
+ "micromark-util-resolve-all": "^1.0.0", | |
+ "micromark-util-sanitize-uri": "^1.0.0", | |
+ "micromark-util-subtokenize": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.1", | |
+ "uvu": "^0.5.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-core-commonmark": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", | |
+ "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "decode-named-character-reference": "^1.0.0", | |
+ "micromark-factory-destination": "^1.0.0", | |
+ "micromark-factory-label": "^1.0.0", | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-factory-title": "^1.0.0", | |
+ "micromark-factory-whitespace": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-chunked": "^1.0.0", | |
+ "micromark-util-classify-character": "^1.0.0", | |
+ "micromark-util-html-tag-name": "^1.0.0", | |
+ "micromark-util-normalize-identifier": "^1.0.0", | |
+ "micromark-util-resolve-all": "^1.0.0", | |
+ "micromark-util-subtokenize": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.1", | |
+ "uvu": "^0.5.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz", | |
+ "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-extension-gfm-autolink-literal": "^1.0.0", | |
+ "micromark-extension-gfm-footnote": "^1.0.0", | |
+ "micromark-extension-gfm-strikethrough": "^1.0.0", | |
+ "micromark-extension-gfm-table": "^1.0.0", | |
+ "micromark-extension-gfm-tagfilter": "^1.0.0", | |
+ "micromark-extension-gfm-task-list-item": "^1.0.0", | |
+ "micromark-util-combine-extensions": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm-autolink-literal": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz", | |
+ "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-sanitize-uri": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm-footnote": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz", | |
+ "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-core-commonmark": "^1.0.0", | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-normalize-identifier": "^1.0.0", | |
+ "micromark-util-sanitize-uri": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm-strikethrough": { | |
+ "version": "1.0.7", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz", | |
+ "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-chunked": "^1.0.0", | |
+ "micromark-util-classify-character": "^1.0.0", | |
+ "micromark-util-resolve-all": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm-table": { | |
+ "version": "1.0.7", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", | |
+ "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm-tagfilter": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz", | |
+ "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-types": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-gfm-task-list-item": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz", | |
+ "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-extension-math": { | |
+ "version": "2.1.2", | |
+ "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-2.1.2.tgz", | |
+ "integrity": "sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/katex": "^0.16.0", | |
+ "katex": "^0.16.0", | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/micromark-factory-destination": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", | |
+ "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-factory-label": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", | |
+ "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-factory-space": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", | |
+ "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-factory-title": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", | |
+ "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-factory-whitespace": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", | |
+ "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-factory-space": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-character": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", | |
+ "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-chunked": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", | |
+ "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-symbol": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-classify-character": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", | |
+ "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-combine-extensions": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", | |
+ "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-chunked": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-decode-numeric-character-reference": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", | |
+ "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-symbol": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-decode-string": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", | |
+ "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "decode-named-character-reference": "^1.0.0", | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-decode-numeric-character-reference": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-encode": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", | |
+ "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/micromark-util-html-tag-name": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", | |
+ "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/micromark-util-normalize-identifier": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", | |
+ "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-symbol": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-resolve-all": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", | |
+ "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-types": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-sanitize-uri": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", | |
+ "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-character": "^1.0.0", | |
+ "micromark-util-encode": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-subtokenize": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", | |
+ "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "micromark-util-chunked": "^1.0.0", | |
+ "micromark-util-symbol": "^1.0.0", | |
+ "micromark-util-types": "^1.0.0", | |
+ "uvu": "^0.5.0" | |
+ } | |
+ }, | |
+ "node_modules/micromark-util-symbol": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", | |
+ "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/micromark-util-types": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", | |
+ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", | |
+ "funding": [ | |
+ { | |
+ "type": "GitHub Sponsors", | |
+ "url": "https://github.com/sponsors/unifiedjs" | |
+ }, | |
+ { | |
+ "type": "OpenCollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/micromatch": { | |
+ "version": "4.0.8", | |
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", | |
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "braces": "^3.0.3", | |
+ "picomatch": "^2.3.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8.6" | |
+ } | |
+ }, | |
+ "node_modules/mime-db": { | |
+ "version": "1.52.0", | |
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", | |
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.6" | |
+ } | |
+ }, | |
+ "node_modules/mime-types": { | |
+ "version": "2.1.35", | |
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", | |
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "mime-db": "1.52.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.6" | |
+ } | |
+ }, | |
+ "node_modules/mimic-fn": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", | |
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/mimic-response": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", | |
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/minimatch": { | |
+ "version": "3.1.2", | |
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", | |
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "brace-expansion": "^1.1.7" | |
+ }, | |
+ "engines": { | |
+ "node": "*" | |
+ } | |
+ }, | |
+ "node_modules/minimist": { | |
+ "version": "1.2.8", | |
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", | |
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/minipass": { | |
+ "version": "7.1.2", | |
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", | |
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "engines": { | |
+ "node": ">=16 || 14 >=14.17" | |
+ } | |
+ }, | |
+ "node_modules/mkdirp": { | |
+ "version": "0.5.6", | |
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", | |
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "minimist": "^1.2.6" | |
+ }, | |
+ "bin": { | |
+ "mkdirp": "bin/cmd.js" | |
+ } | |
+ }, | |
+ "node_modules/mkdirp-classic": { | |
+ "version": "0.5.3", | |
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", | |
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/motion-dom": { | |
+ "version": "11.18.1", | |
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", | |
+ "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "motion-utils": "^11.18.1" | |
+ } | |
+ }, | |
+ "node_modules/motion-utils": { | |
+ "version": "11.18.1", | |
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", | |
+ "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/mri": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", | |
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/ms": { | |
+ "version": "2.1.3", | |
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/mz": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", | |
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "any-promise": "^1.0.0", | |
+ "object-assign": "^4.0.1", | |
+ "thenify-all": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/nanoid": { | |
+ "version": "5.1.5", | |
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", | |
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "nanoid": "bin/nanoid.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^18 || >=20" | |
+ } | |
+ }, | |
+ "node_modules/napi-build-utils": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", | |
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/napi-postinstall": { | |
+ "version": "0.1.5", | |
+ "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.1.5.tgz", | |
+ "integrity": "sha512-HI5bHONOUYqV+FJvueOSgjRxHTLB25a3xIv59ugAxFe7xRNbW96hyYbMbsKzl+QvFV9mN/SrtHwiU+vYhMwA7Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "bin": { | |
+ "napi-postinstall": "lib/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/napi-postinstall" | |
+ } | |
+ }, | |
+ "node_modules/natural-compare": { | |
+ "version": "1.4.0", | |
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", | |
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/neo-async": { | |
+ "version": "2.6.2", | |
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", | |
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/neverthrow": { | |
+ "version": "7.2.0", | |
+ "resolved": "https://registry.npmjs.org/neverthrow/-/neverthrow-7.2.0.tgz", | |
+ "integrity": "sha512-iGBUfFB7yPczHHtA8dksKTJ9E8TESNTAx1UQWW6TzMF280vo9jdPYpLUXrMN1BCkPdHFdNG3fxOt2CUad8KhAw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18" | |
+ } | |
+ }, | |
+ "node_modules/next": { | |
+ "version": "14.2.28", | |
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.28.tgz", | |
+ "integrity": "sha512-QLEIP/kYXynIxtcKB6vNjtWLVs3Y4Sb+EClTC/CSVzdLD1gIuItccpu/n1lhmduffI32iPGEK2cLLxxt28qgYA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@next/env": "14.2.28", | |
+ "@swc/helpers": "0.5.5", | |
+ "busboy": "1.6.0", | |
+ "caniuse-lite": "^1.0.30001579", | |
+ "graceful-fs": "^4.2.11", | |
+ "postcss": "8.4.31", | |
+ "styled-jsx": "5.1.1" | |
+ }, | |
+ "bin": { | |
+ "next": "dist/bin/next" | |
+ }, | |
+ "engines": { | |
+ "node": ">=18.17.0" | |
+ }, | |
+ "optionalDependencies": { | |
+ "@next/swc-darwin-arm64": "14.2.28", | |
+ "@next/swc-darwin-x64": "14.2.28", | |
+ "@next/swc-linux-arm64-gnu": "14.2.28", | |
+ "@next/swc-linux-arm64-musl": "14.2.28", | |
+ "@next/swc-linux-x64-gnu": "14.2.28", | |
+ "@next/swc-linux-x64-musl": "14.2.28", | |
+ "@next/swc-win32-arm64-msvc": "14.2.28", | |
+ "@next/swc-win32-ia32-msvc": "14.2.28", | |
+ "@next/swc-win32-x64-msvc": "14.2.28" | |
+ }, | |
+ "peerDependencies": { | |
+ "@opentelemetry/api": "^1.1.0", | |
+ "@playwright/test": "^1.41.2", | |
+ "react": "^18.2.0", | |
+ "react-dom": "^18.2.0", | |
+ "sass": "^1.3.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@opentelemetry/api": { | |
+ "optional": true | |
+ }, | |
+ "@playwright/test": { | |
+ "optional": true | |
+ }, | |
+ "sass": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/next-themes": { | |
+ "version": "0.3.0", | |
+ "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", | |
+ "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "react": "^16.8 || ^17 || ^18", | |
+ "react-dom": "^16.8 || ^17 || ^18" | |
+ } | |
+ }, | |
+ "node_modules/next/node_modules/nanoid": { | |
+ "version": "3.3.7", | |
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", | |
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "nanoid": "bin/nanoid.cjs" | |
+ }, | |
+ "engines": { | |
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" | |
+ } | |
+ }, | |
+ "node_modules/next/node_modules/postcss": { | |
+ "version": "8.4.31", | |
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", | |
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/postcss/" | |
+ }, | |
+ { | |
+ "type": "tidelift", | |
+ "url": "https://tidelift.com/funding/github/npm/postcss" | |
+ }, | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "nanoid": "^3.3.6", | |
+ "picocolors": "^1.0.0", | |
+ "source-map-js": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": "^10 || ^12 || >=14" | |
+ } | |
+ }, | |
+ "node_modules/node-abi": { | |
+ "version": "3.74.0", | |
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", | |
+ "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "semver": "^7.3.5" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/node-abi/node_modules/semver": { | |
+ "version": "7.7.1", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", | |
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", | |
+ "license": "ISC", | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/node-addon-api": { | |
+ "version": "7.1.1", | |
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", | |
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/node-domexception": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", | |
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/jimmywarting" | |
+ }, | |
+ { | |
+ "type": "github", | |
+ "url": "https://paypal.me/jimmywarting" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10.5.0" | |
+ } | |
+ }, | |
+ "node_modules/node-fetch": { | |
+ "version": "3.3.2", | |
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", | |
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "data-uri-to-buffer": "^4.0.0", | |
+ "fetch-blob": "^3.1.4", | |
+ "formdata-polyfill": "^4.0.10" | |
+ }, | |
+ "engines": { | |
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/node-fetch" | |
+ } | |
+ }, | |
+ "node_modules/node-int64": { | |
+ "version": "0.4.0", | |
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", | |
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/node-microphone": { | |
+ "version": "0.1.6", | |
+ "resolved": "https://registry.npmjs.org/node-microphone/-/node-microphone-0.1.6.tgz", | |
+ "integrity": "sha512-5229wtpVYNU2gR8zpkABVSdp4wT9qagJgj6pELEIkAVbOXFmaCM35qN3z4ylu3OwFfEKqQ4h9u8Lb58DzaBieQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ } | |
+ }, | |
+ "node_modules/node-releases": { | |
+ "version": "2.0.19", | |
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", | |
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/normalize-path": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", | |
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/normalize-range": { | |
+ "version": "0.1.2", | |
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", | |
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/npm-run-path": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", | |
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "path-key": "^3.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/object-assign": { | |
+ "version": "4.1.1", | |
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | |
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/object-hash": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", | |
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/object-inspect": { | |
+ "version": "1.13.3", | |
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", | |
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/object-keys": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", | |
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/object.assign": { | |
+ "version": "4.1.7", | |
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", | |
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "es-object-atoms": "^1.0.0", | |
+ "has-symbols": "^1.1.0", | |
+ "object-keys": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/object.entries": { | |
+ "version": "1.1.9", | |
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", | |
+ "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.4", | |
+ "define-properties": "^1.2.1", | |
+ "es-object-atoms": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/object.fromentries": { | |
+ "version": "2.0.8", | |
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", | |
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.7", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.2", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/object.groupby": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", | |
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.7", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/object.values": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", | |
+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/once": { | |
+ "version": "1.4.0", | |
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | |
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "wrappy": "1" | |
+ } | |
+ }, | |
+ "node_modules/onetime": { | |
+ "version": "5.1.2", | |
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", | |
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "mimic-fn": "^2.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/openai": { | |
+ "version": "4.96.0", | |
+ "resolved": "https://registry.npmjs.org/openai/-/openai-4.96.0.tgz", | |
+ "integrity": "sha512-dKoW56i02Prv2XQolJ9Rl9Svqubqkzg3QpwEOBuSVZLk05Shelu7s+ErRTwFc1Bs3JZ2qBqBfVpXQiJhwOGG8A==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "@types/node": "^18.11.18", | |
+ "@types/node-fetch": "^2.6.4", | |
+ "abort-controller": "^3.0.0", | |
+ "agentkeepalive": "^4.2.1", | |
+ "form-data-encoder": "1.7.2", | |
+ "formdata-node": "^4.3.2", | |
+ "node-fetch": "^2.6.7" | |
+ }, | |
+ "bin": { | |
+ "openai": "bin/cli" | |
+ }, | |
+ "peerDependencies": { | |
+ "ws": "^8.18.0", | |
+ "zod": "^3.23.8" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "ws": { | |
+ "optional": true | |
+ }, | |
+ "zod": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/openai/node_modules/@types/node": { | |
+ "version": "18.19.64", | |
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.64.tgz", | |
+ "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "undici-types": "~5.26.4" | |
+ } | |
+ }, | |
+ "node_modules/openai/node_modules/node-fetch": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | |
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "whatwg-url": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "4.x || >=6.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "encoding": "^0.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "encoding": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/openai/node_modules/undici-types": { | |
+ "version": "5.26.5", | |
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", | |
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/optionator": { | |
+ "version": "0.9.4", | |
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", | |
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "deep-is": "^0.1.3", | |
+ "fast-levenshtein": "^2.0.6", | |
+ "levn": "^0.4.1", | |
+ "prelude-ls": "^1.2.1", | |
+ "type-check": "^0.4.0", | |
+ "word-wrap": "^1.2.5" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/own-keys": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", | |
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "get-intrinsic": "^1.2.6", | |
+ "object-keys": "^1.1.1", | |
+ "safe-push-apply": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/p-limit": { | |
+ "version": "6.2.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", | |
+ "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "yocto-queue": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/p-locate": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", | |
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "p-limit": "^2.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/p-locate/node_modules/p-limit": { | |
+ "version": "2.3.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", | |
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "p-try": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/p-try": { | |
+ "version": "2.2.0", | |
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", | |
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/package-json-from-dist": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", | |
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", | |
+ "dev": true, | |
+ "license": "BlueOak-1.0.0" | |
+ }, | |
+ "node_modules/pako": { | |
+ "version": "1.0.11", | |
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", | |
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", | |
+ "license": "(MIT AND Zlib)" | |
+ }, | |
+ "node_modules/papaparse": { | |
+ "version": "5.5.2", | |
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.2.tgz", | |
+ "integrity": "sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/parent-module": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", | |
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "callsites": "^3.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/parse-entities": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", | |
+ "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "character-entities": "^1.0.0", | |
+ "character-entities-legacy": "^1.0.0", | |
+ "character-reference-invalid": "^1.0.0", | |
+ "is-alphanumerical": "^1.0.0", | |
+ "is-decimal": "^1.0.0", | |
+ "is-hexadecimal": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/parse-json": { | |
+ "version": "5.2.0", | |
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", | |
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@babel/code-frame": "^7.0.0", | |
+ "error-ex": "^1.3.1", | |
+ "json-parse-even-better-errors": "^2.3.0", | |
+ "lines-and-columns": "^1.1.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/parseley": { | |
+ "version": "0.12.1", | |
+ "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz", | |
+ "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "leac": "^0.6.0", | |
+ "peberminta": "^0.9.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://ko-fi.com/killymxi" | |
+ } | |
+ }, | |
+ "node_modules/path-exists": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", | |
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/path-is-absolute": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | |
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/path-key": { | |
+ "version": "3.1.1", | |
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | |
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/path-parse": { | |
+ "version": "1.0.7", | |
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", | |
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/path-scurry": { | |
+ "version": "1.11.1", | |
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", | |
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", | |
+ "dev": true, | |
+ "license": "BlueOak-1.0.0", | |
+ "dependencies": { | |
+ "lru-cache": "^10.2.0", | |
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16 || 14 >=14.18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/path-scurry/node_modules/lru-cache": { | |
+ "version": "10.4.3", | |
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", | |
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/peberminta": { | |
+ "version": "0.9.0", | |
+ "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz", | |
+ "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://ko-fi.com/killymxi" | |
+ } | |
+ }, | |
+ "node_modules/picocolors": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", | |
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/picomatch": { | |
+ "version": "2.3.1", | |
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | |
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8.6" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/jonschlinkert" | |
+ } | |
+ }, | |
+ "node_modules/pify": { | |
+ "version": "2.3.0", | |
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", | |
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/pinia": { | |
+ "version": "2.3.1", | |
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", | |
+ "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@vue/devtools-api": "^6.6.3", | |
+ "vue-demi": "^0.14.10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/posva" | |
+ }, | |
+ "peerDependencies": { | |
+ "typescript": ">=4.4.4", | |
+ "vue": "^2.7.0 || ^3.5.11" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "typescript": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/pinia/node_modules/vue-demi": { | |
+ "version": "0.14.10", | |
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", | |
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", | |
+ "hasInstallScript": true, | |
+ "license": "MIT", | |
+ "bin": { | |
+ "vue-demi-fix": "bin/vue-demi-fix.js", | |
+ "vue-demi-switch": "bin/vue-demi-switch.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/antfu" | |
+ }, | |
+ "peerDependencies": { | |
+ "@vue/composition-api": "^1.0.0-rc.1", | |
+ "vue": "^3.0.0-0 || ^2.6.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@vue/composition-api": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/pirates": { | |
+ "version": "4.0.6", | |
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", | |
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/pkg-dir": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", | |
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "find-up": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/plotly": { | |
+ "version": "1.0.6", | |
+ "resolved": "https://registry.npmjs.org/plotly/-/plotly-1.0.6.tgz", | |
+ "integrity": "sha512-9DoPWfLJWxqXg6omu1Oj7qkvyOce0Nv+X+2SOoI9lG9mbvA7S/qGVHypwrGMV3r53ruW1Fl1A9a7ZIPt22FrpA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "mkdirp": "~0.5.0" | |
+ } | |
+ }, | |
+ "node_modules/possible-typed-array-names": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", | |
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/postcss": { | |
+ "version": "8.5.3", | |
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", | |
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", | |
+ "funding": [ | |
+ { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/postcss/" | |
+ }, | |
+ { | |
+ "type": "tidelift", | |
+ "url": "https://tidelift.com/funding/github/npm/postcss" | |
+ }, | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "nanoid": "^3.3.8", | |
+ "picocolors": "^1.1.1", | |
+ "source-map-js": "^1.2.1" | |
+ }, | |
+ "engines": { | |
+ "node": "^10 || ^12 || >=14" | |
+ } | |
+ }, | |
+ "node_modules/postcss-import": { | |
+ "version": "15.1.0", | |
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", | |
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "postcss-value-parser": "^4.0.0", | |
+ "read-cache": "^1.0.0", | |
+ "resolve": "^1.1.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "postcss": "^8.0.0" | |
+ } | |
+ }, | |
+ "node_modules/postcss-js": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", | |
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "camelcase-css": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": "^12 || ^14 || >= 16" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/postcss/" | |
+ }, | |
+ "peerDependencies": { | |
+ "postcss": "^8.4.21" | |
+ } | |
+ }, | |
+ "node_modules/postcss-load-config": { | |
+ "version": "4.0.2", | |
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", | |
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", | |
+ "dev": true, | |
+ "funding": [ | |
+ { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/postcss/" | |
+ }, | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "lilconfig": "^3.0.0", | |
+ "yaml": "^2.3.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 14" | |
+ }, | |
+ "peerDependencies": { | |
+ "postcss": ">=8.0.9", | |
+ "ts-node": ">=9.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "postcss": { | |
+ "optional": true | |
+ }, | |
+ "ts-node": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/postcss-nested": { | |
+ "version": "6.2.0", | |
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", | |
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", | |
+ "dev": true, | |
+ "funding": [ | |
+ { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/postcss/" | |
+ }, | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "postcss-selector-parser": "^6.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "postcss": "^8.2.14" | |
+ } | |
+ }, | |
+ "node_modules/postcss-nested/node_modules/postcss-selector-parser": { | |
+ "version": "6.1.2", | |
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", | |
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "cssesc": "^3.0.0", | |
+ "util-deprecate": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/postcss-selector-parser": { | |
+ "version": "6.0.10", | |
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", | |
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "cssesc": "^3.0.0", | |
+ "util-deprecate": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/postcss-value-parser": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", | |
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/postcss/node_modules/nanoid": { | |
+ "version": "3.3.11", | |
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", | |
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "nanoid": "bin/nanoid.cjs" | |
+ }, | |
+ "engines": { | |
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" | |
+ } | |
+ }, | |
+ "node_modules/prebuild-install": { | |
+ "version": "7.1.3", | |
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", | |
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "detect-libc": "^2.0.0", | |
+ "expand-template": "^2.0.3", | |
+ "github-from-package": "0.0.0", | |
+ "minimist": "^1.2.3", | |
+ "mkdirp-classic": "^0.5.3", | |
+ "napi-build-utils": "^2.0.0", | |
+ "node-abi": "^3.3.0", | |
+ "pump": "^3.0.0", | |
+ "rc": "^1.2.7", | |
+ "simple-get": "^4.0.0", | |
+ "tar-fs": "^2.0.0", | |
+ "tunnel-agent": "^0.6.0" | |
+ }, | |
+ "bin": { | |
+ "prebuild-install": "bin.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/prelude-ls": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", | |
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/prettier": { | |
+ "version": "3.5.3", | |
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", | |
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", | |
+ "license": "MIT", | |
+ "bin": { | |
+ "prettier": "bin/prettier.cjs" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/prettier/prettier?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/pretty-format": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", | |
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@jest/schemas": "^29.6.3", | |
+ "ansi-styles": "^5.0.0", | |
+ "react-is": "^18.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/pretty-format/node_modules/ansi-styles": { | |
+ "version": "5.2.0", | |
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", | |
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/prismjs": { | |
+ "version": "1.29.0", | |
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", | |
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/process-nextick-args": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | |
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/prompts": { | |
+ "version": "2.4.2", | |
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", | |
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "kleur": "^3.0.3", | |
+ "sisteransi": "^1.0.5" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/prop-types": { | |
+ "version": "15.8.1", | |
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", | |
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "loose-envify": "^1.4.0", | |
+ "object-assign": "^4.1.1", | |
+ "react-is": "^16.13.1" | |
+ } | |
+ }, | |
+ "node_modules/prop-types/node_modules/react-is": { | |
+ "version": "16.13.1", | |
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", | |
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/property-information": { | |
+ "version": "6.5.0", | |
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", | |
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/proxy-from-env": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", | |
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/pump": { | |
+ "version": "3.0.2", | |
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", | |
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "end-of-stream": "^1.1.0", | |
+ "once": "^1.3.1" | |
+ } | |
+ }, | |
+ "node_modules/punycode": { | |
+ "version": "2.3.1", | |
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", | |
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/punycode.js": { | |
+ "version": "2.3.1", | |
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", | |
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/pure-rand": { | |
+ "version": "6.1.0", | |
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", | |
+ "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", | |
+ "dev": true, | |
+ "funding": [ | |
+ { | |
+ "type": "individual", | |
+ "url": "https://github.com/sponsors/dubzzz" | |
+ }, | |
+ { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/fast-check" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/qs": { | |
+ "version": "6.13.0", | |
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", | |
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", | |
+ "license": "BSD-3-Clause", | |
+ "dependencies": { | |
+ "side-channel": "^1.0.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.6" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/queue-microtask": { | |
+ "version": "1.2.3", | |
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", | |
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", | |
+ "dev": true, | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/rc": { | |
+ "version": "1.2.8", | |
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", | |
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", | |
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", | |
+ "dependencies": { | |
+ "deep-extend": "^0.6.0", | |
+ "ini": "~1.3.0", | |
+ "minimist": "^1.2.0", | |
+ "strip-json-comments": "~2.0.1" | |
+ }, | |
+ "bin": { | |
+ "rc": "cli.js" | |
+ } | |
+ }, | |
+ "node_modules/rc/node_modules/strip-json-comments": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", | |
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/react": { | |
+ "version": "18.3.1", | |
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", | |
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "loose-envify": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/react-dom": { | |
+ "version": "18.3.1", | |
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", | |
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "loose-envify": "^1.1.0", | |
+ "scheduler": "^0.23.2" | |
+ }, | |
+ "peerDependencies": { | |
+ "react": "^18.3.1" | |
+ } | |
+ }, | |
+ "node_modules/react-intersection-observer": { | |
+ "version": "9.16.0", | |
+ "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.16.0.tgz", | |
+ "integrity": "sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0", | |
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "react-dom": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/react-is": { | |
+ "version": "18.3.1", | |
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", | |
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/react-markdown": { | |
+ "version": "8.0.7", | |
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", | |
+ "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/hast": "^2.0.0", | |
+ "@types/prop-types": "^15.0.0", | |
+ "@types/unist": "^2.0.0", | |
+ "comma-separated-tokens": "^2.0.0", | |
+ "hast-util-whitespace": "^2.0.0", | |
+ "prop-types": "^15.0.0", | |
+ "property-information": "^6.0.0", | |
+ "react-is": "^18.0.0", | |
+ "remark-parse": "^10.0.0", | |
+ "remark-rehype": "^10.0.0", | |
+ "space-separated-tokens": "^2.0.0", | |
+ "style-to-object": "^0.4.0", | |
+ "unified": "^10.0.0", | |
+ "unist-util-visit": "^4.0.0", | |
+ "vfile": "^5.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": ">=16", | |
+ "react": ">=16" | |
+ } | |
+ }, | |
+ "node_modules/react-promise-suspense": { | |
+ "version": "0.3.4", | |
+ "resolved": "https://registry.npmjs.org/react-promise-suspense/-/react-promise-suspense-0.3.4.tgz", | |
+ "integrity": "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "fast-deep-equal": "^2.0.1" | |
+ } | |
+ }, | |
+ "node_modules/react-promise-suspense/node_modules/fast-deep-equal": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", | |
+ "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/react-remove-scroll": { | |
+ "version": "2.6.3", | |
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", | |
+ "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "react-remove-scroll-bar": "^2.3.7", | |
+ "react-style-singleton": "^2.2.3", | |
+ "tslib": "^2.1.0", | |
+ "use-callback-ref": "^1.3.3", | |
+ "use-sidecar": "^1.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": "*", | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/react-remove-scroll-bar": { | |
+ "version": "2.3.8", | |
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", | |
+ "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "react-style-singleton": "^2.2.2", | |
+ "tslib": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": "*", | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/react-style-singleton": { | |
+ "version": "2.2.3", | |
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", | |
+ "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "get-nonce": "^1.0.0", | |
+ "tslib": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": "*", | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/react-syntax-highlighter": { | |
+ "version": "15.6.1", | |
+ "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz", | |
+ "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@babel/runtime": "^7.3.1", | |
+ "highlight.js": "^10.4.1", | |
+ "highlightjs-vue": "^1.0.0", | |
+ "lowlight": "^1.17.0", | |
+ "prismjs": "^1.27.0", | |
+ "refractor": "^3.6.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "react": ">= 0.14.0" | |
+ } | |
+ }, | |
+ "node_modules/react-textarea-autosize": { | |
+ "version": "8.5.9", | |
+ "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", | |
+ "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@babel/runtime": "^7.20.13", | |
+ "use-composed-ref": "^1.3.0", | |
+ "use-latest": "^1.2.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" | |
+ } | |
+ }, | |
+ "node_modules/read-cache": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", | |
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "pify": "^2.3.0" | |
+ } | |
+ }, | |
+ "node_modules/readable-stream": { | |
+ "version": "2.3.8", | |
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", | |
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "core-util-is": "~1.0.0", | |
+ "inherits": "~2.0.3", | |
+ "isarray": "~1.0.0", | |
+ "process-nextick-args": "~2.0.0", | |
+ "safe-buffer": "~5.1.1", | |
+ "string_decoder": "~1.1.1", | |
+ "util-deprecate": "~1.0.1" | |
+ } | |
+ }, | |
+ "node_modules/readable-stream/node_modules/safe-buffer": { | |
+ "version": "5.1.2", | |
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | |
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/readdirp": { | |
+ "version": "3.6.0", | |
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | |
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "picomatch": "^2.2.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8.10.0" | |
+ } | |
+ }, | |
+ "node_modules/reflect.getprototypeof": { | |
+ "version": "1.0.10", | |
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", | |
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.9", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.0.0", | |
+ "get-intrinsic": "^1.2.7", | |
+ "get-proto": "^1.0.1", | |
+ "which-builtin-type": "^1.2.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/refractor": { | |
+ "version": "3.6.0", | |
+ "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", | |
+ "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "hastscript": "^6.0.0", | |
+ "parse-entities": "^2.0.0", | |
+ "prismjs": "~1.27.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/refractor/node_modules/prismjs": { | |
+ "version": "1.27.0", | |
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", | |
+ "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/regenerator-runtime": { | |
+ "version": "0.14.1", | |
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", | |
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/regexp.prototype.flags": { | |
+ "version": "1.5.4", | |
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", | |
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "define-properties": "^1.2.1", | |
+ "es-errors": "^1.3.0", | |
+ "get-proto": "^1.0.1", | |
+ "gopd": "^1.2.0", | |
+ "set-function-name": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/remark-gfm": { | |
+ "version": "3.0.1", | |
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", | |
+ "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-gfm": "^2.0.0", | |
+ "micromark-extension-gfm": "^2.0.0", | |
+ "unified": "^10.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/remark-math": { | |
+ "version": "5.1.1", | |
+ "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-5.1.1.tgz", | |
+ "integrity": "sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-math": "^2.0.0", | |
+ "micromark-extension-math": "^2.0.0", | |
+ "unified": "^10.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/remark-parse": { | |
+ "version": "10.0.2", | |
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", | |
+ "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-from-markdown": "^1.0.0", | |
+ "unified": "^10.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/remark-rehype": { | |
+ "version": "10.1.0", | |
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", | |
+ "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/hast": "^2.0.0", | |
+ "@types/mdast": "^3.0.0", | |
+ "mdast-util-to-hast": "^12.1.0", | |
+ "unified": "^10.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/require-directory": { | |
+ "version": "2.1.1", | |
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", | |
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/resend": { | |
+ "version": "4.4.0", | |
+ "resolved": "https://registry.npmjs.org/resend/-/resend-4.4.0.tgz", | |
+ "integrity": "sha512-SmVI3JCpgPNt4/m3Uy403LjoSeeleUE2X+KwPYQZcw+jiBCFsqL6vdf1r/XuQ7yOjvxYmlI8GD/oIWonFF9t9w==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@react-email/render": "1.0.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">=18" | |
+ } | |
+ }, | |
+ "node_modules/resolve": { | |
+ "version": "1.22.8", | |
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", | |
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-core-module": "^2.13.0", | |
+ "path-parse": "^1.0.7", | |
+ "supports-preserve-symlinks-flag": "^1.0.0" | |
+ }, | |
+ "bin": { | |
+ "resolve": "bin/resolve" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/resolve-cwd": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", | |
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "resolve-from": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/resolve-from": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", | |
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/resolve-pkg-maps": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", | |
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/resolve.exports": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", | |
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/reusify": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", | |
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "iojs": ">=1.0.0", | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/run-parallel": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", | |
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", | |
+ "dev": true, | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "queue-microtask": "^1.2.2" | |
+ } | |
+ }, | |
+ "node_modules/sade": { | |
+ "version": "1.8.1", | |
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", | |
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "mri": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/safe-array-concat": { | |
+ "version": "1.1.3", | |
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", | |
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.2", | |
+ "get-intrinsic": "^1.2.6", | |
+ "has-symbols": "^1.1.0", | |
+ "isarray": "^2.0.5" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/safe-array-concat/node_modules/isarray": { | |
+ "version": "2.0.5", | |
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", | |
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/safe-buffer": { | |
+ "version": "5.2.1", | |
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | |
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/safe-push-apply": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", | |
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0", | |
+ "isarray": "^2.0.5" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/safe-push-apply/node_modules/isarray": { | |
+ "version": "2.0.5", | |
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", | |
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/safe-regex-test": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", | |
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "es-errors": "^1.3.0", | |
+ "is-regex": "^1.2.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/scheduler": { | |
+ "version": "0.23.2", | |
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", | |
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "loose-envify": "^1.1.0" | |
+ } | |
+ }, | |
+ "node_modules/scmp": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", | |
+ "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==", | |
+ "license": "BSD-3-Clause" | |
+ }, | |
+ "node_modules/secure-json-parse": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", | |
+ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", | |
+ "license": "BSD-3-Clause" | |
+ }, | |
+ "node_modules/selderee": { | |
+ "version": "0.11.0", | |
+ "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", | |
+ "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "parseley": "^0.12.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://ko-fi.com/killymxi" | |
+ } | |
+ }, | |
+ "node_modules/semver": { | |
+ "version": "6.3.1", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", | |
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ } | |
+ }, | |
+ "node_modules/set-function-length": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", | |
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "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" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/set-function-name": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", | |
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-data-property": "^1.1.4", | |
+ "es-errors": "^1.3.0", | |
+ "functions-have-names": "^1.2.3", | |
+ "has-property-descriptors": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/set-proto": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", | |
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "dunder-proto": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/setimmediate": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", | |
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/sharp": { | |
+ "version": "0.33.5", | |
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", | |
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", | |
+ "hasInstallScript": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "color": "^4.2.3", | |
+ "detect-libc": "^2.0.3", | |
+ "semver": "^7.6.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/libvips" | |
+ }, | |
+ "optionalDependencies": { | |
+ "@img/sharp-darwin-arm64": "0.33.5", | |
+ "@img/sharp-darwin-x64": "0.33.5", | |
+ "@img/sharp-libvips-darwin-arm64": "1.0.4", | |
+ "@img/sharp-libvips-darwin-x64": "1.0.4", | |
+ "@img/sharp-libvips-linux-arm": "1.0.5", | |
+ "@img/sharp-libvips-linux-arm64": "1.0.4", | |
+ "@img/sharp-libvips-linux-s390x": "1.0.4", | |
+ "@img/sharp-libvips-linux-x64": "1.0.4", | |
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", | |
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4", | |
+ "@img/sharp-linux-arm": "0.33.5", | |
+ "@img/sharp-linux-arm64": "0.33.5", | |
+ "@img/sharp-linux-s390x": "0.33.5", | |
+ "@img/sharp-linux-x64": "0.33.5", | |
+ "@img/sharp-linuxmusl-arm64": "0.33.5", | |
+ "@img/sharp-linuxmusl-x64": "0.33.5", | |
+ "@img/sharp-wasm32": "0.33.5", | |
+ "@img/sharp-win32-ia32": "0.33.5", | |
+ "@img/sharp-win32-x64": "0.33.5" | |
+ } | |
+ }, | |
+ "node_modules/sharp/node_modules/semver": { | |
+ "version": "7.6.3", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | |
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | |
+ "license": "ISC", | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/shebang-command": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | |
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "shebang-regex": "^3.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/shebang-regex": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | |
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/side-channel": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", | |
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0", | |
+ "object-inspect": "^1.13.3", | |
+ "side-channel-list": "^1.0.0", | |
+ "side-channel-map": "^1.0.1", | |
+ "side-channel-weakmap": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/side-channel-list": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", | |
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0", | |
+ "object-inspect": "^1.13.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/side-channel-map": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", | |
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "es-errors": "^1.3.0", | |
+ "get-intrinsic": "^1.2.5", | |
+ "object-inspect": "^1.13.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/side-channel-weakmap": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", | |
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "es-errors": "^1.3.0", | |
+ "get-intrinsic": "^1.2.5", | |
+ "object-inspect": "^1.13.3", | |
+ "side-channel-map": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/signal-exit": { | |
+ "version": "3.0.7", | |
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", | |
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true | |
+ }, | |
+ "node_modules/simple-concat": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", | |
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/simple-get": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", | |
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/feross" | |
+ }, | |
+ { | |
+ "type": "patreon", | |
+ "url": "https://www.patreon.com/feross" | |
+ }, | |
+ { | |
+ "type": "consulting", | |
+ "url": "https://feross.org/support" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "decompress-response": "^6.0.0", | |
+ "once": "^1.3.1", | |
+ "simple-concat": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/simple-swizzle": { | |
+ "version": "0.2.2", | |
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", | |
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-arrayish": "^0.3.1" | |
+ } | |
+ }, | |
+ "node_modules/simple-swizzle/node_modules/is-arrayish": { | |
+ "version": "0.3.2", | |
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", | |
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/sisteransi": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", | |
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/slash": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", | |
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/sonner": { | |
+ "version": "1.7.4", | |
+ "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", | |
+ "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", | |
+ "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" | |
+ } | |
+ }, | |
+ "node_modules/source-map": { | |
+ "version": "0.6.1", | |
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | |
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | |
+ "license": "BSD-3-Clause", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/source-map-js": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", | |
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", | |
+ "license": "BSD-3-Clause", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/source-map-support": { | |
+ "version": "0.5.13", | |
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", | |
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "buffer-from": "^1.0.0", | |
+ "source-map": "^0.6.0" | |
+ } | |
+ }, | |
+ "node_modules/space-separated-tokens": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", | |
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/sprintf-js": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | |
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true | |
+ }, | |
+ "node_modules/sswr": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/sswr/-/sswr-2.1.0.tgz", | |
+ "integrity": "sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "swrev": "^4.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "svelte": "^4.0.0 || ^5.0.0-next.0" | |
+ } | |
+ }, | |
+ "node_modules/stable-hash": { | |
+ "version": "0.0.5", | |
+ "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", | |
+ "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/stack-utils": { | |
+ "version": "2.0.6", | |
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", | |
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "escape-string-regexp": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/stack-utils/node_modules/escape-string-regexp": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", | |
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/streamsearch": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", | |
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", | |
+ "engines": { | |
+ "node": ">=10.0.0" | |
+ } | |
+ }, | |
+ "node_modules/string_decoder": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | |
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "safe-buffer": "~5.1.0" | |
+ } | |
+ }, | |
+ "node_modules/string_decoder/node_modules/safe-buffer": { | |
+ "version": "5.1.2", | |
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | |
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/string-length": { | |
+ "version": "4.0.2", | |
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", | |
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "char-regex": "^1.0.2", | |
+ "strip-ansi": "^6.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/string-similarity": { | |
+ "version": "4.0.4", | |
+ "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", | |
+ "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==", | |
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/string-width": { | |
+ "version": "4.2.3", | |
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", | |
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "emoji-regex": "^8.0.0", | |
+ "is-fullwidth-code-point": "^3.0.0", | |
+ "strip-ansi": "^6.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/string-width-cjs": { | |
+ "name": "string-width", | |
+ "version": "4.2.3", | |
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", | |
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "emoji-regex": "^8.0.0", | |
+ "is-fullwidth-code-point": "^3.0.0", | |
+ "strip-ansi": "^6.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/string.prototype.includes": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", | |
+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.7", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/string.prototype.matchall": { | |
+ "version": "4.0.12", | |
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", | |
+ "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.6", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.0.0", | |
+ "get-intrinsic": "^1.2.6", | |
+ "gopd": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "internal-slot": "^1.1.0", | |
+ "regexp.prototype.flags": "^1.5.3", | |
+ "set-function-name": "^2.0.2", | |
+ "side-channel": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/string.prototype.repeat": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", | |
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-properties": "^1.1.3", | |
+ "es-abstract": "^1.17.5" | |
+ } | |
+ }, | |
+ "node_modules/string.prototype.trim": { | |
+ "version": "1.2.10", | |
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", | |
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.2", | |
+ "define-data-property": "^1.1.4", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.5", | |
+ "es-object-atoms": "^1.0.0", | |
+ "has-property-descriptors": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/string.prototype.trimend": { | |
+ "version": "1.0.9", | |
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", | |
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.2", | |
+ "define-properties": "^1.2.1", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/string.prototype.trimstart": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", | |
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.7", | |
+ "define-properties": "^1.2.1", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/strip-ansi": { | |
+ "version": "6.0.1", | |
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", | |
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-regex": "^5.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/strip-ansi-cjs": { | |
+ "name": "strip-ansi", | |
+ "version": "6.0.1", | |
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", | |
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-regex": "^5.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/strip-bom": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", | |
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/strip-final-newline": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", | |
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/strip-json-comments": { | |
+ "version": "3.1.1", | |
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", | |
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=8" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/style-to-object": { | |
+ "version": "0.4.4", | |
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", | |
+ "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "inline-style-parser": "0.1.1" | |
+ } | |
+ }, | |
+ "node_modules/styled-jsx": { | |
+ "version": "5.1.1", | |
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", | |
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "client-only": "0.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 12.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@babel/core": { | |
+ "optional": true | |
+ }, | |
+ "babel-plugin-macros": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/sucrase": { | |
+ "version": "3.35.0", | |
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", | |
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@jridgewell/gen-mapping": "^0.3.2", | |
+ "commander": "^4.0.0", | |
+ "glob": "^10.3.10", | |
+ "lines-and-columns": "^1.1.6", | |
+ "mz": "^2.7.0", | |
+ "pirates": "^4.0.1", | |
+ "ts-interface-checker": "^0.1.9" | |
+ }, | |
+ "bin": { | |
+ "sucrase": "bin/sucrase", | |
+ "sucrase-node": "bin/sucrase-node" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16 || 14 >=14.17" | |
+ } | |
+ }, | |
+ "node_modules/sucrase/node_modules/brace-expansion": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", | |
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "balanced-match": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/sucrase/node_modules/commander": { | |
+ "version": "4.1.1", | |
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", | |
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/sucrase/node_modules/glob": { | |
+ "version": "10.4.5", | |
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", | |
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "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" | |
+ }, | |
+ "bin": { | |
+ "glob": "dist/esm/bin.mjs" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/sucrase/node_modules/minimatch": { | |
+ "version": "9.0.5", | |
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", | |
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "brace-expansion": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16 || 14 >=14.17" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/supports-color": { | |
+ "version": "7.2.0", | |
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | |
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "has-flag": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/supports-preserve-symlinks-flag": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", | |
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/svelte": { | |
+ "version": "5.1.13", | |
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.1.13.tgz", | |
+ "integrity": "sha512-xVNk8yLsZNfkyqWzVg8+nfU9ewiSjVW0S4qyTxfKa6Y7P5ZBhA+LDsh2cHWIXJQMltikQAk6W3sqGdQZSH58PA==", | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@ampproject/remapping": "^2.3.0", | |
+ "@jridgewell/sourcemap-codec": "^1.5.0", | |
+ "@types/estree": "^1.0.5", | |
+ "acorn": "^8.12.1", | |
+ "acorn-typescript": "^1.4.13", | |
+ "aria-query": "^5.3.1", | |
+ "axobject-query": "^4.1.0", | |
+ "esm-env": "^1.0.0", | |
+ "esrap": "^1.2.2", | |
+ "is-reference": "^3.0.2", | |
+ "locate-character": "^3.0.0", | |
+ "magic-string": "^0.30.11", | |
+ "zimmerframe": "^1.1.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=18" | |
+ } | |
+ }, | |
+ "node_modules/swr": { | |
+ "version": "2.2.5", | |
+ "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.5.tgz", | |
+ "integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "client-only": "^0.0.1", | |
+ "use-sync-external-store": "^1.2.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "react": "^16.11.0 || ^17.0.0 || ^18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/swrev": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/swrev/-/swrev-4.0.0.tgz", | |
+ "integrity": "sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/swrv": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/swrv/-/swrv-1.0.4.tgz", | |
+ "integrity": "sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==", | |
+ "license": "Apache-2.0", | |
+ "peerDependencies": { | |
+ "vue": ">=3.2.26 < 4" | |
+ } | |
+ }, | |
+ "node_modules/tailwind-merge": { | |
+ "version": "2.6.0", | |
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", | |
+ "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/dcastil" | |
+ } | |
+ }, | |
+ "node_modules/tailwindcss": { | |
+ "version": "3.4.17", | |
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", | |
+ "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@alloc/quick-lru": "^5.2.0", | |
+ "arg": "^5.0.2", | |
+ "chokidar": "^3.6.0", | |
+ "didyoumean": "^1.2.2", | |
+ "dlv": "^1.1.3", | |
+ "fast-glob": "^3.3.2", | |
+ "glob-parent": "^6.0.2", | |
+ "is-glob": "^4.0.3", | |
+ "jiti": "^1.21.6", | |
+ "lilconfig": "^3.1.3", | |
+ "micromatch": "^4.0.8", | |
+ "normalize-path": "^3.0.0", | |
+ "object-hash": "^3.0.0", | |
+ "picocolors": "^1.1.1", | |
+ "postcss": "^8.4.47", | |
+ "postcss-import": "^15.1.0", | |
+ "postcss-js": "^4.0.1", | |
+ "postcss-load-config": "^4.0.2", | |
+ "postcss-nested": "^6.2.0", | |
+ "postcss-selector-parser": "^6.1.2", | |
+ "resolve": "^1.22.8", | |
+ "sucrase": "^3.35.0" | |
+ }, | |
+ "bin": { | |
+ "tailwind": "lib/cli.js", | |
+ "tailwindcss": "lib/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/tailwindcss-animate": { | |
+ "version": "1.0.7", | |
+ "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", | |
+ "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "tailwindcss": ">=3.0.0 || insiders" | |
+ } | |
+ }, | |
+ "node_modules/tailwindcss/node_modules/postcss-selector-parser": { | |
+ "version": "6.1.2", | |
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", | |
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "cssesc": "^3.0.0", | |
+ "util-deprecate": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/tar-fs": { | |
+ "version": "2.1.2", | |
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", | |
+ "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "chownr": "^1.1.1", | |
+ "mkdirp-classic": "^0.5.2", | |
+ "pump": "^3.0.0", | |
+ "tar-stream": "^2.1.4" | |
+ } | |
+ }, | |
+ "node_modules/tar-stream": { | |
+ "version": "2.2.0", | |
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", | |
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "bl": "^4.0.3", | |
+ "end-of-stream": "^1.4.1", | |
+ "fs-constants": "^1.0.0", | |
+ "inherits": "^2.0.3", | |
+ "readable-stream": "^3.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/tar-stream/node_modules/readable-stream": { | |
+ "version": "3.6.2", | |
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", | |
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "inherits": "^2.0.3", | |
+ "string_decoder": "^1.1.1", | |
+ "util-deprecate": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/test-exclude": { | |
+ "version": "6.0.0", | |
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", | |
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@istanbuljs/schema": "^0.1.2", | |
+ "glob": "^7.1.4", | |
+ "minimatch": "^3.0.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/thenify": { | |
+ "version": "3.3.1", | |
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", | |
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "any-promise": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/thenify-all": { | |
+ "version": "1.6.0", | |
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", | |
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "thenify": ">= 3.1.0 < 4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.8" | |
+ } | |
+ }, | |
+ "node_modules/throttleit": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", | |
+ "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/tiktoken": { | |
+ "version": "1.0.21", | |
+ "resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.21.tgz", | |
+ "integrity": "sha512-/kqtlepLMptX0OgbYD9aMYbM7EFrMZCL7EoHM8Psmg2FuhXoo/bH64KqOiZGGwa6oS9TPdSEDKBnV2LuB8+5vQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/tinyglobby": { | |
+ "version": "0.2.13", | |
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", | |
+ "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "fdir": "^6.4.4", | |
+ "picomatch": "^4.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/SuperchupuDev" | |
+ } | |
+ }, | |
+ "node_modules/tinyglobby/node_modules/fdir": { | |
+ "version": "6.4.4", | |
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", | |
+ "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "picomatch": "^3 || ^4" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "picomatch": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/tinyglobby/node_modules/picomatch": { | |
+ "version": "4.0.2", | |
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", | |
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/jonschlinkert" | |
+ } | |
+ }, | |
+ "node_modules/tmpl": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", | |
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "peer": true | |
+ }, | |
+ "node_modules/to-regex-range": { | |
+ "version": "5.0.1", | |
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", | |
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-number": "^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8.0" | |
+ } | |
+ }, | |
+ "node_modules/tr46": { | |
+ "version": "0.0.3", | |
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", | |
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/trim-lines": { | |
+ "version": "3.0.1", | |
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", | |
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/trough": { | |
+ "version": "2.2.0", | |
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", | |
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/ts-api-utils": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", | |
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18.12" | |
+ }, | |
+ "peerDependencies": { | |
+ "typescript": ">=4.8.4" | |
+ } | |
+ }, | |
+ "node_modules/ts-deepmerge": { | |
+ "version": "7.0.2", | |
+ "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-7.0.2.tgz", | |
+ "integrity": "sha512-akcpDTPuez4xzULo5NwuoKwYRtjQJ9eoNfBACiBMaXwNAx7B1PKfe5wqUFJuW5uKzQ68YjDFwPaWHDG1KnFGsA==", | |
+ "license": "ISC", | |
+ "engines": { | |
+ "node": ">=14.13.1" | |
+ } | |
+ }, | |
+ "node_modules/ts-interface-checker": { | |
+ "version": "0.1.13", | |
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", | |
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", | |
+ "dev": true, | |
+ "license": "Apache-2.0" | |
+ }, | |
+ "node_modules/ts-jest": { | |
+ "version": "29.3.2", | |
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz", | |
+ "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "bs-logger": "^0.2.6", | |
+ "ejs": "^3.1.10", | |
+ "fast-json-stable-stringify": "^2.1.0", | |
+ "jest-util": "^29.0.0", | |
+ "json5": "^2.2.3", | |
+ "lodash.memoize": "^4.1.2", | |
+ "make-error": "^1.3.6", | |
+ "semver": "^7.7.1", | |
+ "type-fest": "^4.39.1", | |
+ "yargs-parser": "^21.1.1" | |
+ }, | |
+ "bin": { | |
+ "ts-jest": "cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "@babel/core": ">=7.0.0-beta.0 <8", | |
+ "@jest/transform": "^29.0.0", | |
+ "@jest/types": "^29.0.0", | |
+ "babel-jest": "^29.0.0", | |
+ "jest": "^29.0.0", | |
+ "typescript": ">=4.3 <6" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@babel/core": { | |
+ "optional": true | |
+ }, | |
+ "@jest/transform": { | |
+ "optional": true | |
+ }, | |
+ "@jest/types": { | |
+ "optional": true | |
+ }, | |
+ "babel-jest": { | |
+ "optional": true | |
+ }, | |
+ "esbuild": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/ts-jest/node_modules/semver": { | |
+ "version": "7.7.1", | |
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", | |
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "bin": { | |
+ "semver": "bin/semver.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/ts-jest/node_modules/type-fest": { | |
+ "version": "4.40.0", | |
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", | |
+ "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", | |
+ "dev": true, | |
+ "license": "(MIT OR CC0-1.0)", | |
+ "engines": { | |
+ "node": ">=16" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/tsconfig-paths": { | |
+ "version": "3.15.0", | |
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", | |
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/json5": "^0.0.29", | |
+ "json5": "^1.0.2", | |
+ "minimist": "^1.2.6", | |
+ "strip-bom": "^3.0.0" | |
+ } | |
+ }, | |
+ "node_modules/tsconfig-paths/node_modules/json5": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", | |
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "minimist": "^1.2.0" | |
+ }, | |
+ "bin": { | |
+ "json5": "lib/cli.js" | |
+ } | |
+ }, | |
+ "node_modules/tsconfig-paths/node_modules/strip-bom": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", | |
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/tslib": { | |
+ "version": "2.8.1", | |
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", | |
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", | |
+ "license": "0BSD" | |
+ }, | |
+ "node_modules/tunnel-agent": { | |
+ "version": "0.6.0", | |
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", | |
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "safe-buffer": "^5.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": "*" | |
+ } | |
+ }, | |
+ "node_modules/twilio": { | |
+ "version": "5.5.2", | |
+ "resolved": "https://registry.npmjs.org/twilio/-/twilio-5.5.2.tgz", | |
+ "integrity": "sha512-yrRh6immcL5xEVX7VmHsl3vU01x/fmqxf38kvxMrrtvEtAkYARYOPor9lt5T7964zC7l31k5sTrnLJmd2jjeOA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "axios": "^1.7.8", | |
+ "dayjs": "^1.11.9", | |
+ "https-proxy-agent": "^5.0.0", | |
+ "jsonwebtoken": "^9.0.2", | |
+ "qs": "^6.9.4", | |
+ "scmp": "^2.1.0", | |
+ "xmlbuilder": "^13.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0" | |
+ } | |
+ }, | |
+ "node_modules/twilio/node_modules/agent-base": { | |
+ "version": "6.0.2", | |
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", | |
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "debug": "4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6.0.0" | |
+ } | |
+ }, | |
+ "node_modules/twilio/node_modules/https-proxy-agent": { | |
+ "version": "5.0.1", | |
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", | |
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "agent-base": "6", | |
+ "debug": "4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/type-check": { | |
+ "version": "0.4.0", | |
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", | |
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "prelude-ls": "^1.2.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/type-detect": { | |
+ "version": "4.0.8", | |
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", | |
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/type-fest": { | |
+ "version": "0.21.3", | |
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", | |
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", | |
+ "dev": true, | |
+ "license": "(MIT OR CC0-1.0)", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/typed-array-buffer": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", | |
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "is-typed-array": "^1.1.14" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/typed-array-byte-length": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", | |
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "for-each": "^0.3.3", | |
+ "gopd": "^1.2.0", | |
+ "has-proto": "^1.2.0", | |
+ "is-typed-array": "^1.1.14" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/typed-array-byte-offset": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", | |
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "available-typed-arrays": "^1.0.7", | |
+ "call-bind": "^1.0.8", | |
+ "for-each": "^0.3.3", | |
+ "gopd": "^1.2.0", | |
+ "has-proto": "^1.2.0", | |
+ "is-typed-array": "^1.1.15", | |
+ "reflect.getprototypeof": "^1.0.9" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/typed-array-length": { | |
+ "version": "1.0.7", | |
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", | |
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.7", | |
+ "for-each": "^0.3.3", | |
+ "gopd": "^1.0.1", | |
+ "is-typed-array": "^1.1.13", | |
+ "possible-typed-array-names": "^1.0.0", | |
+ "reflect.getprototypeof": "^1.0.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/typedoc": { | |
+ "version": "0.28.3", | |
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.3.tgz", | |
+ "integrity": "sha512-5svOCTfXvVSh6zbZKSQluZhR8yN2tKpTeHZxlmWpE6N5vc3R8k/jhg9nnD6n5tN9/ObuQTojkONrOxFdUFUG9w==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "@gerrit0/mini-shiki": "^3.2.2", | |
+ "lunr": "^2.3.9", | |
+ "markdown-it": "^14.1.0", | |
+ "minimatch": "^9.0.5", | |
+ "yaml": "^2.7.1" | |
+ }, | |
+ "bin": { | |
+ "typedoc": "bin/typedoc" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 18", | |
+ "pnpm": ">= 10" | |
+ }, | |
+ "peerDependencies": { | |
+ "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" | |
+ } | |
+ }, | |
+ "node_modules/typedoc-plugin-markdown": { | |
+ "version": "4.6.3", | |
+ "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.6.3.tgz", | |
+ "integrity": "sha512-86oODyM2zajXwLs4Wok2mwVEfCwCnp756QyhLGX2IfsdRYr1DXLCgJgnLndaMUjJD7FBhnLk2okbNE9PdLxYRw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 18" | |
+ }, | |
+ "peerDependencies": { | |
+ "typedoc": "0.28.x" | |
+ } | |
+ }, | |
+ "node_modules/typedoc-plugin-merge-modules": { | |
+ "version": "7.0.0", | |
+ "resolved": "https://registry.npmjs.org/typedoc-plugin-merge-modules/-/typedoc-plugin-merge-modules-7.0.0.tgz", | |
+ "integrity": "sha512-DQyfbbPNBElhpdpGrlkS+CrhGD3iooDjp/PHT8O1D/jumLCB+7XAY3jHiqob7d01o25EfwEOJWVwJK+9J6WlBg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peerDependencies": { | |
+ "typedoc": "0.28.x" | |
+ } | |
+ }, | |
+ "node_modules/typedoc/node_modules/brace-expansion": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", | |
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "balanced-match": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/typedoc/node_modules/minimatch": { | |
+ "version": "9.0.5", | |
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", | |
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "brace-expansion": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16 || 14 >=14.17" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/typescript": { | |
+ "version": "5.8.3", | |
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", | |
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", | |
+ "license": "Apache-2.0", | |
+ "bin": { | |
+ "tsc": "bin/tsc", | |
+ "tsserver": "bin/tsserver" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.17" | |
+ } | |
+ }, | |
+ "node_modules/uc.micro": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", | |
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/uglify-js": { | |
+ "version": "3.19.3", | |
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", | |
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", | |
+ "license": "BSD-2-Clause", | |
+ "optional": true, | |
+ "bin": { | |
+ "uglifyjs": "bin/uglifyjs" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/unbox-primitive": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", | |
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "has-bigints": "^1.0.2", | |
+ "has-symbols": "^1.1.0", | |
+ "which-boxed-primitive": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/undici-types": { | |
+ "version": "6.21.0", | |
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", | |
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/unified": { | |
+ "version": "10.1.2", | |
+ "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", | |
+ "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0", | |
+ "bail": "^2.0.0", | |
+ "extend": "^3.0.0", | |
+ "is-buffer": "^2.0.0", | |
+ "is-plain-obj": "^4.0.0", | |
+ "trough": "^2.0.0", | |
+ "vfile": "^5.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unist-util-generated": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", | |
+ "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unist-util-is": { | |
+ "version": "5.2.1", | |
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", | |
+ "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unist-util-position": { | |
+ "version": "4.0.4", | |
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", | |
+ "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unist-util-stringify-position": { | |
+ "version": "3.0.3", | |
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", | |
+ "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unist-util-visit": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", | |
+ "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0", | |
+ "unist-util-is": "^5.0.0", | |
+ "unist-util-visit-parents": "^5.1.1" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unist-util-visit-parents": { | |
+ "version": "5.1.3", | |
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", | |
+ "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0", | |
+ "unist-util-is": "^5.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/unrs-resolver": { | |
+ "version": "1.6.4", | |
+ "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.6.4.tgz", | |
+ "integrity": "sha512-Fb6KH4pQK0XjR5PdRW8BEzsQmbYjkeRHF3IIIZtOVXVFM6Nh+Gb2fQh23Ba7qaYloDp+Aa8/JeNqyImJ8xHlkQ==", | |
+ "dev": true, | |
+ "hasInstallScript": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "napi-postinstall": "^0.1.5" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/JounQin" | |
+ }, | |
+ "optionalDependencies": { | |
+ "@unrs/resolver-binding-darwin-arm64": "1.6.4", | |
+ "@unrs/resolver-binding-darwin-x64": "1.6.4", | |
+ "@unrs/resolver-binding-freebsd-x64": "1.6.4", | |
+ "@unrs/resolver-binding-linux-arm-gnueabihf": "1.6.4", | |
+ "@unrs/resolver-binding-linux-arm-musleabihf": "1.6.4", | |
+ "@unrs/resolver-binding-linux-arm64-gnu": "1.6.4", | |
+ "@unrs/resolver-binding-linux-arm64-musl": "1.6.4", | |
+ "@unrs/resolver-binding-linux-ppc64-gnu": "1.6.4", | |
+ "@unrs/resolver-binding-linux-riscv64-gnu": "1.6.4", | |
+ "@unrs/resolver-binding-linux-s390x-gnu": "1.6.4", | |
+ "@unrs/resolver-binding-linux-x64-gnu": "1.6.4", | |
+ "@unrs/resolver-binding-linux-x64-musl": "1.6.4", | |
+ "@unrs/resolver-binding-wasm32-wasi": "1.6.4", | |
+ "@unrs/resolver-binding-win32-arm64-msvc": "1.6.4", | |
+ "@unrs/resolver-binding-win32-ia32-msvc": "1.6.4", | |
+ "@unrs/resolver-binding-win32-x64-msvc": "1.6.4" | |
+ } | |
+ }, | |
+ "node_modules/update-browserslist-db": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", | |
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", | |
+ "dev": true, | |
+ "funding": [ | |
+ { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/browserslist" | |
+ }, | |
+ { | |
+ "type": "tidelift", | |
+ "url": "https://tidelift.com/funding/github/npm/browserslist" | |
+ }, | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/ai" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "escalade": "^3.2.0", | |
+ "picocolors": "^1.1.0" | |
+ }, | |
+ "bin": { | |
+ "update-browserslist-db": "cli.js" | |
+ }, | |
+ "peerDependencies": { | |
+ "browserslist": ">= 4.21.0" | |
+ } | |
+ }, | |
+ "node_modules/uri-js": { | |
+ "version": "4.4.1", | |
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", | |
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "punycode": "^2.1.0" | |
+ } | |
+ }, | |
+ "node_modules/url-template": { | |
+ "version": "2.0.8", | |
+ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", | |
+ "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", | |
+ "license": "BSD" | |
+ }, | |
+ "node_modules/use-callback-ref": { | |
+ "version": "1.3.3", | |
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", | |
+ "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "tslib": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": "*", | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/use-composed-ref": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", | |
+ "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/use-isomorphic-layout-effect": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", | |
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/use-latest": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", | |
+ "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "use-isomorphic-layout-effect": "^1.1.1" | |
+ }, | |
+ "peerDependencies": { | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/use-sidecar": { | |
+ "version": "1.1.3", | |
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", | |
+ "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "detect-node-es": "^1.1.0", | |
+ "tslib": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "@types/react": "*", | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@types/react": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/use-sync-external-store": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", | |
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/util-deprecate": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | |
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/uuid": { | |
+ "version": "11.1.0", | |
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", | |
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", | |
+ "funding": [ | |
+ "https://github.com/sponsors/broofa", | |
+ "https://github.com/sponsors/ctavan" | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "uuid": "dist/esm/bin/uuid" | |
+ } | |
+ }, | |
+ "node_modules/uvu": { | |
+ "version": "0.5.6", | |
+ "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", | |
+ "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "dequal": "^2.0.0", | |
+ "diff": "^5.0.0", | |
+ "kleur": "^4.0.3", | |
+ "sade": "^1.7.3" | |
+ }, | |
+ "bin": { | |
+ "uvu": "bin.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/uvu/node_modules/diff": { | |
+ "version": "5.2.0", | |
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", | |
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", | |
+ "license": "BSD-3-Clause", | |
+ "engines": { | |
+ "node": ">=0.3.1" | |
+ } | |
+ }, | |
+ "node_modules/uvu/node_modules/kleur": { | |
+ "version": "4.1.5", | |
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", | |
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/v8-to-istanbul": { | |
+ "version": "9.3.0", | |
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", | |
+ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jridgewell/trace-mapping": "^0.3.12", | |
+ "@types/istanbul-lib-coverage": "^2.0.1", | |
+ "convert-source-map": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10.12.0" | |
+ } | |
+ }, | |
+ "node_modules/vfile": { | |
+ "version": "5.3.7", | |
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", | |
+ "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0", | |
+ "is-buffer": "^2.0.0", | |
+ "unist-util-stringify-position": "^3.0.0", | |
+ "vfile-message": "^3.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/vfile-message": { | |
+ "version": "3.1.4", | |
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", | |
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@types/unist": "^2.0.0", | |
+ "unist-util-stringify-position": "^3.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "opencollective", | |
+ "url": "https://opencollective.com/unified" | |
+ } | |
+ }, | |
+ "node_modules/vue": { | |
+ "version": "3.5.12", | |
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", | |
+ "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@vue/compiler-dom": "3.5.12", | |
+ "@vue/compiler-sfc": "3.5.12", | |
+ "@vue/runtime-dom": "3.5.12", | |
+ "@vue/server-renderer": "3.5.12", | |
+ "@vue/shared": "3.5.12" | |
+ }, | |
+ "peerDependencies": { | |
+ "typescript": "*" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "typescript": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/walker": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", | |
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "makeerror": "1.0.12" | |
+ } | |
+ }, | |
+ "node_modules/web-streams-polyfill": { | |
+ "version": "4.0.0-beta.3", | |
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", | |
+ "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 14" | |
+ } | |
+ }, | |
+ "node_modules/webidl-conversions": { | |
+ "version": "3.0.1", | |
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", | |
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", | |
+ "license": "BSD-2-Clause" | |
+ }, | |
+ "node_modules/whatwg-url": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", | |
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "tr46": "~0.0.3", | |
+ "webidl-conversions": "^3.0.0" | |
+ } | |
+ }, | |
+ "node_modules/which": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | |
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "isexe": "^2.0.0" | |
+ }, | |
+ "bin": { | |
+ "node-which": "bin/node-which" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 8" | |
+ } | |
+ }, | |
+ "node_modules/which-boxed-primitive": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", | |
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-bigint": "^1.1.0", | |
+ "is-boolean-object": "^1.2.1", | |
+ "is-number-object": "^1.1.1", | |
+ "is-string": "^1.1.1", | |
+ "is-symbol": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/which-builtin-type": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", | |
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "function.prototype.name": "^1.1.6", | |
+ "has-tostringtag": "^1.0.2", | |
+ "is-async-function": "^2.0.0", | |
+ "is-date-object": "^1.1.0", | |
+ "is-finalizationregistry": "^1.1.0", | |
+ "is-generator-function": "^1.0.10", | |
+ "is-regex": "^1.2.1", | |
+ "is-weakref": "^1.0.2", | |
+ "isarray": "^2.0.5", | |
+ "which-boxed-primitive": "^1.1.0", | |
+ "which-collection": "^1.0.2", | |
+ "which-typed-array": "^1.1.16" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/which-builtin-type/node_modules/isarray": { | |
+ "version": "2.0.5", | |
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", | |
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/which-collection": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", | |
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-map": "^2.0.3", | |
+ "is-set": "^2.0.3", | |
+ "is-weakmap": "^2.0.2", | |
+ "is-weakset": "^2.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/which-typed-array": { | |
+ "version": "1.1.19", | |
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", | |
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "available-typed-arrays": "^1.0.7", | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.4", | |
+ "for-each": "^0.3.5", | |
+ "get-proto": "^1.0.1", | |
+ "gopd": "^1.2.0", | |
+ "has-tostringtag": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/widest-line": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", | |
+ "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "string-width": "^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/widest-line/node_modules/ansi-regex": { | |
+ "version": "6.1.0", | |
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", | |
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/widest-line/node_modules/emoji-regex": { | |
+ "version": "10.4.0", | |
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", | |
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/widest-line/node_modules/string-width": { | |
+ "version": "7.2.0", | |
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", | |
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "emoji-regex": "^10.3.0", | |
+ "get-east-asian-width": "^1.0.0", | |
+ "strip-ansi": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/widest-line/node_modules/strip-ansi": { | |
+ "version": "7.1.0", | |
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", | |
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-regex": "^6.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/word-wrap": { | |
+ "version": "1.2.5", | |
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", | |
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/wordwrap": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", | |
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/wrap-ansi": { | |
+ "version": "7.0.0", | |
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", | |
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.0.0", | |
+ "string-width": "^4.1.0", | |
+ "strip-ansi": "^6.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/wrap-ansi-cjs": { | |
+ "name": "wrap-ansi", | |
+ "version": "7.0.0", | |
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", | |
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.0.0", | |
+ "string-width": "^4.1.0", | |
+ "strip-ansi": "^6.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/wrappy": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | |
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/write-file-atomic": { | |
+ "version": "4.0.2", | |
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", | |
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "imurmurhash": "^0.1.4", | |
+ "signal-exit": "^3.0.7" | |
+ }, | |
+ "engines": { | |
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" | |
+ } | |
+ }, | |
+ "node_modules/ws": { | |
+ "version": "8.18.0", | |
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", | |
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "bufferutil": "^4.0.1", | |
+ "utf-8-validate": ">=5.0.2" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "bufferutil": { | |
+ "optional": true | |
+ }, | |
+ "utf-8-validate": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/xmlbuilder": { | |
+ "version": "13.0.2", | |
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", | |
+ "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6.0" | |
+ } | |
+ }, | |
+ "node_modules/xtend": { | |
+ "version": "4.0.2", | |
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", | |
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.4" | |
+ } | |
+ }, | |
+ "node_modules/y18n": { | |
+ "version": "5.0.8", | |
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", | |
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/yallist": { | |
+ "version": "3.1.1", | |
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", | |
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true | |
+ }, | |
+ "node_modules/yaml": { | |
+ "version": "2.7.1", | |
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", | |
+ "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", | |
+ "license": "ISC", | |
+ "bin": { | |
+ "yaml": "bin.mjs" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 14" | |
+ } | |
+ }, | |
+ "node_modules/yargs": { | |
+ "version": "17.7.2", | |
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", | |
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "cliui": "^8.0.1", | |
+ "escalade": "^3.1.1", | |
+ "get-caller-file": "^2.0.5", | |
+ "require-directory": "^2.1.1", | |
+ "string-width": "^4.2.3", | |
+ "y18n": "^5.0.5", | |
+ "yargs-parser": "^21.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12" | |
+ } | |
+ }, | |
+ "node_modules/yargs-parser": { | |
+ "version": "21.1.1", | |
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", | |
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "engines": { | |
+ "node": ">=12" | |
+ } | |
+ }, | |
+ "node_modules/yocto-queue": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", | |
+ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12.20" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/zimmerframe": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", | |
+ "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/zod": { | |
+ "version": "3.24.3", | |
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", | |
+ "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/colinhacks" | |
+ } | |
+ }, | |
+ "node_modules/zod-to-json-schema": { | |
+ "version": "3.23.5", | |
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.5.tgz", | |
+ "integrity": "sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==", | |
+ "license": "ISC", | |
+ "peerDependencies": { | |
+ "zod": "^3.23.3" | |
+ } | |
+ }, | |
+ "node_modules/zwitch": { | |
+ "version": "2.0.4", | |
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", | |
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
} | |
- } | |
- }, | |
- "node_modules/xmlbuilder": { | |
- "version": "13.0.2", | |
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", | |
- "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", | |
- "license": "MIT", | |
- "engines": { | |
- "node": ">=6.0" | |
- } | |
- }, | |
- "node_modules/xtend": { | |
- "version": "4.0.2", | |
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", | |
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", | |
- "license": "MIT", | |
- "engines": { | |
- "node": ">=0.4" | |
- } | |
- }, | |
- "node_modules/y18n": { | |
- "version": "5.0.8", | |
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", | |
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", | |
- "dev": true, | |
- "license": "ISC", | |
- "engines": { | |
- "node": ">=10" | |
- } | |
- }, | |
- "node_modules/yallist": { | |
- "version": "3.1.1", | |
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", | |
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", | |
- "dev": true, | |
- "license": "ISC" | |
- }, | |
- "node_modules/yaml": { | |
- "version": "2.6.0", | |
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", | |
- "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", | |
- "dev": true, | |
- "license": "ISC", | |
- "bin": { | |
- "yaml": "bin.mjs" | |
- }, | |
- "engines": { | |
- "node": ">= 14" | |
- } | |
- }, | |
- "node_modules/yargs": { | |
- "version": "17.7.2", | |
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", | |
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", | |
- "dev": true, | |
- "license": "MIT", | |
- "dependencies": { | |
- "cliui": "^8.0.1", | |
- "escalade": "^3.1.1", | |
- "get-caller-file": "^2.0.5", | |
- "require-directory": "^2.1.1", | |
- "string-width": "^4.2.3", | |
- "y18n": "^5.0.5", | |
- "yargs-parser": "^21.1.1" | |
- }, | |
- "engines": { | |
- "node": ">=12" | |
- } | |
- }, | |
- "node_modules/yargs-parser": { | |
- "version": "21.1.1", | |
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", | |
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", | |
- "dev": true, | |
- "license": "ISC", | |
- "engines": { | |
- "node": ">=12" | |
- } | |
- }, | |
- "node_modules/yocto-queue": { | |
- "version": "0.1.0", | |
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", | |
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", | |
- "dev": true, | |
- "license": "MIT", | |
- "engines": { | |
- "node": ">=10" | |
- }, | |
- "funding": { | |
- "url": "https://github.com/sponsors/sindresorhus" | |
- } | |
- }, | |
- "node_modules/zimmerframe": { | |
- "version": "1.1.2", | |
- "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", | |
- "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", | |
- "license": "MIT", | |
- "peer": true | |
- }, | |
- "node_modules/zod": { | |
- "version": "3.23.8", | |
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", | |
- "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", | |
- "license": "MIT", | |
- "funding": { | |
- "url": "https://github.com/sponsors/colinhacks" | |
- } | |
- }, | |
- "node_modules/zod-to-json-schema": { | |
- "version": "3.23.5", | |
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.5.tgz", | |
- "integrity": "sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==", | |
- "license": "ISC", | |
- "peerDependencies": { | |
- "zod": "^3.23.3" | |
- } | |
- }, | |
- "node_modules/zwitch": { | |
- "version": "2.0.4", | |
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", | |
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", | |
- "license": "MIT", | |
- "funding": { | |
- "type": "github", | |
- "url": "https://github.com/sponsors/wooorm" | |
- } | |
} | |
- } | |
} | |
diff --git a/package.json b/package.json | |
index 06b73d00..115edb05 100644 | |
--- a/package.json | |
+++ b/package.json | |
@@ -37,7 +37,7 @@ | |
"@radix-ui/react-slot": "^1.1.2", | |
"@radix-ui/react-switch": "^1.1.3", | |
"@radix-ui/react-tooltip": "^1.1.8", | |
- "@supabase/supabase-js": "^2.49.1", | |
+ "@supabase/supabase-js": "^2.49.4", | |
"@types/asciichart": "^1.5.8", | |
"@types/bun": "^1.2.5", | |
"@types/html-escaper": "^3.0.4", | |
[The command completed with exit code 0.] | |
[Current working directory: /workspace] | |
[Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.12/bin/python] | |
[Command finished with exit code 0] | |
--END AGENT OBSERVATION-- | |
16:51:34 - openhands:INFO: resolve_issue.py:158 - ------------------------------ | |
16:51:34 - openhands:INFO: resolve_issue.py:159 - END Runtime Completion Fn | |
16:51:34 - openhands:INFO: resolve_issue.py:160 - ------------------------------ | |
16:51:34 - openhands:INFO: resolve_issue.py:262 - Got git diff for instance 2567: | |
-------- | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/class-variance-authority": { | |
+ "version": "0.7.1", | |
+ "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", | |
+ "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "clsx": "^2.1.1" | |
+ }, | |
+ "funding": { | |
+ "url": "https://polar.sh/cva" | |
+ } | |
+ }, | |
+ "node_modules/cli-boxes": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", | |
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/cli-table3": { | |
+ "version": "0.6.5", | |
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", | |
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "string-width": "^4.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": "10.* || >= 12.*" | |
+ }, | |
+ "optionalDependencies": { | |
+ "@colors/colors": "1.5.0" | |
+ } | |
+ }, | |
+ "node_modules/client-only": { | |
+ "version": "0.0.1", | |
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", | |
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/cliui": { | |
+ "version": "8.0.1", | |
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", | |
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "string-width": "^4.2.0", | |
+ "strip-ansi": "^6.0.1", | |
+ "wrap-ansi": "^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12" | |
+ } | |
+ }, | |
+ "node_modules/clsx": { | |
+ "version": "2.1.1", | |
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", | |
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/co": { | |
+ "version": "4.6.0", | |
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", | |
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "iojs": ">= 1.0.0", | |
+ "node": ">= 0.12.0" | |
+ } | |
+ }, | |
+ "node_modules/collect-v8-coverage": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", | |
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/color": { | |
+ "version": "4.2.3", | |
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", | |
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "color-convert": "^2.0.1", | |
+ "color-string": "^1.9.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12.5.0" | |
+ } | |
+ }, | |
+ "node_modules/color-convert": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | |
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "color-name": "~1.1.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=7.0.0" | |
+ } | |
+ }, | |
+ "node_modules/color-name": { | |
+ "version": "1.1.4", | |
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | |
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/color-string": { | |
+ "version": "1.9.1", | |
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", | |
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "color-name": "^1.0.0", | |
+ "simple-swizzle": "^0.2.2" | |
+ } | |
+ }, | |
+ "node_modules/colors": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", | |
+ "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.1.90" | |
+ } | |
+ }, | |
+ "node_modules/combined-stream": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | |
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "delayed-stream": "~1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.8" | |
+ } | |
+ }, | |
+ "node_modules/comma-separated-tokens": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", | |
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/commander": { | |
+ "version": "8.3.0", | |
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", | |
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 12" | |
+ } | |
+ }, | |
+ "node_modules/concat-map": { | |
+ "version": "0.0.1", | |
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | |
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/convert-source-map": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", | |
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/core-util-is": { | |
+ "version": "1.0.3", | |
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | |
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/create-jest": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", | |
+ "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jest/types": "^29.6.3", | |
+ "chalk": "^4.0.0", | |
+ "exit": "^0.1.2", | |
+ "graceful-fs": "^4.2.9", | |
+ "jest-config": "^29.7.0", | |
+ "jest-util": "^29.7.0", | |
+ "prompts": "^2.0.1" | |
+ }, | |
+ "bin": { | |
+ "create-jest": "bin/create-jest.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/create-jest/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/cross-fetch": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", | |
+ "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "node-fetch": "^2.7.0" | |
+ } | |
+ }, | |
+ "node_modules/cross-fetch/node_modules/node-fetch": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | |
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "whatwg-url": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "4.x || >=6.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "encoding": "^0.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "encoding": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/cross-spawn": { | |
+ "version": "7.0.6", | |
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", | |
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "path-key": "^3.1.0", | |
+ "shebang-command": "^2.0.0", | |
+ "which": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 8" | |
+ } | |
+ }, | |
+ "node_modules/crypto-js": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", | |
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/cssesc": { | |
+ "version": "3.0.0", | |
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", | |
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "bin": { | |
+ "cssesc": "bin/cssesc" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/csstype": { | |
+ "version": "3.1.3", | |
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | |
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/csv-parse": { | |
+ "version": "5.6.0", | |
+ "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.6.0.tgz", | |
+ "integrity": "sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/damerau-levenshtein": { | |
+ "version": "1.0.8", | |
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", | |
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause" | |
+ }, | |
+ "node_modules/data-uri-to-buffer": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", | |
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 12" | |
+ } | |
+ }, | |
+ "node_modules/data-view-buffer": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", | |
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "is-data-view": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/data-view-byte-length": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", | |
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "is-data-view": "^1.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/inspect-js" | |
+ } | |
+ }, | |
+ "node_modules/data-view-byte-offset": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", | |
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.2", | |
+ "es-errors": "^1.3.0", | |
+ "is-data-view": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/date-fns": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", | |
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/kossnocorp" | |
+ } | |
+ }, | |
+ "node_modules/date-fns-tz": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.2.0.tgz", | |
+ "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", | |
+ "license": "MIT", | |
+ "peerDependencies": { | |
+ "date-fns": "^3.0.0 || ^4.0.0" | |
+ } | |
+ }, | |
+ "node_modules/dayjs": { | |
+ "version": "1.11.13", | |
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", | |
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/debug": { | |
+ "version": "4.3.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "supports-color": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/decode-named-character-reference": { | |
+ "version": "1.0.2", | |
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", | |
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "character-entities": "^2.0.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/decode-named-character-reference/node_modules/character-entities": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", | |
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/decompress-response": { | |
+ "version": "6.0.0", | |
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", | |
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "mimic-response": "^3.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/dedent": { | |
+ "version": "1.5.3", | |
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", | |
+ "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "peerDependencies": { | |
+ "babel-plugin-macros": "^3.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "babel-plugin-macros": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/deep-extend": { | |
+ "version": "0.6.0", | |
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", | |
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4.0.0" | |
+ } | |
+ }, | |
+ "node_modules/deep-is": { | |
+ "version": "0.1.4", | |
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", | |
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/deepmerge": { | |
+ "version": "4.3.1", | |
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", | |
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/define-data-property": { | |
+ "version": "1.1.4", | |
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", | |
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-define-property": "^1.0.0", | |
+ "es-errors": "^1.3.0", | |
+ "gopd": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/define-properties": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", | |
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-data-property": "^1.0.1", | |
+ "has-property-descriptors": "^1.0.0", | |
+ "object-keys": "^1.1.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/delayed-stream": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | |
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.4.0" | |
+ } | |
+ }, | |
+ "node_modules/dequal": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", | |
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/detect-libc": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", | |
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/detect-newline": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", | |
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/detect-node-es": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", | |
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/didyoumean": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", | |
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0" | |
+ }, | |
+ "node_modules/diff": { | |
+ "version": "7.0.0", | |
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", | |
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", | |
+ "license": "BSD-3-Clause", | |
+ "engines": { | |
+ "node": ">=0.3.1" | |
+ } | |
+ }, | |
+ "node_modules/diff-match-patch": { | |
+ "version": "1.0.5", | |
+ "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", | |
+ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", | |
+ "license": "Apache-2.0" | |
+ }, | |
+ "node_modules/diff-sequences": { | |
+ "version": "29.6.3", | |
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", | |
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/dlv": { | |
+ "version": "1.1.3", | |
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", | |
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/doctrine": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", | |
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "esutils": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/dom-serializer": { | |
+ "version": "2.0.0", | |
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", | |
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "domelementtype": "^2.3.0", | |
+ "domhandler": "^5.0.2", | |
+ "entities": "^4.2.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/domelementtype": { | |
+ "version": "2.3.0", | |
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", | |
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/fb55" | |
+ } | |
+ ], | |
+ "license": "BSD-2-Clause" | |
+ }, | |
+ "node_modules/domhandler": { | |
+ "version": "5.0.3", | |
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", | |
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "domelementtype": "^2.3.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/fb55/domhandler?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/domutils": { | |
+ "version": "3.2.2", | |
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", | |
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "dom-serializer": "^2.0.0", | |
+ "domelementtype": "^2.3.0", | |
+ "domhandler": "^5.0.3" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/fb55/domutils?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/dotenv": { | |
+ "version": "16.5.0", | |
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", | |
+ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://dotenvx.com" | |
+ } | |
+ }, | |
+ "node_modules/dunder-proto": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", | |
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind-apply-helpers": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "gopd": "^1.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/eastasianwidth": { | |
+ "version": "0.2.0", | |
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", | |
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/ecdsa-sig-formatter": { | |
+ "version": "1.0.11", | |
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", | |
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "safe-buffer": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/ejs": { | |
+ "version": "3.1.10", | |
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", | |
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "jake": "^10.8.5" | |
+ }, | |
+ "bin": { | |
+ "ejs": "bin/cli.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/electron-to-chromium": { | |
+ "version": "1.5.140", | |
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.140.tgz", | |
+ "integrity": "sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/emittery": { | |
+ "version": "0.13.1", | |
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", | |
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/emoji-regex": { | |
+ "version": "8.0.0", | |
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | |
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/end-of-stream": { | |
+ "version": "1.4.4", | |
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", | |
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "once": "^1.4.0" | |
+ } | |
+ }, | |
+ "node_modules/entities": { | |
+ "version": "4.5.0", | |
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", | |
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=0.12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/fb55/entities?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/error-ex": { | |
+ "version": "1.3.2", | |
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", | |
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "is-arrayish": "^0.2.1" | |
+ } | |
+ }, | |
+ "node_modules/es-abstract": { | |
+ "version": "1.23.9", | |
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", | |
+ "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "array-buffer-byte-length": "^1.0.2", | |
+ "arraybuffer.prototype.slice": "^1.0.4", | |
+ "available-typed-arrays": "^1.0.7", | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "data-view-buffer": "^1.0.2", | |
+ "data-view-byte-length": "^1.0.2", | |
+ "data-view-byte-offset": "^1.0.1", | |
+ "es-define-property": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.0.0", | |
+ "es-set-tostringtag": "^2.1.0", | |
+ "es-to-primitive": "^1.3.0", | |
+ "function.prototype.name": "^1.1.8", | |
+ "get-intrinsic": "^1.2.7", | |
+ "get-proto": "^1.0.0", | |
+ "get-symbol-description": "^1.1.0", | |
+ "globalthis": "^1.0.4", | |
+ "gopd": "^1.2.0", | |
+ "has-property-descriptors": "^1.0.2", | |
+ "has-proto": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "hasown": "^2.0.2", | |
+ "internal-slot": "^1.1.0", | |
+ "is-array-buffer": "^3.0.5", | |
+ "is-callable": "^1.2.7", | |
+ "is-data-view": "^1.0.2", | |
+ "is-regex": "^1.2.1", | |
+ "is-shared-array-buffer": "^1.0.4", | |
+ "is-string": "^1.1.1", | |
+ "is-typed-array": "^1.1.15", | |
+ "is-weakref": "^1.1.0", | |
+ "math-intrinsics": "^1.1.0", | |
+ "object-inspect": "^1.13.3", | |
+ "object-keys": "^1.1.1", | |
+ "object.assign": "^4.1.7", | |
+ "own-keys": "^1.0.1", | |
+ "regexp.prototype.flags": "^1.5.3", | |
+ "safe-array-concat": "^1.1.3", | |
+ "safe-push-apply": "^1.0.0", | |
+ "safe-regex-test": "^1.1.0", | |
+ "set-proto": "^1.0.0", | |
+ "string.prototype.trim": "^1.2.10", | |
+ "string.prototype.trimend": "^1.0.9", | |
+ "string.prototype.trimstart": "^1.0.8", | |
+ "typed-array-buffer": "^1.0.3", | |
+ "typed-array-byte-length": "^1.0.3", | |
+ "typed-array-byte-offset": "^1.0.4", | |
+ "typed-array-length": "^1.0.7", | |
+ "unbox-primitive": "^1.1.0", | |
+ "which-typed-array": "^1.1.18" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/es-define-property": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", | |
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-errors": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", | |
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-iterator-helpers": { | |
+ "version": "1.2.1", | |
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", | |
+ "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "es-abstract": "^1.23.6", | |
+ "es-errors": "^1.3.0", | |
+ "es-set-tostringtag": "^2.0.3", | |
+ "function-bind": "^1.1.2", | |
+ "get-intrinsic": "^1.2.6", | |
+ "globalthis": "^1.0.4", | |
+ "gopd": "^1.2.0", | |
+ "has-property-descriptors": "^1.0.2", | |
+ "has-proto": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "internal-slot": "^1.1.0", | |
+ "iterator.prototype": "^1.1.4", | |
+ "safe-array-concat": "^1.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-object-atoms": { | |
+ "version": "1.1.1", | |
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", | |
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-set-tostringtag": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", | |
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "es-errors": "^1.3.0", | |
+ "get-intrinsic": "^1.2.6", | |
+ "has-tostringtag": "^1.0.2", | |
+ "hasown": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-shim-unscopables": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", | |
+ "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "hasown": "^2.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/es-to-primitive": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", | |
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-callable": "^1.2.7", | |
+ "is-date-object": "^1.0.5", | |
+ "is-symbol": "^1.0.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/escalade": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", | |
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/escape-string-regexp": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", | |
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=12" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint": { | |
+ "version": "9.25.1", | |
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", | |
+ "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@eslint-community/eslint-utils": "^4.2.0", | |
+ "@eslint-community/regexpp": "^4.12.1", | |
+ "@eslint/config-array": "^0.20.0", | |
+ "@eslint/config-helpers": "^0.2.1", | |
+ "@eslint/core": "^0.13.0", | |
+ "@eslint/eslintrc": "^3.3.1", | |
+ "@eslint/js": "9.25.1", | |
+ "@eslint/plugin-kit": "^0.2.8", | |
+ "@humanfs/node": "^0.16.6", | |
+ "@humanwhocodes/module-importer": "^1.0.1", | |
+ "@humanwhocodes/retry": "^0.4.2", | |
+ "@types/estree": "^1.0.6", | |
+ "@types/json-schema": "^7.0.15", | |
+ "ajv": "^6.12.4", | |
+ "chalk": "^4.0.0", | |
+ "cross-spawn": "^7.0.6", | |
+ "debug": "^4.3.2", | |
+ "escape-string-regexp": "^4.0.0", | |
+ "eslint-scope": "^8.3.0", | |
+ "eslint-visitor-keys": "^4.2.0", | |
+ "espree": "^10.3.0", | |
+ "esquery": "^1.5.0", | |
+ "esutils": "^2.0.2", | |
+ "fast-deep-equal": "^3.1.3", | |
+ "file-entry-cache": "^8.0.0", | |
+ "find-up": "^5.0.0", | |
+ "glob-parent": "^6.0.2", | |
+ "ignore": "^5.2.0", | |
+ "imurmurhash": "^0.1.4", | |
+ "is-glob": "^4.0.0", | |
+ "json-stable-stringify-without-jsonify": "^1.0.1", | |
+ "lodash.merge": "^4.6.2", | |
+ "minimatch": "^3.1.2", | |
+ "natural-compare": "^1.4.0", | |
+ "optionator": "^0.9.3" | |
+ }, | |
+ "bin": { | |
+ "eslint": "bin/eslint.js" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://eslint.org/donate" | |
+ }, | |
+ "peerDependencies": { | |
+ "jiti": "*" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "jiti": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-config-next": { | |
+ "version": "15.3.1", | |
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.3.1.tgz", | |
+ "integrity": "sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@next/eslint-plugin-next": "15.3.1", | |
+ "@rushstack/eslint-patch": "^1.10.3", | |
+ "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", | |
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", | |
+ "eslint-import-resolver-node": "^0.3.6", | |
+ "eslint-import-resolver-typescript": "^3.5.2", | |
+ "eslint-plugin-import": "^2.31.0", | |
+ "eslint-plugin-jsx-a11y": "^6.10.0", | |
+ "eslint-plugin-react": "^7.37.0", | |
+ "eslint-plugin-react-hooks": "^5.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", | |
+ "typescript": ">=3.3.1" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "typescript": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-node": { | |
+ "version": "0.3.9", | |
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", | |
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "debug": "^3.2.7", | |
+ "is-core-module": "^2.13.0", | |
+ "resolve": "^1.22.4" | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-node/node_modules/debug": { | |
+ "version": "3.2.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | |
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-typescript": { | |
+ "version": "3.10.1", | |
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", | |
+ "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "@nolyfill/is-core-module": "1.0.39", | |
+ "debug": "^4.4.0", | |
+ "get-tsconfig": "^4.10.0", | |
+ "is-bun-module": "^2.0.0", | |
+ "stable-hash": "^0.0.5", | |
+ "tinyglobby": "^0.2.13", | |
+ "unrs-resolver": "^1.6.2" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.18.0 || >=16.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint-import-resolver-typescript" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "*", | |
+ "eslint-plugin-import": "*", | |
+ "eslint-plugin-import-x": "*" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "eslint-plugin-import": { | |
+ "optional": true | |
+ }, | |
+ "eslint-plugin-import-x": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-import-resolver-typescript/node_modules/debug": { | |
+ "version": "4.4.0", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", | |
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=6.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "supports-color": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-module-utils": { | |
+ "version": "2.12.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", | |
+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "debug": "^3.2.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "eslint": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/eslint-module-utils/node_modules/debug": { | |
+ "version": "3.2.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | |
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-import": { | |
+ "version": "2.31.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", | |
+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@rtsao/scc": "^1.1.0", | |
+ "array-includes": "^3.1.8", | |
+ "array.prototype.findlastindex": "^1.2.5", | |
+ "array.prototype.flat": "^1.3.2", | |
+ "array.prototype.flatmap": "^1.3.2", | |
+ "debug": "^3.2.7", | |
+ "doctrine": "^2.1.0", | |
+ "eslint-import-resolver-node": "^0.3.9", | |
+ "eslint-module-utils": "^2.12.0", | |
+ "hasown": "^2.0.2", | |
+ "is-core-module": "^2.15.1", | |
+ "is-glob": "^4.0.3", | |
+ "minimatch": "^3.1.2", | |
+ "object.fromentries": "^2.0.8", | |
+ "object.groupby": "^1.0.3", | |
+ "object.values": "^1.2.0", | |
+ "semver": "^6.3.1", | |
+ "string.prototype.trimend": "^1.0.8", | |
+ "tsconfig-paths": "^3.15.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-import/node_modules/debug": { | |
+ "version": "3.2.7", | |
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | |
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ms": "^2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-jsx-a11y": { | |
+ "version": "6.10.2", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", | |
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "aria-query": "^5.3.2", | |
+ "array-includes": "^3.1.8", | |
+ "array.prototype.flatmap": "^1.3.2", | |
+ "ast-types-flow": "^0.0.8", | |
+ "axe-core": "^4.10.0", | |
+ "axobject-query": "^4.1.0", | |
+ "damerau-levenshtein": "^1.0.8", | |
+ "emoji-regex": "^9.2.2", | |
+ "hasown": "^2.0.2", | |
+ "jsx-ast-utils": "^3.3.5", | |
+ "language-tags": "^1.0.9", | |
+ "minimatch": "^3.1.2", | |
+ "object.fromentries": "^2.0.8", | |
+ "safe-regex-test": "^1.0.3", | |
+ "string.prototype.includes": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { | |
+ "version": "9.2.2", | |
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", | |
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/eslint-plugin-react": { | |
+ "version": "7.37.5", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", | |
+ "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "array-includes": "^3.1.8", | |
+ "array.prototype.findlast": "^1.2.5", | |
+ "array.prototype.flatmap": "^1.3.3", | |
+ "array.prototype.tosorted": "^1.1.4", | |
+ "doctrine": "^2.1.0", | |
+ "es-iterator-helpers": "^1.2.1", | |
+ "estraverse": "^5.3.0", | |
+ "hasown": "^2.0.2", | |
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0", | |
+ "minimatch": "^3.1.2", | |
+ "object.entries": "^1.1.9", | |
+ "object.fromentries": "^2.0.8", | |
+ "object.values": "^1.2.1", | |
+ "prop-types": "^15.8.1", | |
+ "resolve": "^2.0.0-next.5", | |
+ "semver": "^6.3.1", | |
+ "string.prototype.matchall": "^4.0.12", | |
+ "string.prototype.repeat": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-react-hooks": { | |
+ "version": "5.2.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", | |
+ "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "peerDependencies": { | |
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" | |
+ } | |
+ }, | |
+ "node_modules/eslint-plugin-react/node_modules/resolve": { | |
+ "version": "2.0.0-next.5", | |
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", | |
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-core-module": "^2.13.0", | |
+ "path-parse": "^1.0.7", | |
+ "supports-preserve-symlinks-flag": "^1.0.0" | |
+ }, | |
+ "bin": { | |
+ "resolve": "bin/resolve" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/eslint-scope": { | |
+ "version": "8.3.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", | |
+ "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "esrecurse": "^4.3.0", | |
+ "estraverse": "^5.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/eslint-visitor-keys": { | |
+ "version": "3.4.3", | |
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", | |
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/chalk": { | |
+ "version": "4.1.2", | |
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | |
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "ansi-styles": "^4.1.0", | |
+ "supports-color": "^7.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/chalk/chalk?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/escape-string-regexp": { | |
+ "version": "4.0.0", | |
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", | |
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/eslint-visitor-keys": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", | |
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/find-up": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", | |
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "locate-path": "^6.0.0", | |
+ "path-exists": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/locate-path": { | |
+ "version": "6.0.0", | |
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", | |
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "p-locate": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/p-limit": { | |
+ "version": "3.1.0", | |
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", | |
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "yocto-queue": "^0.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/p-locate": { | |
+ "version": "5.0.0", | |
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", | |
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "p-limit": "^3.0.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/eslint/node_modules/yocto-queue": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", | |
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/esm-env": { | |
+ "version": "1.1.4", | |
+ "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz", | |
+ "integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==", | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/espree": { | |
+ "version": "10.3.0", | |
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", | |
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "acorn": "^8.14.0", | |
+ "acorn-jsx": "^5.3.2", | |
+ "eslint-visitor-keys": "^4.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/espree/node_modules/eslint-visitor-keys": { | |
+ "version": "4.2.0", | |
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", | |
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "engines": { | |
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://opencollective.com/eslint" | |
+ } | |
+ }, | |
+ "node_modules/esprima": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | |
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "peer": true, | |
+ "bin": { | |
+ "esparse": "bin/esparse.js", | |
+ "esvalidate": "bin/esvalidate.js" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4" | |
+ } | |
+ }, | |
+ "node_modules/esquery": { | |
+ "version": "1.6.0", | |
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", | |
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", | |
+ "dev": true, | |
+ "license": "BSD-3-Clause", | |
+ "dependencies": { | |
+ "estraverse": "^5.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.10" | |
+ } | |
+ }, | |
+ "node_modules/esrap": { | |
+ "version": "1.2.2", | |
+ "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz", | |
+ "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==", | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "@jridgewell/sourcemap-codec": "^1.4.15", | |
+ "@types/estree": "^1.0.1" | |
+ } | |
+ }, | |
+ "node_modules/esrecurse": { | |
+ "version": "4.3.0", | |
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", | |
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "dependencies": { | |
+ "estraverse": "^5.2.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ } | |
+ }, | |
+ "node_modules/estraverse": { | |
+ "version": "5.3.0", | |
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", | |
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ } | |
+ }, | |
+ "node_modules/estree-walker": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", | |
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", | |
+ "license": "MIT", | |
+ "peer": true | |
+ }, | |
+ "node_modules/esutils": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", | |
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", | |
+ "dev": true, | |
+ "license": "BSD-2-Clause", | |
+ "engines": { | |
+ "node": ">=0.10.0" | |
+ } | |
+ }, | |
+ "node_modules/event-target-shim": { | |
+ "version": "5.0.1", | |
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", | |
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/events": { | |
+ "version": "3.3.0", | |
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", | |
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=0.8.x" | |
+ } | |
+ }, | |
+ "node_modules/eventsource-parser": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-1.1.2.tgz", | |
+ "integrity": "sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=14.18" | |
+ } | |
+ }, | |
+ "node_modules/execa": { | |
+ "version": "5.1.1", | |
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", | |
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "cross-spawn": "^7.0.3", | |
+ "get-stream": "^6.0.0", | |
+ "human-signals": "^2.1.0", | |
+ "is-stream": "^2.0.0", | |
+ "merge-stream": "^2.0.0", | |
+ "npm-run-path": "^4.0.1", | |
+ "onetime": "^5.1.2", | |
+ "signal-exit": "^3.0.3", | |
+ "strip-final-newline": "^2.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sindresorhus/execa?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/exit": { | |
+ "version": "0.1.2", | |
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", | |
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", | |
+ "dev": true, | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">= 0.8.0" | |
+ } | |
+ }, | |
+ "node_modules/expand-template": { | |
+ "version": "2.0.3", | |
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", | |
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", | |
+ "license": "(MIT OR WTFPL)", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/expect": { | |
+ "version": "29.7.0", | |
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", | |
+ "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@jest/expect-utils": "^29.7.0", | |
+ "jest-get-type": "^29.6.3", | |
+ "jest-matcher-utils": "^29.7.0", | |
+ "jest-message-util": "^29.7.0", | |
+ "jest-util": "^29.7.0" | |
+ }, | |
+ "engines": { | |
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" | |
+ } | |
+ }, | |
+ "node_modules/extend": { | |
+ "version": "3.0.2", | |
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | |
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fast-deep-equal": { | |
+ "version": "3.1.3", | |
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | |
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fast-glob": { | |
+ "version": "3.3.2", | |
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", | |
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "@nodelib/fs.stat": "^2.0.2", | |
+ "@nodelib/fs.walk": "^1.2.3", | |
+ "glob-parent": "^5.1.2", | |
+ "merge2": "^1.3.0", | |
+ "micromatch": "^4.0.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8.6.0" | |
+ } | |
+ }, | |
+ "node_modules/fast-glob/node_modules/glob-parent": { | |
+ "version": "5.1.2", | |
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", | |
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "is-glob": "^4.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/fast-json-stable-stringify": { | |
+ "version": "2.1.0", | |
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | |
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fast-levenshtein": { | |
+ "version": "2.0.6", | |
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", | |
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fastq": { | |
+ "version": "1.17.1", | |
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", | |
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "reusify": "^1.0.4" | |
+ } | |
+ }, | |
+ "node_modules/fault": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", | |
+ "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "format": "^0.2.0" | |
+ }, | |
+ "funding": { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/wooorm" | |
+ } | |
+ }, | |
+ "node_modules/fb-watchman": { | |
+ "version": "2.0.2", | |
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", | |
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "bser": "2.1.1" | |
+ } | |
+ }, | |
+ "node_modules/fetch-blob": { | |
+ "version": "3.2.0", | |
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", | |
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "github", | |
+ "url": "https://github.com/sponsors/jimmywarting" | |
+ }, | |
+ { | |
+ "type": "paypal", | |
+ "url": "https://paypal.me/jimmywarting" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "node-domexception": "^1.0.0", | |
+ "web-streams-polyfill": "^3.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": "^12.20 || >= 14.13" | |
+ } | |
+ }, | |
+ "node_modules/fetch-blob/node_modules/web-streams-polyfill": { | |
+ "version": "3.3.3", | |
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", | |
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 8" | |
+ } | |
+ }, | |
+ "node_modules/file-entry-cache": { | |
+ "version": "8.0.0", | |
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", | |
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "flat-cache": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16.0.0" | |
+ } | |
+ }, | |
+ "node_modules/filelist": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", | |
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", | |
+ "dev": true, | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "minimatch": "^5.0.1" | |
+ } | |
+ }, | |
+ "node_modules/filelist/node_modules/brace-expansion": { | |
+ "version": "2.0.1", | |
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", | |
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "balanced-match": "^1.0.0" | |
+ } | |
+ }, | |
+ "node_modules/filelist/node_modules/minimatch": { | |
+ "version": "5.1.6", | |
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", | |
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "brace-expansion": "^2.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10" | |
+ } | |
+ }, | |
+ "node_modules/fill-range": { | |
+ "version": "7.1.1", | |
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", | |
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "to-regex-range": "^5.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/find-up": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", | |
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "locate-path": "^5.0.0", | |
+ "path-exists": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=8" | |
+ } | |
+ }, | |
+ "node_modules/flat-cache": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", | |
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "flatted": "^3.2.9", | |
+ "keyv": "^4.5.4" | |
+ }, | |
+ "engines": { | |
+ "node": ">=16" | |
+ } | |
+ }, | |
+ "node_modules/flatted": { | |
+ "version": "3.3.3", | |
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", | |
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", | |
+ "dev": true, | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/follow-redirects": { | |
+ "version": "1.15.9", | |
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", | |
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", | |
+ "funding": [ | |
+ { | |
+ "type": "individual", | |
+ "url": "https://github.com/sponsors/RubenVerborgh" | |
+ } | |
+ ], | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=4.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "debug": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/for-each": { | |
+ "version": "0.3.5", | |
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", | |
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "is-callable": "^1.2.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/foreground-child": { | |
+ "version": "3.3.0", | |
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", | |
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "cross-spawn": "^7.0.0", | |
+ "signal-exit": "^4.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/foreground-child/node_modules/signal-exit": { | |
+ "version": "4.1.0", | |
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", | |
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "engines": { | |
+ "node": ">=14" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/form-data": { | |
+ "version": "4.0.1", | |
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", | |
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "asynckit": "^0.4.0", | |
+ "combined-stream": "^1.0.8", | |
+ "mime-types": "^2.1.12" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 6" | |
+ } | |
+ }, | |
+ "node_modules/form-data-encoder": { | |
+ "version": "1.7.2", | |
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", | |
+ "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/format": { | |
+ "version": "0.2.2", | |
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", | |
+ "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", | |
+ "engines": { | |
+ "node": ">=0.4.x" | |
+ } | |
+ }, | |
+ "node_modules/formdata-node": { | |
+ "version": "4.4.1", | |
+ "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", | |
+ "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "node-domexception": "1.0.0", | |
+ "web-streams-polyfill": "4.0.0-beta.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 12.20" | |
+ } | |
+ }, | |
+ "node_modules/formdata-polyfill": { | |
+ "version": "4.0.10", | |
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", | |
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "fetch-blob": "^3.1.2" | |
+ }, | |
+ "engines": { | |
+ "node": ">=12.20.0" | |
+ } | |
+ }, | |
+ "node_modules/fraction.js": { | |
+ "version": "4.3.7", | |
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", | |
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": "*" | |
+ }, | |
+ "funding": { | |
+ "type": "patreon", | |
+ "url": "https://github.com/sponsors/rawify" | |
+ } | |
+ }, | |
+ "node_modules/framer-motion": { | |
+ "version": "11.18.2", | |
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", | |
+ "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "motion-dom": "^11.18.1", | |
+ "motion-utils": "^11.18.1", | |
+ "tslib": "^2.4.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "@emotion/is-prop-valid": "*", | |
+ "react": "^18.0.0 || ^19.0.0", | |
+ "react-dom": "^18.0.0 || ^19.0.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "@emotion/is-prop-valid": { | |
+ "optional": true | |
+ }, | |
+ "react": { | |
+ "optional": true | |
+ }, | |
+ "react-dom": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/fs-constants": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", | |
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/fs.realpath": { | |
+ "version": "1.0.0", | |
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | |
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true | |
+ }, | |
+ "node_modules/fsevents": { | |
+ "version": "2.3.3", | |
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", | |
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", | |
+ "dev": true, | |
+ "hasInstallScript": true, | |
+ "license": "MIT", | |
+ "optional": true, | |
+ "os": [ | |
+ "darwin" | |
+ ], | |
+ "engines": { | |
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" | |
+ } | |
+ }, | |
+ "node_modules/function-bind": { | |
+ "version": "1.1.2", | |
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", | |
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/function.prototype.name": { | |
+ "version": "1.1.8", | |
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", | |
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind": "^1.0.8", | |
+ "call-bound": "^1.0.3", | |
+ "define-properties": "^1.2.1", | |
+ "functions-have-names": "^1.2.3", | |
+ "hasown": "^2.0.2", | |
+ "is-callable": "^1.2.7" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/functions-have-names": { | |
+ "version": "1.2.3", | |
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", | |
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/gaxios": { | |
+ "version": "6.7.1", | |
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", | |
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "extend": "^3.0.2", | |
+ "https-proxy-agent": "^7.0.1", | |
+ "is-stream": "^2.0.0", | |
+ "node-fetch": "^2.6.9", | |
+ "uuid": "^9.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/gaxios/node_modules/node-fetch": { | |
+ "version": "2.7.0", | |
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | |
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "whatwg-url": "^5.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "4.x || >=6.0.0" | |
+ }, | |
+ "peerDependencies": { | |
+ "encoding": "^0.1.0" | |
+ }, | |
+ "peerDependenciesMeta": { | |
+ "encoding": { | |
+ "optional": true | |
+ } | |
+ } | |
+ }, | |
+ "node_modules/gaxios/node_modules/uuid": { | |
+ "version": "9.0.1", | |
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", | |
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", | |
+ "funding": [ | |
+ "https://github.com/sponsors/broofa", | |
+ "https://github.com/sponsors/ctavan" | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "uuid": "dist/bin/uuid" | |
+ } | |
+ }, | |
+ "node_modules/gcp-metadata": { | |
+ "version": "6.1.0", | |
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", | |
+ "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "gaxios": "^6.0.0", | |
+ "json-bigint": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/geist": { | |
+ "version": "1.3.1", | |
+ "resolved": "https://registry.npmjs.org/geist/-/geist-1.3.1.tgz", | |
+ "integrity": "sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==", | |
+ "license": "SIL OPEN FONT LICENSE", | |
+ "peerDependencies": { | |
+ "next": ">=13.2.0" | |
+ } | |
+ }, | |
+ "node_modules/gensync": { | |
+ "version": "1.0.0-beta.2", | |
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", | |
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=6.9.0" | |
+ } | |
+ }, | |
+ "node_modules/geolib": { | |
+ "version": "3.3.4", | |
+ "resolved": "https://registry.npmjs.org/geolib/-/geolib-3.3.4.tgz", | |
+ "integrity": "sha512-EicrlLLL3S42gE9/wde+11uiaYAaeSVDwCUIv2uMIoRBfNJCn8EsSI+6nS3r4TCKDO6+RQNM9ayLq2at+oZQWQ==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/get-caller-file": { | |
+ "version": "2.0.5", | |
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", | |
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": "6.* || 8.* || >= 10.*" | |
+ } | |
+ }, | |
+ "node_modules/get-east-asian-width": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", | |
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/get-intrinsic": { | |
+ "version": "1.3.0", | |
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", | |
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bind-apply-helpers": "^1.0.2", | |
+ "es-define-property": "^1.0.1", | |
+ "es-errors": "^1.3.0", | |
+ "es-object-atoms": "^1.1.1", | |
+ "function-bind": "^1.1.2", | |
+ "get-proto": "^1.0.1", | |
+ "gopd": "^1.2.0", | |
+ "has-symbols": "^1.1.0", | |
+ "hasown": "^2.0.2", | |
+ "math-intrinsics": "^1.1.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/get-nonce": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", | |
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=6" | |
+ } | |
+ }, | |
+ "node_modules/get-package-type": { | |
+ "version": "0.1.0", | |
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", | |
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=8.0.0" | |
+ } | |
+ }, | |
+ "node_modules/get-proto": { | |
+ "version": "1.0.1", | |
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", | |
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "dunder-proto": "^1.0.1", | |
+ "es-object-atoms": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ } | |
+ }, | |
+ "node_modules/get-stream": { | |
+ "version": "6.0.1", | |
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", | |
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "peer": true, | |
+ "engines": { | |
+ "node": ">=10" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/get-symbol-description": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", | |
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "call-bound": "^1.0.3", | |
+ "es-errors": "^1.3.0", | |
+ "get-intrinsic": "^1.2.6" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/get-tsconfig": { | |
+ "version": "4.10.0", | |
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", | |
+ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "resolve-pkg-maps": "^1.0.0" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" | |
+ } | |
+ }, | |
+ "node_modules/github-from-package": { | |
+ "version": "0.0.0", | |
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", | |
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/glob": { | |
+ "version": "7.2.3", | |
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", | |
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", | |
+ "deprecated": "Glob versions prior to v9 are no longer supported", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "peer": true, | |
+ "dependencies": { | |
+ "fs.realpath": "^1.0.0", | |
+ "inflight": "^1.0.4", | |
+ "inherits": "2", | |
+ "minimatch": "^3.1.1", | |
+ "once": "^1.3.0", | |
+ "path-is-absolute": "^1.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": "*" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/isaacs" | |
+ } | |
+ }, | |
+ "node_modules/glob-parent": { | |
+ "version": "6.0.2", | |
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", | |
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", | |
+ "dev": true, | |
+ "license": "ISC", | |
+ "dependencies": { | |
+ "is-glob": "^4.0.3" | |
+ }, | |
+ "engines": { | |
+ "node": ">=10.13.0" | |
+ } | |
+ }, | |
+ "node_modules/globals": { | |
+ "version": "16.0.0", | |
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", | |
+ "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">=18" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/sindresorhus" | |
+ } | |
+ }, | |
+ "node_modules/globalthis": { | |
+ "version": "1.0.4", | |
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", | |
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", | |
+ "dev": true, | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "define-properties": "^1.2.1", | |
+ "gopd": "^1.0.1" | |
+ }, | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/google-auth-library": { | |
+ "version": "9.15.1", | |
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", | |
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "base64-js": "^1.3.0", | |
+ "ecdsa-sig-formatter": "^1.0.11", | |
+ "gaxios": "^6.1.1", | |
+ "gcp-metadata": "^6.1.0", | |
+ "gtoken": "^7.0.0", | |
+ "jws": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14" | |
+ } | |
+ }, | |
+ "node_modules/googleapis": { | |
+ "version": "144.0.0", | |
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-144.0.0.tgz", | |
+ "integrity": "sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "google-auth-library": "^9.0.0", | |
+ "googleapis-common": "^7.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/googleapis-common": { | |
+ "version": "7.2.0", | |
+ "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", | |
+ "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", | |
+ "license": "Apache-2.0", | |
+ "dependencies": { | |
+ "extend": "^3.0.2", | |
+ "gaxios": "^6.0.3", | |
+ "google-auth-library": "^9.7.0", | |
+ "qs": "^6.7.0", | |
+ "url-template": "^2.0.8", | |
+ "uuid": "^9.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/googleapis-common/node_modules/uuid": { | |
+ "version": "9.0.1", | |
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", | |
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", | |
+ "funding": [ | |
+ "https://github.com/sponsors/broofa", | |
+ "https://github.com/sponsors/ctavan" | |
+ ], | |
+ "license": "MIT", | |
+ "bin": { | |
+ "uuid": "dist/bin/uuid" | |
+ } | |
+ }, | |
+ "node_modules/gopd": { | |
+ "version": "1.2.0", | |
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", | |
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", | |
+ "license": "MIT", | |
+ "engines": { | |
+ "node": ">= 0.4" | |
+ }, | |
+ "funding": { | |
+ "url": "https://github.com/sponsors/ljharb" | |
+ } | |
+ }, | |
+ "node_modules/gpt-tokenizer": { | |
+ "version": "2.9.0", | |
+ "resolved": "https://registry.npmjs.org/gpt-tokenizer/-/gpt-tokenizer-2.9.0.tgz", | |
+ "integrity": "sha512-YSpexBL/k4bfliAzMrRqn3M6+it02LutVyhVpDeMKrC/O9+pCe/5s8U2hYKa2vFLD5/vHhsKc8sOn/qGqII8Kg==", | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/graceful-fs": { | |
+ "version": "4.2.11", | |
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", | |
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", | |
+ "license": "ISC" | |
+ }, | |
+ "node_modules/graphemer": { | |
+ "version": "1.4.0", | |
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", | |
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", | |
+ "dev": true, | |
+ "license": "MIT" | |
+ }, | |
+ "node_modules/gtoken": { | |
+ "version": "7.1.0", | |
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", | |
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "gaxios": "^6.0.0", | |
+ "jws": "^4.0.0" | |
+ }, | |
+ "engines": { | |
+ "node": ">=14.0.0" | |
+ } | |
+ }, | |
+ "node_modules/handlebars": { | |
+ "version": "4.7.8", | |
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", | |
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", | |
+ "license": "MIT", | |
+ "dependencies": { | |
+ "minimist": "^1.2.5", | |
+ "neo-async": "^2.6.2", | |
+ "source-map": "^0.6.1", | |
+ "wordwrap": "^1.0.0" | |
+ }, | |
+ "bin": { | |
+ "handlebars": "bin/handlebars" | |
+ }, | |
+ "engines": { | |
+ "node": ">=0.4.7" | |
+ }, | |
+ "optionalDependencies": { | |
+ "uglify-js": "^3.1.4" | |
+ } | |
+ }, | |
+ "node_modules/has-bigints": { | |
+ "version": "1.1.0", | |
+ "resolved": "https://registry.npmjs.org/has-bigints/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment