├── assets
├── architecture.png
└── prisma-meetup.jpg
├── api
├── prisma
│ ├── migrations
│ │ ├── migration_lock.toml
│ │ └── 20210928034429_init
│ │ │ └── migration.sql
│ └── schema.prisma
├── local.settings.json
├── .funcignore
├── tsconfig.json
├── host.json
├── .env.template
├── .gitignore
├── package.json
├── src
│ └── functions
│ │ ├── graphql.ts
│ │ └── rest.ts
└── package-lock.json
├── .vscode
├── launch.json
├── settings.json
└── tasks.json
├── docker-compose.yml
├── test.http
├── LICENSE.md
├── client
├── index.html
├── client-rest.html
└── client-graphql.html
├── azure-deploy.sh
├── .github
└── workflows
│ └── azure-static-web-apps.yml.sample
├── azure-deploy.arm.json
├── CONTRIBUTING.md
├── .gitignore
└── README.md
/assets/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure-Samples/azure-sql-db-prisma/HEAD/assets/architecture.png
--------------------------------------------------------------------------------
/assets/prisma-meetup.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure-Samples/azure-sql-db-prisma/HEAD/assets/prisma-meetup.jpg
--------------------------------------------------------------------------------
/api/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (i.e. Git)
3 | provider = "mssql"
--------------------------------------------------------------------------------
/api/local.settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IsEncrypted": false,
3 | "Values": {
4 | "FUNCTIONS_WORKER_RUNTIME": "node",
5 | "AzureWebJobsStorage": "UseDevelopmentStorage=true"
6 | }
7 | }
--------------------------------------------------------------------------------
/api/.funcignore:
--------------------------------------------------------------------------------
1 | *.js.map
2 | *.ts
3 | .git*
4 | .vscode
5 | local.settings.json
6 | test
7 | getting_started.md
8 | node_modules/@types/
9 | node_modules/azure-functions-core-tools/
10 | node_modules/typescript/
--------------------------------------------------------------------------------
/api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es6",
5 | "outDir": "dist",
6 | "rootDir": ".",
7 | "sourceMap": true,
8 | "strict": false
9 | }
10 | }
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to Node Functions",
6 | "type": "node",
7 | "request": "attach",
8 | "port": 9229,
9 | "preLaunchTask": "func: host start"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/api/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0",
3 | "logging": {
4 | "applicationInsights": {
5 | "samplingSettings": {
6 | "isEnabled": true,
7 | "excludedTypes": "Request"
8 | }
9 | }
10 | },
11 | "extensionBundle": {
12 | "id": "Microsoft.Azure.Functions.ExtensionBundle",
13 | "version": "[4.*, 5.0.0)"
14 | }
15 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.deploySubpath": "api",
3 | "azureFunctions.postDeployTask": "npm install",
4 | "azureFunctions.projectLanguage": "JavaScript",
5 | "azureFunctions.projectRuntime": "~2",
6 | "debug.internalConsoleOptions": "neverOpen",
7 | "azureFunctions.preDeployTask": "npm prune",
8 | "liveServer.settings.proxy": {
9 | "enable": true,
10 | "baseUri": "/api/todo/",
11 | "proxyUri": "http://localhost:7071/api/todo/"
12 | }
13 | }
--------------------------------------------------------------------------------
/api/prisma/migrations/20210928034429_init/migration.sql:
--------------------------------------------------------------------------------
1 | BEGIN TRY
2 |
3 | BEGIN TRAN;
4 |
5 | -- CreateTable
6 | CREATE TABLE [dbo].[Todo] (
7 | [id] INT NOT NULL IDENTITY(1,1),
8 | [todo] NVARCHAR(100) NOT NULL,
9 | [completed] BIT NOT NULL CONSTRAINT [Todo_completed_df] DEFAULT 0,
10 | [ownerId] VARCHAR(128) NOT NULL,
11 | CONSTRAINT [Todo_pkey] PRIMARY KEY ([id])
12 | );
13 |
14 | COMMIT TRAN;
15 |
16 | END TRY
17 | BEGIN CATCH
18 |
19 | IF @@TRANCOUNT > 0
20 | BEGIN
21 | ROLLBACK TRAN;
22 | END;
23 | THROW
24 |
25 | END CATCH
26 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | # https://hub.docker.com/_/microsoft-mssql-server
2 | # https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash
3 |
4 | version: '3'
5 | services:
6 | sqlserver:
7 | image: mcr.microsoft.com/mssql/server:2025-latest
8 | restart: always
9 | ports:
10 | - '1433:1433'
11 | environment:
12 | # Username is 'SA'
13 | SA_PASSWORD: 'Prisma1234'
14 | ACCEPT_EULA: 'Y'
15 | volumes:
16 | - sqlserver:/var/opt/mssql
17 | volumes:
18 | sqlserver:
19 |
--------------------------------------------------------------------------------
/api/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | // This is your Prisma schema file,
2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema
3 |
4 | datasource db {
5 | provider = "sqlserver"
6 | url = env("DATABASE_URL")
7 | shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
8 | }
9 |
10 | generator client {
11 | provider = "prisma-client-js"
12 | }
13 |
14 | model Todo {
15 | id Int @id @default(autoincrement())
16 | todo String @db.NVarChar(100)
17 | completed Boolean @default(false)
18 | ownerId String @db.VarChar(128)
19 | }
20 |
--------------------------------------------------------------------------------
/api/.env.template:
--------------------------------------------------------------------------------
1 |
2 | # Template URL for Azure SQL
3 | # DATABASE_URL="sqlserver://DB_SERVER_NAME.database.windows.net:1433;database=DB_NAME;user=DB_USER@DB_SERVER_NAME;password={PASSWORD};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"
4 | # SHADOW_DATABASE_URL="sqlserver://DB_SERVER_NAME.database.windows.net:1433;database=DB_NAME;user=DB_USER@DB_SERVER_NAME;password={PASSWORD};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"
5 |
6 | # Template URL for SQL Sever
7 | DATABASE_URL=sqlserver://localhost:1433;database=prisma-demo;user=SA;password=Prisma1234;trustServerCertificate=true;encrypt=true
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "func",
6 | "command": "host start",
7 | "problemMatcher": "$func-watch",
8 | "isBackground": true,
9 | "dependsOn": "npm install",
10 | "options": {
11 | "cwd": "${workspaceFolder}/api"
12 | }
13 | },
14 | {
15 | "type": "shell",
16 | "label": "npm install",
17 | "command": "npm install",
18 | "options": {
19 | "cwd": "${workspaceFolder}/api"
20 | }
21 | },
22 | {
23 | "type": "shell",
24 | "label": "npm prune",
25 | "command": "npm prune --production",
26 | "problemMatcher": [],
27 | "options": {
28 | "cwd": "${workspaceFolder}/api"
29 | }
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/api/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | obj
3 | csx
4 | .vs
5 | edge
6 | Publish
7 |
8 | *.user
9 | *.suo
10 | *.cscfg
11 | *.Cache
12 | project.lock.json
13 |
14 | /packages
15 | /TestResults
16 |
17 | /tools/NuGet.exe
18 | /App_Data
19 | /secrets
20 | /data
21 | .secrets
22 | appsettings.json
23 | local.settings.json
24 |
25 | node_modules
26 | dist
27 |
28 | # Local python packages
29 | .python_packages/
30 |
31 | # Python Environments
32 | .env
33 | .venv
34 | env/
35 | venv/
36 | ENV/
37 | env.bak/
38 | venv.bak/
39 |
40 | # Byte-compiled / optimized / DLL files
41 | __pycache__/
42 | *.py[cod]
43 | *$py.class
44 |
45 | # Azurite artifacts
46 | __blobstorage__
47 | __queuestorage__
48 | __azurite_db*__.json
49 |
50 | # Custom
51 | .env
--------------------------------------------------------------------------------
/test.http:
--------------------------------------------------------------------------------
1 | ### REST
2 |
3 | GET http://localhost:7071/api/todo
4 |
5 | ###
6 |
7 | GET http://localhost:7071/api/todo/7
8 |
9 | ###
10 |
11 | PUT http://localhost:7071/api/todo/12
12 |
13 | {
14 | "completed": true
15 | }
16 |
17 | ###
18 |
19 | POST http://localhost:7071/api/todo
20 |
21 | {
22 | "title": "New Item",
23 | "completed": false,
24 | "ownerId": "anonymous"
25 | }
26 |
27 | ### GraphQL
28 |
29 | POST http://localhost:7071/api/todo/graphql
30 |
31 | {"query":"query { todoList { id, title, completed } }"}
32 |
33 | ###
34 |
35 | POST http://localhost:7071/api/todo/graphql
36 |
37 | {"query": "mutation { addTodo(title: \"Test Add\") {id, title, completed } }"}
--------------------------------------------------------------------------------
/api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mssql-prisma-demo",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "dist/src/functions/*.js",
6 | "scripts": {
7 | "build": "tsc",
8 | "watch": "tsc -w",
9 | "clean": "rimraf dist",
10 | "prestart": "npm run clean && npm run build",
11 | "start": "func start",
12 | "db:push": "prisma db push"
13 | },
14 | "dependencies": {
15 | "@apollo/server": "^5.0.0",
16 | "@azure/functions": "4.8.0",
17 | "@prisma/client": "6.17.1",
18 | "dotenv": "17.2.3",
19 | "graphql": "16.11.0",
20 | "tedious": "18.6.1"
21 | },
22 | "devDependencies": {
23 | "azure-functions-core-tools": "^4.x",
24 | "@types/node": "18.x",
25 | "typescript": " 5.9.3",
26 | "rimraf": "^5.0.0",
27 | "prisma": " 6.17.1"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE
--------------------------------------------------------------------------------
/client/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | TodoMVC
8 |
9 |
24 |
25 |
26 |
27 |
38 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/azure-deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | # Load values from .env file or create it if it doesn't exists
5 | FILE=".env"
6 | if [[ -f $FILE ]]; then
7 | echo "Loading from $FILE"
8 | export $(egrep "^[^#;]" $FILE | xargs -n1)
9 | else
10 | cat << EOF > .env
11 | resourceGroup=""
12 | appName=""
13 | location=""
14 |
15 | # Change this if you are using your own github repository
16 | gitSource="https://github.com/Azure-Samples/azure-sql-db-prisma.git"
17 | gitToken=""
18 | EOF
19 | echo "Enviroment file not detected."
20 | echo "Please configure values for your environment in the created .env file"
21 | echo "and run the script again."
22 | exit 1
23 | fi
24 |
25 | FILE="./api/.env"
26 | echo "Loading from $FILE"
27 | export $(egrep "^[^#;]" $FILE | xargs -n1)
28 |
29 | echo "Creating Resource Group...";
30 | az group create \
31 | -n $resourceGroup \
32 | -l $location
33 |
34 | echo "Deploying Static Web App...";
35 | az deployment group create \
36 | --name ToDoMVC-SWA \
37 | --resource-group $resourceGroup \
38 | --template-file azure-deploy.arm.json \
39 | --parameters \
40 | name=$appName \
41 | location=$location \
42 | repositoryToken=$gitToken \
43 | repositoryUrl=$gitSource \
44 | branch=main \
45 | appLocation="./client" \
46 | apiLocation="./api" \
47 | azureSQL=$DATABASE_URL
48 |
49 | echo "Getting Static Web App...";
50 | dhn=`az staticwebapp show -g $resourceGroup -n $appName --query "defaultHostname"`
51 | echo "Static Web App created at: $dhn";
52 |
53 | echo "Done."
--------------------------------------------------------------------------------
/.github/workflows/azure-static-web-apps.yml.sample:
--------------------------------------------------------------------------------
1 | name: Azure Static Web Apps CI/CD
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 | types: [opened, synchronize, reopened, closed]
9 | branches:
10 | - main
11 |
12 | jobs:
13 | build_and_deploy_job:
14 | if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
15 | runs-on: ubuntu-latest
16 | name: Build and Deploy Job
17 | steps:
18 | - uses: actions/checkout@v2
19 | with:
20 | submodules: true
21 | - name: Build And Deploy
22 | id: builddeploy
23 | uses: Azure/static-web-apps-deploy@v1
24 | with:
25 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
26 | repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
27 | action: "upload"
28 | ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
29 | # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
30 | app_location: "./client" # App source code path
31 | api_location: "./api" # Api source code path - optional
32 | output_location: ""
33 | ###### End of Repository/Build Configurations ######
34 | env: # Add environment variables here
35 | NODE_VERSION: 22
36 | PRE_BUILD_COMMAND: "npm install -g prisma@6.17.1"
37 | CUSTOM_BUILD_COMMAND: "npm install @prisma/client@6.17.1 && npm run build"
38 | POST_BUILD_COMMAND: "npm install @prisma/client@6.17.1"
39 |
40 | close_pull_request_job:
41 | if: github.event_name == 'pull_request' && github.event.action == 'closed'
42 | runs-on: ubuntu-latest
43 | name: Close Pull Request Job
44 | steps:
45 | - name: Close Pull Request
46 | id: closepullrequest
47 | uses: Azure/static-web-apps-deploy@v1
48 | with:
49 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_WONDERFUL_BAY_05E97F31E }}
50 | action: "close"
51 |
--------------------------------------------------------------------------------
/azure-deploy.arm.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
3 | "contentVersion": "1.0.0.0",
4 | "parameters": {
5 | "name": {
6 | "type": "string"
7 | },
8 | "location": {
9 | "type": "string"
10 | },
11 | "repositoryUrl": {
12 | "type": "string"
13 | },
14 | "branch": {
15 | "type": "string"
16 | },
17 | "repositoryToken": {
18 | "type": "securestring"
19 | },
20 | "appLocation": {
21 | "type": "string"
22 | },
23 | "apiLocation": {
24 | "type": "string"
25 | },
26 | "azureSQL": {
27 | "type": "string"
28 | }
29 | },
30 | "resources": [
31 | {
32 | "apiVersion": "2021-01-15",
33 | "name": "[parameters('name')]",
34 | "type": "Microsoft.Web/staticSites",
35 | "location": "[parameters('location')]",
36 | "properties": {
37 | "repositoryUrl": "[parameters('repositoryUrl')]",
38 | "branch": "[parameters('branch')]",
39 | "repositoryToken": "[parameters('repositoryToken')]",
40 | "buildProperties": {
41 | "appLocation": "[parameters('appLocation')]",
42 | "apiLocation": "[parameters('apiLocation')]"
43 | }
44 | },
45 | "sku": {
46 | "Tier": "Free",
47 | "Name": "Free"
48 | },
49 | "resources":[
50 | {
51 | "apiVersion": "2021-01-15",
52 | "name": "appsettings",
53 | "type": "config",
54 | "location": "[parameters('location')]",
55 | "properties": {
56 | "DATABASE_URL": "[parameters('azureSQL')]"
57 | },
58 | "dependsOn": [
59 | "[resourceId('Microsoft.Web/staticSites', parameters('name'))]"
60 | ]
61 | }
62 | ]
63 | }
64 | ]
65 | }
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to ToDo MVC Sample app Full Stack implementation using Azure Static WebApps, Azure Functions, Node, Vue.Js and Azure SQL
2 |
3 | This project welcomes contributions and suggestions. Most contributions require you to agree to a
4 | Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
5 | the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
6 |
7 | When you submit a pull request, a CLA bot will automatically determine whether you need to provide
8 | a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
9 | provided by the bot. You will only need to do this once across all repos using our CLA.
10 |
11 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
12 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
13 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
14 |
15 | - [Code of Conduct](#coc)
16 | - [Issues and Bugs](#issue)
17 | - [Feature Requests](#feature)
18 | - [Submission Guidelines](#submit)
19 |
20 | ## Code of Conduct
21 | Help us keep this project open and inclusive. Please read and follow our [Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
22 |
23 | ## Found an Issue?
24 | If you find a bug in the source code or a mistake in the documentation, you can help us by
25 | [submitting an issue](#submit-issue) to the GitHub Repository. Even better, you can
26 | [submit a Pull Request](#submit-pr) with a fix.
27 |
28 | ## Want a Feature?
29 | You can *request* a new feature by [submitting an issue](#submit-issue) to the GitHub
30 | Repository. If you would like to *implement* a new feature, please submit an issue with
31 | a proposal for your work first, to be sure that we can use it.
32 |
33 | * **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr).
34 |
35 | ## Submission Guidelines
36 |
37 | ### Submitting an Issue
38 | Before you submit an issue, search the archive, maybe your question was already answered.
39 |
40 | If your issue appears to be a bug, and hasn't been reported, open a new issue.
41 | Help us to maximize the effort we can spend fixing issues and adding new
42 | features, by not reporting duplicate issues. Providing the following information will increase the
43 | chances of your issue being dealt with quickly:
44 |
45 | * **Overview of the Issue** - if an error is being thrown a non-minified stack trace helps
46 | * **Version** - what version is affected (e.g. 0.1.2)
47 | * **Motivation for or Use Case** - explain what are you trying to do and why the current behavior is a bug for you
48 | * **Browsers and Operating System** - is this a problem with all browsers?
49 | * **Reproduce the Error** - provide a live example or a unambiguous set of steps
50 | * **Related Issues** - has a similar issue been reported before?
51 | * **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be
52 | causing the problem (line of code or commit)
53 |
54 | You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/[organization-name]/[repository-name]/issues/new].
55 |
56 | ### Submitting a Pull Request (PR)
57 | Before you submit your Pull Request (PR) consider the following guidelines:
58 |
59 | * Search the repository (https://github.com/[organization-name]/[repository-name]/pulls) for an open or closed PR
60 | that relates to your submission. You don't want to duplicate effort.
61 |
62 | * Make your changes in a new git fork:
63 |
64 | * Commit your changes using a descriptive commit message
65 | * Push your fork to GitHub:
66 | * In GitHub, create a pull request
67 | * If we suggest changes then:
68 | * Make the required updates.
69 | * Rebase your fork and force push to your GitHub repository (this will update your Pull Request):
70 |
71 | ```shell
72 | git rebase master -i
73 | git push -f
74 | ```
75 |
76 | That's it! Thank you for your contribution!
77 |
--------------------------------------------------------------------------------
/api/src/functions/graphql.ts:
--------------------------------------------------------------------------------
1 | import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
2 | import { PrismaClient, Todo } from '@prisma/client'
3 | import { ApolloServer } from '@apollo/server'
4 |
5 | const prisma = new PrismaClient()
6 |
7 | // Construct a schema, using GraphQL schema language
8 | const typeDefs = `
9 | type Query {
10 | todo(
11 | id: ID!
12 | ): Todo
13 |
14 | todoList: [Todo!]!
15 | }
16 |
17 | type Mutation {
18 |
19 | addTodo(
20 | title: String!,
21 | completed: Boolean
22 | ): Todo
23 |
24 | updateTodo(
25 | id: ID!,
26 | title: String,
27 | completed: Boolean
28 | ): Todo
29 |
30 | deleteTodo(
31 | id: ID!
32 | ): Todo
33 |
34 | }
35 |
36 | type Todo {
37 | id: ID!
38 | title: String!
39 | completed: Boolean
40 | }
41 | `
42 |
43 | // Provide resolver functions for your schema fields
44 | const resolvers = {
45 | Query: {
46 |
47 | todoList: (parent, args, context) => {
48 | return prisma.todo.findMany({
49 | where: {
50 | ownerId: context.loggedUserId
51 | }
52 | }).then(value => value.map(todo => toClientToDo(todo)))
53 | },
54 |
55 | todo: (parent, args, context) => {
56 | return prisma.todo.findFirst({
57 | where: {
58 | id: parseInt(args.id, 10),
59 | ownerId: context.loggedUserId
60 | },
61 | }).then(value => toClientToDo(value))
62 | }
63 |
64 | },
65 |
66 | Mutation: {
67 |
68 | addTodo: (parent, args, context) => {
69 | return prisma.todo.create({
70 | data: {
71 | todo: args.title,
72 | completed: args.completed,
73 | ownerId: context.loggedUserId
74 | }
75 | }).then(value => toClientToDo(value))
76 | },
77 |
78 | updateTodo: (parent, args, context) => {
79 | const parsedId = parseInt(args.id, 10)
80 |
81 | return prisma.todo.updateMany({
82 | data: {
83 | todo: args.title,
84 | completed: args.completed
85 | },
86 | where: {
87 | id: parsedId,
88 | ownerId: context.loggedUserId
89 | }
90 | }).then(value => {
91 | return prisma.todo.findFirst({
92 | where: {
93 | id: parsedId,
94 | ownerId: context.loggedUserId
95 | }
96 | })
97 | }).then(value => toClientToDo(value))
98 | },
99 |
100 | deleteTodo: (parent, args, context) => {
101 | const parsedId = parseInt(args.id, 10)
102 |
103 | return prisma.todo.findFirst({
104 | where: {
105 | id: parseInt(args.id, 10),
106 | ownerId: context.loggedUserId
107 | }
108 | }).then(value => {
109 | return prisma.todo.deleteMany({
110 | where: {
111 | id: parsedId,
112 | ownerId: context.loggedUserId
113 | }
114 | }).then(_ => toClientToDo(value))
115 | })
116 | }
117 |
118 | }
119 | };
120 |
121 | const toClientToDo = (todo: Todo) => {
122 | return {
123 | id: todo.id,
124 | title: todo.todo,
125 | completed: todo.completed
126 | }
127 | }
128 |
129 | const getLoggedUserId = (header: string): string =>
130 | {
131 | if (header)
132 | {
133 | const encoded = Buffer.from(header, 'base64');
134 | const decoded = encoded.toString('ascii');
135 | return JSON.parse(decoded).userId;
136 | }
137 |
138 | return "anonymous"
139 | }
140 |
141 | const server = new ApolloServer({
142 | typeDefs,
143 | resolvers
144 | });
145 |
146 | // Flag to ensure server is started only once
147 | let serverStarted = false;
148 |
149 | const graphqlHandler = async function (req: HttpRequest, context: InvocationContext): Promise {
150 | try {
151 | // Start the server only once
152 | if (!serverStarted) {
153 | await server.start();
154 | serverStarted = true;
155 | }
156 |
157 | const loggedUserId = getLoggedUserId(req.headers.get('x-ms-client-principal'));
158 |
159 | const body = await req.text();
160 | const { query, variables, operationName } = JSON.parse(body);
161 |
162 | const result = await server.executeOperation(
163 | {
164 | query,
165 | variables,
166 | operationName,
167 | },
168 | {
169 | contextValue: { loggedUserId },
170 | }
171 | );
172 |
173 | return {
174 | status: 200,
175 | headers: {
176 | 'Content-Type': 'application/json',
177 | 'Access-Control-Allow-Origin': '*',
178 | 'Access-Control-Allow-Headers': 'Content-Type',
179 | },
180 | body: JSON.stringify(result),
181 | };
182 | } catch (error) {
183 | context.log('GraphQL Error:', error);
184 | return {
185 | status: 500,
186 | body: JSON.stringify({ error: 'Internal server error' }),
187 | };
188 | }
189 | };
190 |
191 | export default graphqlHandler;
192 |
193 | app.http('httpGraphQLTrigger', {
194 | methods: ['GET', 'POST'],
195 | authLevel: 'anonymous',
196 | handler: graphqlHandler,
197 | route: "todo/graphql"
198 | });
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
352 | # Custom
353 | .env
--------------------------------------------------------------------------------
/api/src/functions/rest.ts:
--------------------------------------------------------------------------------
1 | import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
2 | import { PrismaClient, Todo } from '@prisma/client'
3 |
4 | const prisma = new PrismaClient()
5 | var url:URL = null;
6 |
7 | // Type definition for the request input of a todo
8 | interface InputTodo {
9 | id?: string
10 | completed?: boolean
11 | title: string
12 | ownerId: string
13 | }
14 |
15 | class UrlHandler {
16 | context: InvocationContext;
17 | request: HttpRequest;
18 |
19 | url: URL;
20 | loggedUserId: string;
21 |
22 | constructor(context: InvocationContext, req: HttpRequest) {
23 | this.context = context;
24 | this.request = req;
25 |
26 | url = new URL(req.url)
27 | }
28 |
29 | public GetLoggedUserId(header: string): string
30 | {
31 | if (header)
32 | {
33 | const encoded = Buffer.from(header, 'base64');
34 | const decoded = encoded.toString('ascii');
35 | return JSON.parse(decoded).userId;
36 | }
37 |
38 | return "anonymous"
39 | }
40 |
41 | public async Process(): Promise
42 | {
43 | try {
44 | const method = this.request.method.toLowerCase()
45 |
46 | const header = this.request.headers['x-ms-client-principal'];
47 | this.loggedUserId = this.GetLoggedUserId(header);
48 |
49 | switch (method) {
50 | case 'get':
51 | if (this.request.params.id) {
52 | return await this.getTodo()
53 | } else {
54 | return await this.getTodos()
55 | }
56 | case 'post':
57 | return await this.createTodo()
58 | case 'patch':
59 | case 'put':
60 | return await this.updateTodo()
61 | case 'delete':
62 | if (this.request.params.id != null) {
63 | return await this.deleteTodo()
64 | } else {
65 | return await this.deleteTodos()
66 | }
67 | default:
68 | return { status: 405, body: 'Method not allowed' }
69 | }
70 | } catch (error) {
71 | return { status: 500, body: `Internal server error: ${error.message}` }
72 | }
73 | }
74 |
75 | public async getTodos(): Promise {
76 | const todos = await prisma.todo.findMany({
77 | where: {
78 | ownerId: this.loggedUserId
79 | }
80 | })
81 |
82 | if (todos) {
83 | return {
84 | status: 200,
85 | jsonBody: todos.map(todo => this.toClientToDo(todo))
86 | }
87 | } else {
88 | return { status: 404 }
89 | }
90 | }
91 |
92 | public async getTodo(): Promise {
93 | const parsedId = parseInt(this.request.params.id, 10)
94 |
95 | if (isNaN(parsedId)) {
96 | return { status: 400, body: 'Invalid ID format' }
97 | }
98 |
99 | const todo = await prisma.todo.findFirst({
100 | where: {
101 | id: parsedId,
102 | ownerId: this.loggedUserId
103 | }
104 | })
105 |
106 | if (todo) {
107 | return {
108 | status: 200,
109 | jsonBody: this.toClientToDo(todo)
110 | }
111 | } else {
112 | return { status: 404 }
113 | }
114 | }
115 |
116 | public async createTodo(): Promise {
117 | var payload = await this.request.json()
118 |
119 | if (!this.isTodo(payload)) {
120 | return { status: 400, body: 'Invalid todo format' }
121 | }
122 |
123 | try {
124 | const todo = await prisma.todo.create({
125 | data: {
126 | todo: payload.title,
127 | completed: payload.completed || false,
128 | ownerId: this.loggedUserId
129 | },
130 | })
131 | return {
132 | status: 201,
133 | jsonBody: this.toClientToDo(todo)
134 | }
135 | } catch (e) {
136 | return {
137 | status: 500,
138 | body: `Error creating todo: ${e.message}`
139 | }
140 | }
141 | }
142 |
143 | public async deleteTodo(): Promise {
144 | const parsedId = parseInt(this.request.params.id, 10)
145 |
146 | if (isNaN(parsedId)) {
147 | return { status: 400, body: 'Invalid ID format' }
148 | }
149 |
150 | try {
151 | const todo = await prisma.todo.findFirst({
152 | where: {
153 | id: parsedId,
154 | ownerId: this.loggedUserId
155 | }
156 | })
157 |
158 | if (!todo) {
159 | return { status: 404, body: 'Todo not found' }
160 | }
161 |
162 | await prisma.todo.deleteMany({
163 | where: {
164 | id: parsedId,
165 | ownerId: this.loggedUserId
166 | }
167 | })
168 |
169 | return {
170 | status: 200,
171 | jsonBody: this.toClientToDo(todo)
172 | }
173 | } catch (e) {
174 | return {
175 | status: 500,
176 | body: `Error deleting todo: ${e.message}`
177 | }
178 | }
179 | }
180 |
181 | public async deleteTodos(): Promise {
182 | try {
183 | const result = await prisma.todo.deleteMany({
184 | where: {
185 | ownerId: this.loggedUserId
186 | }
187 | })
188 |
189 | return {
190 | status: 200,
191 | jsonBody: { deleted: result.count }
192 | }
193 | } catch (e) {
194 | return {
195 | status: 500,
196 | body: `Error deleting todos: ${e.message}`
197 | }
198 | }
199 | }
200 |
201 | public async updateTodo(): Promise {
202 | var payload = await this.request.json()
203 |
204 | if (!this.isTodo(payload) || !this.request.params.id) {
205 | return { status: 400, body: 'Invalid todo format or missing ID' }
206 | }
207 |
208 | const parsedId = parseInt(this.request.params.id, 10)
209 |
210 | if (isNaN(parsedId)) {
211 | return { status: 400, body: 'Invalid ID format' }
212 | }
213 |
214 | try {
215 | const updateResult = await prisma.todo.updateMany({
216 | data: {
217 | todo: payload.title,
218 | completed: payload.completed
219 | },
220 | where: {
221 | id: parsedId,
222 | ownerId: this.loggedUserId
223 | }
224 | })
225 |
226 | if (updateResult.count === 0) {
227 | return { status: 404, body: 'Todo not found' }
228 | }
229 |
230 | const todo = await prisma.todo.findFirst({
231 | where: {
232 | id: parsedId,
233 | ownerId: this.loggedUserId
234 | }
235 | })
236 |
237 | return {
238 | status: 200,
239 | jsonBody: this.toClientToDo(todo)
240 | }
241 | } catch (e) {
242 | this.context.log(e)
243 | return {
244 | status: 500,
245 | body: `Error updating todo: ${e.message}`
246 | }
247 | }
248 | }
249 |
250 | // Function to validate at runtime while giving type safety
251 | private isTodo(todo: unknown): todo is InputTodo
252 | {
253 | return typeof todo === 'object' && ('title' in todo || 'completed' in todo)
254 | }
255 |
256 | // The ToDo stored in the database has different name from the ToDo required by the Web Client
257 | private toClientToDo(todo: Todo)
258 | {
259 | return {
260 | id: todo.id,
261 | title: todo.todo,
262 | completed: todo.completed,
263 | url: `${url.protocol}//${url.hostname}:${url.port}/api/todo/${todo.id}`
264 | }
265 | }
266 | }
267 |
268 | export async function processRequest(request: HttpRequest, context: InvocationContext): Promise
269 | {
270 | const uh = new UrlHandler(context, request);
271 | return uh.Process();
272 | }
273 |
274 | app.http('httpRestTrigger', {
275 | methods: ['GET', 'PUT', 'PATCH', 'POST', 'DELETE'],
276 | authLevel: 'anonymous',
277 | handler: processRequest,
278 | route: "todo/{id:int?}"
279 | });
--------------------------------------------------------------------------------
/client/client-rest.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | TodoMVC - REST
8 |
9 |
10 |
25 |
26 |
27 |
28 |
71 |
79 |
80 |
264 |
265 |
266 |
--------------------------------------------------------------------------------
/client/client-graphql.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | TodoMVC - GraphQL
8 |
9 |
10 |
25 |
26 |
27 |
28 |
71 |
79 |
80 |
264 |
265 |
266 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | page_type: sample
3 | languages:
4 | - nodejs
5 | - typescript
6 | - sql
7 | products:
8 | - azure
9 | - vs-code
10 | - azure-sql-database
11 | - azure-functions
12 | - azure-app-service
13 | description: 'Full Stack TodoMVC Sample app, with REST and GraphQL support, using Prisma, Azure Static WebApps, Azure Functions, TypeScript, Nodejs, Vue.Js and Azure SQL'
14 | urlFragment: 'azure-sql-db-prisma'
15 | ---
16 |
17 | # REST & GraphQL TodoMVC Sample App Full Stack Implementation with Prisma
18 |
19 | 
20 |
21 | Serverless Full Stack implementation on Azure of [TodoMVC](http://todomvc.com/) app with support both for REST and GraphQL endpoints via [Prisma](https://www.prisma.io/)
22 |
23 | This sample is a variation of the Full-Stack MVC Todo sample described here: [TodoMVC Full Stack with Azure Static Web Apps, Node and Azure SQL](https://devblogs.microsoft.com/azure-sql/todomvc-full-stack-with-azure-static-web-apps-node-and-azure-sql/). The difference, of course, is the use of Prisma to have **a model-first approach and to support both the REST and GraphQL endpoints**.
24 |
25 | This means you can use Typecript to query your database and Prisma will take care of generating and executing the correct SQL query. This way you can focus on creating an amazing solution while still having all the power and the features of Azure SQL at your service. Just like magic!
26 |
27 | 
28 |
29 | ## Azure Static WebApps, Azure Functions, Node and Azure SQL
30 |
31 | The implementation uses
32 |
33 | - [Azure Static WebApp](https://azure.microsoft.com/en-us/services/app-service/static/): to bind everything together in one easy package, natively integrated with GitHub CI/CD pipeline
34 | - [Vue.Js](https://vuejs.org/) as front-end client
35 | - [Azure Functions](https://azure.microsoft.com/en-us/services/functions/) for providing serverless back-end infrastructure
36 | - [NodeJS](https://nodejs.org/en/) for the back-end logic
37 | - [TypeScript](https://www.typescriptlang.org/) for the back-end logic
38 | - [Prisma](https://www.prisma.io/) to interact with the Azure SQL database
39 | - [Azure SQL](https://azure.microsoft.com/en-us/services/sql-database/) as database to store ToDo data
40 | - [GitHub Actions](https://github.com/features/actions) to Deploy the full-stack website (thanks to Azure Static Web Apps)
41 |
42 | ## Prisma Meetup Recording
43 |
44 | This sample has been presented and discussed in the Prisma Meetup 2021 #8. The recording is available here:
45 |
46 | 
47 |
48 | https://www.youtube.com/watch?v=-u2CwW40X0k
49 |
50 | ## Folder Structure
51 |
52 | - `/api`: the NodeJs Azure Function code used to provide the backend API, called by the Vue.Js client
53 | - `/api/src/functions/rest.ts`: contains the Azure Function that provides REST endpoint support
54 | - `/api/src/functions/graphql.ts`: contains the Azure Function that provides GraphQL endpoint support
55 | - `/api/prisma`: contains the Prisma model
56 | - `/client`: the Vue.Js client. Original source code has been taken from official Vue.js sample and adapted to call a REST or GraphQL client instead of using local storage to save and retrieve todos
57 |
58 | ## Install the dependencies
59 |
60 | Make sure you have [Node](https://nodejs.org/en/download/) installed. Since the free tier of Azure Static Web Apps only supports Node 12, it is recommended to use Node 12 for development too.
61 |
62 | Also install the [Azure Function Core Tools v4](https://www.npmjs.com/package/azure-functions-core-tools):
63 |
64 | ```sh
65 | npm i -g azure-functions-core-tools@4
66 | ```
67 |
68 | Make sure this dependency is not included in the `package.json` as otherwise the generated package will be too big for Azure Static Web Apps free tier (deployed .zip can max 10MB size).
69 |
70 | Also install the [Azure Static Web Apps CLI](https://github.com/azure/static-web-apps-cli):
71 |
72 | ```sh
73 | npm install -g @azure/static-web-apps-cli`
74 | ```
75 |
76 | Now you can install the dependencies. Enter the `./api/` folder and install the dependencies:
77 |
78 | ```sh
79 | npm install
80 | ```
81 |
82 | then generate the Prisma client:
83 |
84 | ```sh
85 | npx prisma generate
86 | ```
87 |
88 | and then build the solution (always from in the `./api` folder):
89 |
90 | ```sh
91 | npm run build
92 | ```
93 |
94 | ## Create the database
95 |
96 | You have two options. If you only want to experiment locally, you can use SQL Server. If you prefer to use the cloud, you can use Azure SQL.
97 |
98 | ### Option 1 - Start the SQL Server with Docker
99 |
100 | If you want to develop locally without any dependency on Azure, you can run SQL Server locally using the included [docker-compose.yaml](./docker-compose.yml) file with the following command:
101 |
102 | ```sh
103 | docker compose up -d
104 | ```
105 |
106 | Now use the `/api/.env.template` file to create an `.env` file and add the correct information needed to access your SQL Server.
107 |
108 | Create a `.env` file by copying [.env.template](./api/.env.template) inside the [./api](./api) folder, and then add the connection string to connect to the local SQL Server, for example:
109 |
110 | ```sh
111 | DATABASE_URL=sqlserver://localhost:1433;database=prisma-demo;user=DB_USER;password=DB_PASSWORD;trustServerCertificate=true;encrypt=true
112 | ```
113 |
114 | ### Option 2 - Create the Azure SQL database
115 |
116 | > **Beginners:** If you are completely new to Azure SQL, no worries! Here's a full playlist that will help you: [Azure SQL for beginners](https://www.youtube.com/playlist?list=PLlrxD0HtieHi5c9-i_Dnxw9vxBY-TqaeN).
117 |
118 | Another option is to use an Azure SQL database also as a development database. If you need to create an Azure SQL database from scratch, an Azure SQL S0 database would be more than fine to run the tests.
119 |
120 | Make sure you have an existing Azure SQL server, or create a new one (there is no cost associated with an Azure SQL server). Remember that you can use the [Azure Free offering](https://azure.microsoft.com/en-us/free/sql-database/) if needed:
121 |
122 | ```sh
123 | az sql server create -g -n -u -p -l
124 | ```
125 |
126 | make sure you can access the server from your client machine by configuring the firewall:
127 |
128 | ```sh
129 | az sql server firewall-rule create --server -g --start-ip-address --end-ip-address --name MyClient
130 | ```
131 |
132 | then create the Azure SQL database:
133 |
134 | ```sh
135 | az sql db create -g -s -n todo_prisma --service-objective S0
136 | ```
137 |
138 | > **Note:** Remember that if you don't have a Linux environment where you can run [AZ CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) you can always use the [Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/quickstart). If you prefer to do everything via the portal, here's a tutorial: [Create an Azure SQL Database single database](https://docs.microsoft.com/en-us/azure/azure-sql/database/single-database-create-quickstart?tabs=azure-portal).
139 |
140 | Prisma will connect to the database using the `DATABASE_URL` environment variable which can be defined in the `./api/.env` file.
141 |
142 | Create a `.env` file by copying [.env.template](./api/.env.template) inside the [./api](./api) folder and then define the database URL using the following format:
143 |
144 | ```sh
145 | DATABASE_URL="sqlserver://DB_SERVER_NAME.database.windows.net:1433;database=DB_NAME;user=DB_USER;password=DB_PASSWORD;encrypt=true;trustServerCertificate=false;loginTimeout=30"
146 | ```
147 |
148 | ## Create the database schema
149 |
150 | Now that you have a database, you can create the database schema by using Prisma Migrate:
151 |
152 | ```sh
153 | npx prisma migrate dev
154 | ```
155 |
156 | > **Note:** If you run the `prisma migrate dev` command with an Azure SQL database, you will need to also set the connection string for the [shadow database](https://www.prisma.io/docs/concepts/components/prisma-migrate/shadow-database#cloud-hosted-shadow-databases-must-be-created-manually) which is necessary for development purposes. To avoid this you can run instead the `prisma migrate deploy` command which will execute existing migrations without the need for a shadow database.
157 |
158 | ## Start the local development server
159 |
160 | Start the Azure Static Web App server (in the root folder):
161 |
162 | ```sh
163 | swa start ./client --api-location ./api
164 | ```
165 |
166 | Enjoy the Static Web Site running locally!
167 |
168 | ## Running on Azure
169 |
170 | This is the amazing part of using Azure Static Web Apps. Deploying to Azure is completely automated via GitHub actions. There are some manual steps because the Static Web Apps CLI is still in Preview at the moment of writing and because Prisma and the Azure Static Web App GitHub Action need some help to get along.
171 |
172 | 1. Fork this repository
173 | 1. Get a [GitHub Token](https://docs.microsoft.com/en-us/azure/static-web-apps/publish-azure-resource-manager?tabs=azure-cli#create-a-github-personal-access-token)
174 | 1. Run `./azure-deploy.sh`. Please note that if this is the first time you run it, it will create an `.env` file in the root folder. Fill the `.env` file. Run the `./azure-deploy.sh` again.
175 | 1. Once the deployment is done go to the Azure portal, and open the Azure Static Web App resource just created.
176 | 1. Open the "Configuration" pane and add a new environment variable named `DATABASE_URL` and assign the value of the database connection string mentioned before in the local development section.
177 | 1. Done! Well, not really, read on.
178 |
179 | ## Fixing generated workflow file
180 |
181 | The generated workflow file will not work. Even if the CI/CD pipeline will complete successfully, the Azure Static Web App will not work. This is due to how [Oryx](https://github.com/Microsoft/Oryx), the tool that automates the building and deployment for Static Web Apps, doesn't now how to properly deal with the nuances of Prisma. Fixing this issue is quite easy, just add the following enviroment variable to the workflow.
182 | The workflow file you have to change is in `./github/workflow`. Note the name returned by the deployment script. For example if the deployment script reported that:
183 |
184 | ```sh
185 | Static Web App created at: gentle-mud-01cd9ba1e.azurestaticapps.net
186 | ```
187 |
188 | your workflow file will be `./github/workflow/azure-static-web-apps-gentle-mud-01cd9ba1e.yml`.
189 |
190 | You can make the requested small change right from your GitHub repository, if you don't want to clone the forked repo locally. Just after the line:
191 |
192 | ```yaml
193 | ###### End of Repository/Build Configurations ######
194 | ```
195 |
196 | in the "Build and Deploy" step, add these environment variables:
197 |
198 | ```yaml
199 | env: # Add environment variables here
200 | PRE_BUILD_COMMAND: "npm install -g prisma@6.17.1"
201 | CUSTOM_BUILD_COMMAND: "npm install @prisma/client@6.17.1 && npm run build"
202 | POST_BUILD_COMMAND: "npm install @prisma/client@6.17.1"
203 | ```
204 |
205 | Make sure you indent the lines correctly, as requested by YAML syntax, and than commit the change. (If you are using the GitHub online editor, and you don't see any red squiggly lines you should be good to go.)
206 |
207 | Take a look at the sample workflow in the `./github/workflow` folder to see what your workflow file should look like.
208 |
209 | ## Running on Azure (yep!)
210 |
211 | After you have commited the changes to the workflow file, the CI/CD pipeline will run again automatically (You can verify it from the "Action" section of your GitHub repo). Once the pipeline has run, you should have a working website. Go to http://[your-swa-name].azurestaticapps.net, and enjoy!
212 |
213 | ### REST Endpoint
214 |
215 | You can create, update and delete ToDos, that are then in turn stored in Azure SQL, completely via REST using the `/api/todo` endpoint. It supports GET, POST, PATCH and DELETE methods. For example using cUrl:
216 |
217 | Get all available todos
218 |
219 | ```sh
220 | curl -s -X GET https://[your-swa-name].azurestaticapps.net/api/todo
221 | ```
222 |
223 | Get a specific todo
224 |
225 | ```sh
226 | curl -s -X GET https://[your-swa-name].azurestaticapps.net/api/todo/123
227 | ```
228 |
229 | Create a todo
230 |
231 | ```sh
232 | curl -s -H "Content-Type: application/json" -X POST https://[your-swa-name].azurestaticapps.net/api/todo/ -d '{"title":"Hello world"}'
233 | ```
234 |
235 | Update a todo
236 |
237 | ```sh
238 | curl -s -H "Content-Type: application/json" -X PUT https://[your-swa-name].azurestaticapps.net/api/todo/123 -d '{"title":"World, hello!", "completed":true}'
239 | ```
240 |
241 | Delete a todo
242 |
243 | ```sh
244 | curl -s -X DELETE https://[your-swa-name].azurestaticapps.net/api/todo/123
245 | ```
246 |
247 | A sample of REST endpoint usage in a web page is available at `/client-rest.html` page.
248 |
249 | ### GraphQL Endpoint
250 |
251 | The GraphQL endpoint is available at `https://[your-swa-name].azurestaticapps.net/api/todo/graphql` and it provides an interactive GraphQL playground. You can create, update and delete ToDos, that are then in turn stored in Azure SQL, completely via GraphQL.
252 |
253 | Get all available todos
254 |
255 | ```graphql
256 | query {
257 | todoList {
258 | id
259 | title
260 | completed
261 | }
262 | }
263 | ```
264 |
265 | Get a specific todo
266 |
267 | ```graphql
268 | query {
269 | todo(id: 123) {
270 | id
271 | title
272 | completed
273 | }
274 | }
275 | ```
276 |
277 | Create a todo
278 |
279 | ```graphql
280 | mutation {
281 | addTodo(title: "hello world")
282 | {
283 | id
284 | title
285 | completed
286 | }
287 | }
288 | ```
289 |
290 | Update a todo
291 |
292 | ```graphql
293 | mutation {
294 | updateTodo(id: 123, title: "world, hello")
295 | {
296 | id
297 | title
298 | completed
299 | }
300 | }
301 | ```
302 |
303 | Delete a todo
304 |
305 | ```graphql
306 | mutation {
307 | deleteTodo(id: 123)
308 | {
309 | id
310 | title
311 | completed
312 | }
313 | }
314 | ```
315 |
316 | A sample of GraphQL endpoint usage in a web page is available at `/client-graphql.html` page.
317 |
318 | ## Azure Static Web App
319 |
320 | Azure Static Web App supports a free tier, but performance may not be what you need. Initial REST API response will be in the 500 msec area. Keep this in mind if you are planning to use them for something other than testing. If you need better performance right now and cannot when for when Azure Static Web App will be out of preview, you can always deploy the REST API using plain Azure Functions where you can have amazing scalability and performance.
321 |
322 | ### Authentication
323 |
324 | The sample supports user authentication via the native Azure Static Web App implementation: [Authentication and authorization for Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/authentication-authorization)
325 |
326 | Each todo item has an associated "ownerId" which is the user who has created that item and only that user can view and operate on that todo. If no user is logged in, only items that belong to the "anonymous" user will be allowed to be created, managed and accessed.
327 |
--------------------------------------------------------------------------------
/api/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "api",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "version": "1.0.0",
9 | "dependencies": {
10 | "@apollo/server": "^5.0.0",
11 | "@azure/functions": "4.8.0",
12 | "@prisma/client": "6.17.1",
13 | "dotenv": "17.2.3",
14 | "graphql": "16.11.0",
15 | "tedious": "18.6.1"
16 | },
17 | "devDependencies": {
18 | "@types/node": "18.x",
19 | "azure-functions-core-tools": "^4.x",
20 | "prisma": " 6.17.1",
21 | "rimraf": "^5.0.0",
22 | "typescript": " 5.9.3"
23 | }
24 | },
25 | "node_modules/@apollo/cache-control-types": {
26 | "version": "1.0.3",
27 | "resolved": "https://registry.npmjs.org/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz",
28 | "integrity": "sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g==",
29 | "license": "MIT",
30 | "peerDependencies": {
31 | "graphql": "14.x || 15.x || 16.x"
32 | }
33 | },
34 | "node_modules/@apollo/protobufjs": {
35 | "version": "1.2.7",
36 | "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz",
37 | "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==",
38 | "hasInstallScript": true,
39 | "license": "BSD-3-Clause",
40 | "dependencies": {
41 | "@protobufjs/aspromise": "^1.1.2",
42 | "@protobufjs/base64": "^1.1.2",
43 | "@protobufjs/codegen": "^2.0.4",
44 | "@protobufjs/eventemitter": "^1.1.0",
45 | "@protobufjs/fetch": "^1.1.0",
46 | "@protobufjs/float": "^1.0.2",
47 | "@protobufjs/inquire": "^1.1.0",
48 | "@protobufjs/path": "^1.1.2",
49 | "@protobufjs/pool": "^1.1.0",
50 | "@protobufjs/utf8": "^1.1.0",
51 | "@types/long": "^4.0.0",
52 | "long": "^4.0.0"
53 | },
54 | "bin": {
55 | "apollo-pbjs": "bin/pbjs",
56 | "apollo-pbts": "bin/pbts"
57 | }
58 | },
59 | "node_modules/@apollo/server": {
60 | "version": "5.0.0",
61 | "resolved": "https://registry.npmjs.org/@apollo/server/-/server-5.0.0.tgz",
62 | "integrity": "sha512-PHopOm7pr69k7eDJvCBU4cZy9Z19qyCFKB9/luLnf2YCatu2WOYhoQPNr3dAoe//xv0RZFhxXbRcnK6IXIP7Nw==",
63 | "license": "MIT",
64 | "dependencies": {
65 | "@apollo/cache-control-types": "^1.0.3",
66 | "@apollo/server-gateway-interface": "^2.0.0",
67 | "@apollo/usage-reporting-protobuf": "^4.1.1",
68 | "@apollo/utils.createhash": "^3.0.0",
69 | "@apollo/utils.fetcher": "^3.0.0",
70 | "@apollo/utils.isnodelike": "^3.0.0",
71 | "@apollo/utils.keyvaluecache": "^4.0.0",
72 | "@apollo/utils.logger": "^3.0.0",
73 | "@apollo/utils.usagereporting": "^2.1.0",
74 | "@apollo/utils.withrequired": "^3.0.0",
75 | "@graphql-tools/schema": "^10.0.0",
76 | "async-retry": "^1.2.1",
77 | "body-parser": "^2.2.0",
78 | "cors": "^2.8.5",
79 | "finalhandler": "^2.1.0",
80 | "loglevel": "^1.6.8",
81 | "lru-cache": "^11.1.0",
82 | "negotiator": "^1.0.0",
83 | "uuid": "^11.1.0",
84 | "whatwg-mimetype": "^4.0.0"
85 | },
86 | "engines": {
87 | "node": ">=20"
88 | },
89 | "peerDependencies": {
90 | "graphql": "^16.11.0"
91 | }
92 | },
93 | "node_modules/@apollo/server-gateway-interface": {
94 | "version": "2.0.0",
95 | "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-2.0.0.tgz",
96 | "integrity": "sha512-3HEMD6fSantG2My3jWkb9dvfkF9vJ4BDLRjMgsnD790VINtuPaEp+h3Hg9HOHiWkML6QsOhnaRqZ+gvhp3y8Nw==",
97 | "license": "MIT",
98 | "dependencies": {
99 | "@apollo/usage-reporting-protobuf": "^4.1.1",
100 | "@apollo/utils.fetcher": "^3.0.0",
101 | "@apollo/utils.keyvaluecache": "^4.0.0",
102 | "@apollo/utils.logger": "^3.0.0"
103 | },
104 | "peerDependencies": {
105 | "graphql": "14.x || 15.x || 16.x"
106 | }
107 | },
108 | "node_modules/@apollo/server-gateway-interface/node_modules/@apollo/utils.keyvaluecache": {
109 | "version": "4.0.0",
110 | "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz",
111 | "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==",
112 | "license": "MIT",
113 | "dependencies": {
114 | "@apollo/utils.logger": "^3.0.0",
115 | "lru-cache": "^11.0.0"
116 | },
117 | "engines": {
118 | "node": ">=20"
119 | }
120 | },
121 | "node_modules/@apollo/server-gateway-interface/node_modules/@apollo/utils.logger": {
122 | "version": "3.0.0",
123 | "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-3.0.0.tgz",
124 | "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==",
125 | "license": "MIT",
126 | "engines": {
127 | "node": ">=16"
128 | }
129 | },
130 | "node_modules/@apollo/server-gateway-interface/node_modules/lru-cache": {
131 | "version": "11.2.2",
132 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
133 | "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
134 | "license": "ISC",
135 | "engines": {
136 | "node": "20 || >=22"
137 | }
138 | },
139 | "node_modules/@apollo/server/node_modules/@apollo/utils.dropunuseddefinitions": {
140 | "version": "2.0.1",
141 | "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz",
142 | "integrity": "sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==",
143 | "license": "MIT",
144 | "engines": {
145 | "node": ">=14"
146 | },
147 | "peerDependencies": {
148 | "graphql": "14.x || 15.x || 16.x"
149 | }
150 | },
151 | "node_modules/@apollo/server/node_modules/@apollo/utils.keyvaluecache": {
152 | "version": "4.0.0",
153 | "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz",
154 | "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==",
155 | "license": "MIT",
156 | "dependencies": {
157 | "@apollo/utils.logger": "^3.0.0",
158 | "lru-cache": "^11.0.0"
159 | },
160 | "engines": {
161 | "node": ">=20"
162 | }
163 | },
164 | "node_modules/@apollo/server/node_modules/@apollo/utils.logger": {
165 | "version": "3.0.0",
166 | "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-3.0.0.tgz",
167 | "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==",
168 | "license": "MIT",
169 | "engines": {
170 | "node": ">=16"
171 | }
172 | },
173 | "node_modules/@apollo/server/node_modules/@apollo/utils.printwithreducedwhitespace": {
174 | "version": "2.0.1",
175 | "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz",
176 | "integrity": "sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg==",
177 | "license": "MIT",
178 | "engines": {
179 | "node": ">=14"
180 | },
181 | "peerDependencies": {
182 | "graphql": "14.x || 15.x || 16.x"
183 | }
184 | },
185 | "node_modules/@apollo/server/node_modules/@apollo/utils.removealiases": {
186 | "version": "2.0.1",
187 | "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz",
188 | "integrity": "sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA==",
189 | "license": "MIT",
190 | "engines": {
191 | "node": ">=14"
192 | },
193 | "peerDependencies": {
194 | "graphql": "14.x || 15.x || 16.x"
195 | }
196 | },
197 | "node_modules/@apollo/server/node_modules/@apollo/utils.sortast": {
198 | "version": "2.0.1",
199 | "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz",
200 | "integrity": "sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw==",
201 | "license": "MIT",
202 | "dependencies": {
203 | "lodash.sortby": "^4.7.0"
204 | },
205 | "engines": {
206 | "node": ">=14"
207 | },
208 | "peerDependencies": {
209 | "graphql": "14.x || 15.x || 16.x"
210 | }
211 | },
212 | "node_modules/@apollo/server/node_modules/@apollo/utils.stripsensitiveliterals": {
213 | "version": "2.0.1",
214 | "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz",
215 | "integrity": "sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA==",
216 | "license": "MIT",
217 | "engines": {
218 | "node": ">=14"
219 | },
220 | "peerDependencies": {
221 | "graphql": "14.x || 15.x || 16.x"
222 | }
223 | },
224 | "node_modules/@apollo/server/node_modules/@apollo/utils.usagereporting": {
225 | "version": "2.1.0",
226 | "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz",
227 | "integrity": "sha512-LPSlBrn+S17oBy5eWkrRSGb98sWmnEzo3DPTZgp8IQc8sJe0prDgDuppGq4NeQlpoqEHz0hQeYHAOA0Z3aQsxQ==",
228 | "license": "MIT",
229 | "dependencies": {
230 | "@apollo/usage-reporting-protobuf": "^4.1.0",
231 | "@apollo/utils.dropunuseddefinitions": "^2.0.1",
232 | "@apollo/utils.printwithreducedwhitespace": "^2.0.1",
233 | "@apollo/utils.removealiases": "2.0.1",
234 | "@apollo/utils.sortast": "^2.0.1",
235 | "@apollo/utils.stripsensitiveliterals": "^2.0.1"
236 | },
237 | "engines": {
238 | "node": ">=14"
239 | },
240 | "peerDependencies": {
241 | "graphql": "14.x || 15.x || 16.x"
242 | }
243 | },
244 | "node_modules/@apollo/server/node_modules/@graphql-tools/merge": {
245 | "version": "9.1.1",
246 | "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.1.tgz",
247 | "integrity": "sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==",
248 | "license": "MIT",
249 | "dependencies": {
250 | "@graphql-tools/utils": "^10.9.1",
251 | "tslib": "^2.4.0"
252 | },
253 | "engines": {
254 | "node": ">=16.0.0"
255 | },
256 | "peerDependencies": {
257 | "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
258 | }
259 | },
260 | "node_modules/@apollo/server/node_modules/@graphql-tools/schema": {
261 | "version": "10.0.25",
262 | "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.25.tgz",
263 | "integrity": "sha512-/PqE8US8kdQ7lB9M5+jlW8AyVjRGCKU7TSktuW3WNKSKmDO0MK1wakvb5gGdyT49MjAIb4a3LWxIpwo5VygZuw==",
264 | "license": "MIT",
265 | "dependencies": {
266 | "@graphql-tools/merge": "^9.1.1",
267 | "@graphql-tools/utils": "^10.9.1",
268 | "tslib": "^2.4.0"
269 | },
270 | "engines": {
271 | "node": ">=16.0.0"
272 | },
273 | "peerDependencies": {
274 | "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
275 | }
276 | },
277 | "node_modules/@apollo/server/node_modules/@graphql-tools/utils": {
278 | "version": "10.9.1",
279 | "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.9.1.tgz",
280 | "integrity": "sha512-B1wwkXk9UvU7LCBkPs8513WxOQ2H8Fo5p8HR1+Id9WmYE5+bd51vqN+MbrqvWczHCH2gwkREgHJN88tE0n1FCw==",
281 | "license": "MIT",
282 | "dependencies": {
283 | "@graphql-typed-document-node/core": "^3.1.1",
284 | "@whatwg-node/promise-helpers": "^1.0.0",
285 | "cross-inspect": "1.0.1",
286 | "dset": "^3.1.4",
287 | "tslib": "^2.4.0"
288 | },
289 | "engines": {
290 | "node": ">=16.0.0"
291 | },
292 | "peerDependencies": {
293 | "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
294 | }
295 | },
296 | "node_modules/@apollo/server/node_modules/lru-cache": {
297 | "version": "11.2.2",
298 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
299 | "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
300 | "license": "ISC",
301 | "engines": {
302 | "node": "20 || >=22"
303 | }
304 | },
305 | "node_modules/@apollo/server/node_modules/uuid": {
306 | "version": "11.1.0",
307 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
308 | "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
309 | "funding": [
310 | "https://github.com/sponsors/broofa",
311 | "https://github.com/sponsors/ctavan"
312 | ],
313 | "license": "MIT",
314 | "bin": {
315 | "uuid": "dist/esm/bin/uuid"
316 | }
317 | },
318 | "node_modules/@apollo/server/node_modules/whatwg-mimetype": {
319 | "version": "4.0.0",
320 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
321 | "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
322 | "license": "MIT",
323 | "engines": {
324 | "node": ">=18"
325 | }
326 | },
327 | "node_modules/@apollo/usage-reporting-protobuf": {
328 | "version": "4.1.1",
329 | "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz",
330 | "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==",
331 | "license": "MIT",
332 | "dependencies": {
333 | "@apollo/protobufjs": "1.2.7"
334 | }
335 | },
336 | "node_modules/@apollo/utils.createhash": {
337 | "version": "3.0.1",
338 | "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-3.0.1.tgz",
339 | "integrity": "sha512-CKrlySj4eQYftBE5MJ8IzKwIibQnftDT7yGfsJy5KSEEnLlPASX0UTpbKqkjlVEwPPd4mEwI7WOM7XNxEuO05A==",
340 | "license": "MIT",
341 | "dependencies": {
342 | "@apollo/utils.isnodelike": "^3.0.0",
343 | "sha.js": "^2.4.11"
344 | },
345 | "engines": {
346 | "node": ">=16"
347 | }
348 | },
349 | "node_modules/@apollo/utils.fetcher": {
350 | "version": "3.1.0",
351 | "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-3.1.0.tgz",
352 | "integrity": "sha512-Z3QAyrsQkvrdTuHAFwWDNd+0l50guwoQUoaDQssLOjkmnmVuvXlJykqlEJolio+4rFwBnWdoY1ByFdKaQEcm7A==",
353 | "license": "MIT",
354 | "engines": {
355 | "node": ">=16"
356 | }
357 | },
358 | "node_modules/@apollo/utils.isnodelike": {
359 | "version": "3.0.0",
360 | "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-3.0.0.tgz",
361 | "integrity": "sha512-xrjyjfkzunZ0DeF6xkHaK5IKR8F1FBq6qV+uZ+h9worIF/2YSzA0uoBxGv6tbTeo9QoIQnRW4PVFzGix5E7n/g==",
362 | "license": "MIT",
363 | "engines": {
364 | "node": ">=16"
365 | }
366 | },
367 | "node_modules/@apollo/utils.withrequired": {
368 | "version": "3.0.0",
369 | "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-3.0.0.tgz",
370 | "integrity": "sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==",
371 | "license": "MIT",
372 | "engines": {
373 | "node": ">=16"
374 | }
375 | },
376 | "node_modules/@azure-rest/core-client": {
377 | "version": "2.5.1",
378 | "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.5.1.tgz",
379 | "integrity": "sha512-EHaOXW0RYDKS5CFffnixdyRPak5ytiCtU7uXDcP/uiY+A6jFRwNGzzJBiznkCzvi5EYpY+YWinieqHb0oY916A==",
380 | "license": "MIT",
381 | "dependencies": {
382 | "@azure/abort-controller": "^2.1.2",
383 | "@azure/core-auth": "^1.10.0",
384 | "@azure/core-rest-pipeline": "^1.22.0",
385 | "@azure/core-tracing": "^1.3.0",
386 | "@typespec/ts-http-runtime": "^0.3.0",
387 | "tslib": "^2.6.2"
388 | },
389 | "engines": {
390 | "node": ">=20.0.0"
391 | }
392 | },
393 | "node_modules/@azure/abort-controller": {
394 | "version": "2.1.2",
395 | "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
396 | "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
397 | "license": "MIT",
398 | "dependencies": {
399 | "tslib": "^2.6.2"
400 | },
401 | "engines": {
402 | "node": ">=18.0.0"
403 | }
404 | },
405 | "node_modules/@azure/core-auth": {
406 | "version": "1.10.1",
407 | "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz",
408 | "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==",
409 | "license": "MIT",
410 | "dependencies": {
411 | "@azure/abort-controller": "^2.1.2",
412 | "@azure/core-util": "^1.13.0",
413 | "tslib": "^2.6.2"
414 | },
415 | "engines": {
416 | "node": ">=20.0.0"
417 | }
418 | },
419 | "node_modules/@azure/core-client": {
420 | "version": "1.10.1",
421 | "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz",
422 | "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==",
423 | "license": "MIT",
424 | "dependencies": {
425 | "@azure/abort-controller": "^2.1.2",
426 | "@azure/core-auth": "^1.10.0",
427 | "@azure/core-rest-pipeline": "^1.22.0",
428 | "@azure/core-tracing": "^1.3.0",
429 | "@azure/core-util": "^1.13.0",
430 | "@azure/logger": "^1.3.0",
431 | "tslib": "^2.6.2"
432 | },
433 | "engines": {
434 | "node": ">=20.0.0"
435 | }
436 | },
437 | "node_modules/@azure/core-http-compat": {
438 | "version": "2.3.1",
439 | "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.3.1.tgz",
440 | "integrity": "sha512-az9BkXND3/d5VgdRRQVkiJb2gOmDU8Qcq4GvjtBmDICNiQ9udFmDk4ZpSB5Qq1OmtDJGlQAfBaS4palFsazQ5g==",
441 | "license": "MIT",
442 | "dependencies": {
443 | "@azure/abort-controller": "^2.1.2",
444 | "@azure/core-client": "^1.10.0",
445 | "@azure/core-rest-pipeline": "^1.22.0"
446 | },
447 | "engines": {
448 | "node": ">=20.0.0"
449 | }
450 | },
451 | "node_modules/@azure/core-lro": {
452 | "version": "2.7.2",
453 | "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz",
454 | "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==",
455 | "license": "MIT",
456 | "dependencies": {
457 | "@azure/abort-controller": "^2.0.0",
458 | "@azure/core-util": "^1.2.0",
459 | "@azure/logger": "^1.0.0",
460 | "tslib": "^2.6.2"
461 | },
462 | "engines": {
463 | "node": ">=18.0.0"
464 | }
465 | },
466 | "node_modules/@azure/core-paging": {
467 | "version": "1.6.2",
468 | "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz",
469 | "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==",
470 | "license": "MIT",
471 | "dependencies": {
472 | "tslib": "^2.6.2"
473 | },
474 | "engines": {
475 | "node": ">=18.0.0"
476 | }
477 | },
478 | "node_modules/@azure/core-rest-pipeline": {
479 | "version": "1.22.1",
480 | "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz",
481 | "integrity": "sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==",
482 | "license": "MIT",
483 | "dependencies": {
484 | "@azure/abort-controller": "^2.1.2",
485 | "@azure/core-auth": "^1.10.0",
486 | "@azure/core-tracing": "^1.3.0",
487 | "@azure/core-util": "^1.13.0",
488 | "@azure/logger": "^1.3.0",
489 | "@typespec/ts-http-runtime": "^0.3.0",
490 | "tslib": "^2.6.2"
491 | },
492 | "engines": {
493 | "node": ">=20.0.0"
494 | }
495 | },
496 | "node_modules/@azure/core-tracing": {
497 | "version": "1.3.1",
498 | "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz",
499 | "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==",
500 | "license": "MIT",
501 | "dependencies": {
502 | "tslib": "^2.6.2"
503 | },
504 | "engines": {
505 | "node": ">=20.0.0"
506 | }
507 | },
508 | "node_modules/@azure/core-util": {
509 | "version": "1.13.1",
510 | "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz",
511 | "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==",
512 | "license": "MIT",
513 | "dependencies": {
514 | "@azure/abort-controller": "^2.1.2",
515 | "@typespec/ts-http-runtime": "^0.3.0",
516 | "tslib": "^2.6.2"
517 | },
518 | "engines": {
519 | "node": ">=20.0.0"
520 | }
521 | },
522 | "node_modules/@azure/functions": {
523 | "version": "4.8.0",
524 | "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.8.0.tgz",
525 | "integrity": "sha512-LNtl3xZNE40vE7+SIST+GYQX5cnnI1M65fXPi26l9XCdPakuQrz54lHv+qQQt1GG5JbqLfQk75iM7A6Y9O+2dQ==",
526 | "license": "MIT",
527 | "dependencies": {
528 | "cookie": "^0.7.0",
529 | "long": "^4.0.0",
530 | "undici": "^5.29.0"
531 | },
532 | "engines": {
533 | "node": ">=18.0"
534 | }
535 | },
536 | "node_modules/@azure/identity": {
537 | "version": "4.13.0",
538 | "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.0.tgz",
539 | "integrity": "sha512-uWC0fssc+hs1TGGVkkghiaFkkS7NkTxfnCH+Hdg+yTehTpMcehpok4PgUKKdyCH+9ldu6FhiHRv84Ntqj1vVcw==",
540 | "license": "MIT",
541 | "dependencies": {
542 | "@azure/abort-controller": "^2.0.0",
543 | "@azure/core-auth": "^1.9.0",
544 | "@azure/core-client": "^1.9.2",
545 | "@azure/core-rest-pipeline": "^1.17.0",
546 | "@azure/core-tracing": "^1.0.0",
547 | "@azure/core-util": "^1.11.0",
548 | "@azure/logger": "^1.0.0",
549 | "@azure/msal-browser": "^4.2.0",
550 | "@azure/msal-node": "^3.5.0",
551 | "open": "^10.1.0",
552 | "tslib": "^2.2.0"
553 | },
554 | "engines": {
555 | "node": ">=20.0.0"
556 | }
557 | },
558 | "node_modules/@azure/keyvault-common": {
559 | "version": "2.0.0",
560 | "resolved": "https://registry.npmjs.org/@azure/keyvault-common/-/keyvault-common-2.0.0.tgz",
561 | "integrity": "sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==",
562 | "license": "MIT",
563 | "dependencies": {
564 | "@azure/abort-controller": "^2.0.0",
565 | "@azure/core-auth": "^1.3.0",
566 | "@azure/core-client": "^1.5.0",
567 | "@azure/core-rest-pipeline": "^1.8.0",
568 | "@azure/core-tracing": "^1.0.0",
569 | "@azure/core-util": "^1.10.0",
570 | "@azure/logger": "^1.1.4",
571 | "tslib": "^2.2.0"
572 | },
573 | "engines": {
574 | "node": ">=18.0.0"
575 | }
576 | },
577 | "node_modules/@azure/keyvault-keys": {
578 | "version": "4.10.0",
579 | "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.10.0.tgz",
580 | "integrity": "sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==",
581 | "license": "MIT",
582 | "dependencies": {
583 | "@azure-rest/core-client": "^2.3.3",
584 | "@azure/abort-controller": "^2.1.2",
585 | "@azure/core-auth": "^1.9.0",
586 | "@azure/core-http-compat": "^2.2.0",
587 | "@azure/core-lro": "^2.7.2",
588 | "@azure/core-paging": "^1.6.2",
589 | "@azure/core-rest-pipeline": "^1.19.0",
590 | "@azure/core-tracing": "^1.2.0",
591 | "@azure/core-util": "^1.11.0",
592 | "@azure/keyvault-common": "^2.0.0",
593 | "@azure/logger": "^1.1.4",
594 | "tslib": "^2.8.1"
595 | },
596 | "engines": {
597 | "node": ">=18.0.0"
598 | }
599 | },
600 | "node_modules/@azure/logger": {
601 | "version": "1.3.0",
602 | "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz",
603 | "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==",
604 | "license": "MIT",
605 | "dependencies": {
606 | "@typespec/ts-http-runtime": "^0.3.0",
607 | "tslib": "^2.6.2"
608 | },
609 | "engines": {
610 | "node": ">=20.0.0"
611 | }
612 | },
613 | "node_modules/@azure/msal-browser": {
614 | "version": "4.25.0",
615 | "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.25.0.tgz",
616 | "integrity": "sha512-kbL+Ae7/UC62wSzxirZddYeVnHvvkvAnSZkBqL55X+jaSXTAXfngnNsDM5acEWU0Q/SAv3gEQfxO1igWOn87Pg==",
617 | "license": "MIT",
618 | "dependencies": {
619 | "@azure/msal-common": "15.13.0"
620 | },
621 | "engines": {
622 | "node": ">=0.8.0"
623 | }
624 | },
625 | "node_modules/@azure/msal-common": {
626 | "version": "15.13.0",
627 | "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.0.tgz",
628 | "integrity": "sha512-8oF6nj02qX7eE/6+wFT5NluXRHc05AgdCC3fJnkjiJooq8u7BcLmxaYYSwc2AfEkWRMRi6Eyvvbeqk4U4412Ag==",
629 | "license": "MIT",
630 | "engines": {
631 | "node": ">=0.8.0"
632 | }
633 | },
634 | "node_modules/@azure/msal-node": {
635 | "version": "3.8.0",
636 | "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.0.tgz",
637 | "integrity": "sha512-23BXm82Mp5XnRhrcd4mrHa0xuUNRp96ivu3nRatrfdAqjoeWAGyD0eEAafxAOHAEWWmdlyFK4ELFcdziXyw2sA==",
638 | "license": "MIT",
639 | "dependencies": {
640 | "@azure/msal-common": "15.13.0",
641 | "jsonwebtoken": "^9.0.0",
642 | "uuid": "^8.3.0"
643 | },
644 | "engines": {
645 | "node": ">=16"
646 | }
647 | },
648 | "node_modules/@azure/msal-node/node_modules/uuid": {
649 | "version": "8.3.2",
650 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
651 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
652 | "license": "MIT",
653 | "bin": {
654 | "uuid": "dist/bin/uuid"
655 | }
656 | },
657 | "node_modules/@fastify/busboy": {
658 | "version": "2.1.1",
659 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
660 | "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
661 | "license": "MIT",
662 | "engines": {
663 | "node": ">=14"
664 | }
665 | },
666 | "node_modules/@graphql-typed-document-node/core": {
667 | "version": "3.2.0",
668 | "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
669 | "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
670 | "license": "MIT",
671 | "peerDependencies": {
672 | "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
673 | }
674 | },
675 | "node_modules/@isaacs/cliui": {
676 | "version": "8.0.2",
677 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
678 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
679 | "dev": true,
680 | "license": "ISC",
681 | "dependencies": {
682 | "string-width": "^5.1.2",
683 | "string-width-cjs": "npm:string-width@^4.2.0",
684 | "strip-ansi": "^7.0.1",
685 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
686 | "wrap-ansi": "^8.1.0",
687 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
688 | },
689 | "engines": {
690 | "node": ">=12"
691 | }
692 | },
693 | "node_modules/@js-joda/core": {
694 | "version": "5.6.5",
695 | "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.6.5.tgz",
696 | "integrity": "sha512-3zwefSMwHpu8iVUW8YYz227sIv6UFqO31p1Bf1ZH/Vom7CmNyUsXjDBlnNzcuhmOL1XfxZ3nvND42kR23XlbcQ==",
697 | "license": "BSD-3-Clause"
698 | },
699 | "node_modules/@pkgjs/parseargs": {
700 | "version": "0.11.0",
701 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
702 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
703 | "dev": true,
704 | "license": "MIT",
705 | "optional": true,
706 | "engines": {
707 | "node": ">=14"
708 | }
709 | },
710 | "node_modules/@prisma/client": {
711 | "version": "6.17.1",
712 | "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.17.1.tgz",
713 | "integrity": "sha512-zL58jbLzYamjnNnmNA51IOZdbk5ci03KviXCuB0Tydc9btH2kDWsi1pQm2VecviRTM7jGia0OPPkgpGnT3nKvw==",
714 | "hasInstallScript": true,
715 | "license": "Apache-2.0",
716 | "engines": {
717 | "node": ">=18.18"
718 | },
719 | "peerDependencies": {
720 | "prisma": "*",
721 | "typescript": ">=5.1.0"
722 | },
723 | "peerDependenciesMeta": {
724 | "prisma": {
725 | "optional": true
726 | },
727 | "typescript": {
728 | "optional": true
729 | }
730 | }
731 | },
732 | "node_modules/@prisma/config": {
733 | "version": "6.17.1",
734 | "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.17.1.tgz",
735 | "integrity": "sha512-fs8wY6DsvOCzuiyWVckrVs1LOcbY4LZNz8ki4uUIQ28jCCzojTGqdLhN2Jl5lDnC1yI8/gNIKpsWDM8pLhOdwA==",
736 | "devOptional": true,
737 | "license": "Apache-2.0",
738 | "dependencies": {
739 | "c12": "3.1.0",
740 | "deepmerge-ts": "7.1.5",
741 | "effect": "3.16.12",
742 | "empathic": "2.0.0"
743 | }
744 | },
745 | "node_modules/@prisma/debug": {
746 | "version": "6.17.1",
747 | "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.17.1.tgz",
748 | "integrity": "sha512-Vf7Tt5Wh9XcndpbmeotuqOMLWPTjEKCsgojxXP2oxE1/xYe7PtnP76hsouG9vis6fctX+TxgmwxTuYi/+xc7dQ==",
749 | "devOptional": true,
750 | "license": "Apache-2.0"
751 | },
752 | "node_modules/@prisma/engines": {
753 | "version": "6.17.1",
754 | "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.17.1.tgz",
755 | "integrity": "sha512-D95Ik3GYZkqZ8lSR4EyFOJ/tR33FcYRP8kK61o+WMsyD10UfJwd7+YielflHfKwiGodcqKqoraWw8ElAgMDbPw==",
756 | "devOptional": true,
757 | "hasInstallScript": true,
758 | "license": "Apache-2.0",
759 | "dependencies": {
760 | "@prisma/debug": "6.17.1",
761 | "@prisma/engines-version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac",
762 | "@prisma/fetch-engine": "6.17.1",
763 | "@prisma/get-platform": "6.17.1"
764 | }
765 | },
766 | "node_modules/@prisma/engines-version": {
767 | "version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac",
768 | "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac.tgz",
769 | "integrity": "sha512-17140E3huOuD9lMdJ9+SF/juOf3WR3sTJMVyyenzqUPbuH+89nPhSWcrY+Mf7tmSs6HvaO+7S+HkELinn6bhdg==",
770 | "devOptional": true,
771 | "license": "Apache-2.0"
772 | },
773 | "node_modules/@prisma/fetch-engine": {
774 | "version": "6.17.1",
775 | "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.17.1.tgz",
776 | "integrity": "sha512-AYZiHOs184qkDMiTeshyJCtyL4yERkjfTkJiSJdYuSfc24m94lTNL5+GFinZ6vVz+ktX4NJzHKn1zIFzGTWrWg==",
777 | "devOptional": true,
778 | "license": "Apache-2.0",
779 | "dependencies": {
780 | "@prisma/debug": "6.17.1",
781 | "@prisma/engines-version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac",
782 | "@prisma/get-platform": "6.17.1"
783 | }
784 | },
785 | "node_modules/@prisma/get-platform": {
786 | "version": "6.17.1",
787 | "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.17.1.tgz",
788 | "integrity": "sha512-AKEn6fsfz0r482S5KRDFlIGEaq9wLNcgalD1adL+fPcFFblIKs1sD81kY/utrHdqKuVC6E1XSRpegDK3ZLL4Qg==",
789 | "devOptional": true,
790 | "license": "Apache-2.0",
791 | "dependencies": {
792 | "@prisma/debug": "6.17.1"
793 | }
794 | },
795 | "node_modules/@protobufjs/aspromise": {
796 | "version": "1.1.2",
797 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
798 | "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
799 | "license": "BSD-3-Clause"
800 | },
801 | "node_modules/@protobufjs/base64": {
802 | "version": "1.1.2",
803 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
804 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
805 | "license": "BSD-3-Clause"
806 | },
807 | "node_modules/@protobufjs/codegen": {
808 | "version": "2.0.4",
809 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
810 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
811 | "license": "BSD-3-Clause"
812 | },
813 | "node_modules/@protobufjs/eventemitter": {
814 | "version": "1.1.0",
815 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
816 | "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
817 | "license": "BSD-3-Clause"
818 | },
819 | "node_modules/@protobufjs/fetch": {
820 | "version": "1.1.0",
821 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
822 | "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
823 | "license": "BSD-3-Clause",
824 | "dependencies": {
825 | "@protobufjs/aspromise": "^1.1.1",
826 | "@protobufjs/inquire": "^1.1.0"
827 | }
828 | },
829 | "node_modules/@protobufjs/float": {
830 | "version": "1.0.2",
831 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
832 | "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
833 | "license": "BSD-3-Clause"
834 | },
835 | "node_modules/@protobufjs/inquire": {
836 | "version": "1.1.0",
837 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
838 | "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
839 | "license": "BSD-3-Clause"
840 | },
841 | "node_modules/@protobufjs/path": {
842 | "version": "1.1.2",
843 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
844 | "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
845 | "license": "BSD-3-Clause"
846 | },
847 | "node_modules/@protobufjs/pool": {
848 | "version": "1.1.0",
849 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
850 | "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
851 | "license": "BSD-3-Clause"
852 | },
853 | "node_modules/@protobufjs/utf8": {
854 | "version": "1.1.0",
855 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
856 | "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
857 | "license": "BSD-3-Clause"
858 | },
859 | "node_modules/@standard-schema/spec": {
860 | "version": "1.0.0",
861 | "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
862 | "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
863 | "devOptional": true,
864 | "license": "MIT"
865 | },
866 | "node_modules/@types/long": {
867 | "version": "4.0.2",
868 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
869 | "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
870 | "license": "MIT"
871 | },
872 | "node_modules/@types/node": {
873 | "version": "18.19.130",
874 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
875 | "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
876 | "license": "MIT",
877 | "dependencies": {
878 | "undici-types": "~5.26.4"
879 | }
880 | },
881 | "node_modules/@types/readable-stream": {
882 | "version": "4.0.21",
883 | "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz",
884 | "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==",
885 | "license": "MIT",
886 | "dependencies": {
887 | "@types/node": "*"
888 | }
889 | },
890 | "node_modules/@typespec/ts-http-runtime": {
891 | "version": "0.3.1",
892 | "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz",
893 | "integrity": "sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==",
894 | "license": "MIT",
895 | "dependencies": {
896 | "http-proxy-agent": "^7.0.0",
897 | "https-proxy-agent": "^7.0.0",
898 | "tslib": "^2.6.2"
899 | },
900 | "engines": {
901 | "node": ">=20.0.0"
902 | }
903 | },
904 | "node_modules/@whatwg-node/promise-helpers": {
905 | "version": "1.3.2",
906 | "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz",
907 | "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==",
908 | "license": "MIT",
909 | "dependencies": {
910 | "tslib": "^2.6.3"
911 | },
912 | "engines": {
913 | "node": ">=16.0.0"
914 | }
915 | },
916 | "node_modules/abort-controller": {
917 | "version": "3.0.0",
918 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
919 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
920 | "license": "MIT",
921 | "dependencies": {
922 | "event-target-shim": "^5.0.0"
923 | },
924 | "engines": {
925 | "node": ">=6.5"
926 | }
927 | },
928 | "node_modules/agent-base": {
929 | "version": "7.1.4",
930 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
931 | "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
932 | "license": "MIT",
933 | "engines": {
934 | "node": ">= 14"
935 | }
936 | },
937 | "node_modules/ansi-regex": {
938 | "version": "6.2.2",
939 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
940 | "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
941 | "dev": true,
942 | "license": "MIT",
943 | "engines": {
944 | "node": ">=12"
945 | },
946 | "funding": {
947 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
948 | }
949 | },
950 | "node_modules/ansi-styles": {
951 | "version": "6.2.3",
952 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
953 | "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
954 | "dev": true,
955 | "license": "MIT",
956 | "engines": {
957 | "node": ">=12"
958 | },
959 | "funding": {
960 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
961 | }
962 | },
963 | "node_modules/async-retry": {
964 | "version": "1.3.3",
965 | "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
966 | "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
967 | "license": "MIT",
968 | "dependencies": {
969 | "retry": "0.13.1"
970 | }
971 | },
972 | "node_modules/available-typed-arrays": {
973 | "version": "1.0.7",
974 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
975 | "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
976 | "license": "MIT",
977 | "dependencies": {
978 | "possible-typed-array-names": "^1.0.0"
979 | },
980 | "engines": {
981 | "node": ">= 0.4"
982 | },
983 | "funding": {
984 | "url": "https://github.com/sponsors/ljharb"
985 | }
986 | },
987 | "node_modules/azure-functions-core-tools": {
988 | "version": "4.3.0",
989 | "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.3.0.tgz",
990 | "integrity": "sha512-BDxN9lkDy3hNQXnrdX79P94r8DibaTMyhXi4+HL//lOY7ePxgPM7CiPzAcbdGzNR7m5fxmX9dWzmtXsjJJuZtA==",
991 | "dev": true,
992 | "hasInstallScript": true,
993 | "hasShrinkwrap": true,
994 | "license": "MIT",
995 | "os": [
996 | "win32",
997 | "darwin",
998 | "linux"
999 | ],
1000 | "dependencies": {
1001 | "chalk": "3.0.0",
1002 | "extract-zip": "^2.0.1",
1003 | "https-proxy-agent": "5.0.1",
1004 | "progress": "2.0.3",
1005 | "rimraf": "4.4.1"
1006 | },
1007 | "bin": {
1008 | "azfun": "lib/main.js",
1009 | "azurefunctions": "lib/main.js",
1010 | "func": "lib/main.js"
1011 | },
1012 | "engines": {
1013 | "node": ">=6.9.1"
1014 | }
1015 | },
1016 | "node_modules/azure-functions-core-tools/node_modules/@types/color-name": {
1017 | "version": "1.1.1",
1018 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
1019 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
1020 | "dev": true
1021 | },
1022 | "node_modules/azure-functions-core-tools/node_modules/@types/node": {
1023 | "version": "18.15.13",
1024 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz",
1025 | "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==",
1026 | "dev": true,
1027 | "optional": true
1028 | },
1029 | "node_modules/azure-functions-core-tools/node_modules/@types/yauzl": {
1030 | "version": "2.10.0",
1031 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
1032 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
1033 | "dev": true,
1034 | "optional": true,
1035 | "dependencies": {
1036 | "@types/node": "*"
1037 | }
1038 | },
1039 | "node_modules/azure-functions-core-tools/node_modules/agent-base": {
1040 | "version": "6.0.2",
1041 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
1042 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
1043 | "dev": true,
1044 | "dependencies": {
1045 | "debug": "4"
1046 | },
1047 | "engines": {
1048 | "node": ">= 6.0.0"
1049 | }
1050 | },
1051 | "node_modules/azure-functions-core-tools/node_modules/ansi-styles": {
1052 | "version": "4.2.0",
1053 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz",
1054 | "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==",
1055 | "dev": true,
1056 | "dependencies": {
1057 | "@types/color-name": "^1.1.1",
1058 | "color-convert": "^2.0.1"
1059 | },
1060 | "engines": {
1061 | "node": ">=8"
1062 | }
1063 | },
1064 | "node_modules/azure-functions-core-tools/node_modules/balanced-match": {
1065 | "version": "1.0.2",
1066 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1067 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1068 | "dev": true,
1069 | "license": "MIT"
1070 | },
1071 | "node_modules/azure-functions-core-tools/node_modules/brace-expansion": {
1072 | "version": "2.0.2",
1073 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
1074 | "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
1075 | "dev": true,
1076 | "license": "MIT",
1077 | "dependencies": {
1078 | "balanced-match": "^1.0.0"
1079 | }
1080 | },
1081 | "node_modules/azure-functions-core-tools/node_modules/buffer-crc32": {
1082 | "version": "0.2.13",
1083 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
1084 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
1085 | "dev": true,
1086 | "engines": {
1087 | "node": "*"
1088 | }
1089 | },
1090 | "node_modules/azure-functions-core-tools/node_modules/chalk": {
1091 | "version": "3.0.0",
1092 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
1093 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
1094 | "dev": true,
1095 | "dependencies": {
1096 | "ansi-styles": "^4.1.0",
1097 | "supports-color": "^7.1.0"
1098 | },
1099 | "engines": {
1100 | "node": ">=8"
1101 | }
1102 | },
1103 | "node_modules/azure-functions-core-tools/node_modules/color-convert": {
1104 | "version": "2.0.1",
1105 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1106 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1107 | "dev": true,
1108 | "dependencies": {
1109 | "color-name": "~1.1.4"
1110 | },
1111 | "engines": {
1112 | "node": ">=7.0.0"
1113 | }
1114 | },
1115 | "node_modules/azure-functions-core-tools/node_modules/color-name": {
1116 | "version": "1.1.4",
1117 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1118 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1119 | "dev": true
1120 | },
1121 | "node_modules/azure-functions-core-tools/node_modules/debug": {
1122 | "version": "4.3.7",
1123 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
1124 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
1125 | "dev": true,
1126 | "license": "MIT",
1127 | "dependencies": {
1128 | "ms": "^2.1.3"
1129 | },
1130 | "engines": {
1131 | "node": ">=6.0"
1132 | },
1133 | "peerDependenciesMeta": {
1134 | "supports-color": {
1135 | "optional": true
1136 | }
1137 | }
1138 | },
1139 | "node_modules/azure-functions-core-tools/node_modules/end-of-stream": {
1140 | "version": "1.4.4",
1141 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
1142 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
1143 | "dev": true,
1144 | "dependencies": {
1145 | "once": "^1.4.0"
1146 | }
1147 | },
1148 | "node_modules/azure-functions-core-tools/node_modules/extract-zip": {
1149 | "version": "2.0.1",
1150 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
1151 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
1152 | "dev": true,
1153 | "dependencies": {
1154 | "debug": "^4.1.1",
1155 | "get-stream": "^5.1.0",
1156 | "yauzl": "^2.10.0"
1157 | },
1158 | "bin": {
1159 | "extract-zip": "cli.js"
1160 | },
1161 | "engines": {
1162 | "node": ">= 10.17.0"
1163 | },
1164 | "optionalDependencies": {
1165 | "@types/yauzl": "^2.9.1"
1166 | }
1167 | },
1168 | "node_modules/azure-functions-core-tools/node_modules/fd-slicer": {
1169 | "version": "1.1.0",
1170 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
1171 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
1172 | "dev": true,
1173 | "dependencies": {
1174 | "pend": "~1.2.0"
1175 | }
1176 | },
1177 | "node_modules/azure-functions-core-tools/node_modules/fs.realpath": {
1178 | "version": "1.0.0",
1179 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1180 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1181 | "dev": true,
1182 | "license": "ISC"
1183 | },
1184 | "node_modules/azure-functions-core-tools/node_modules/get-stream": {
1185 | "version": "5.2.0",
1186 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
1187 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
1188 | "dev": true,
1189 | "dependencies": {
1190 | "pump": "^3.0.0"
1191 | },
1192 | "engines": {
1193 | "node": ">=8"
1194 | },
1195 | "funding": {
1196 | "url": "https://github.com/sponsors/sindresorhus"
1197 | }
1198 | },
1199 | "node_modules/azure-functions-core-tools/node_modules/glob": {
1200 | "version": "9.3.5",
1201 | "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
1202 | "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
1203 | "dev": true,
1204 | "license": "ISC",
1205 | "dependencies": {
1206 | "fs.realpath": "^1.0.0",
1207 | "minimatch": "^8.0.2",
1208 | "minipass": "^4.2.4",
1209 | "path-scurry": "^1.6.1"
1210 | },
1211 | "engines": {
1212 | "node": ">=16 || 14 >=14.17"
1213 | },
1214 | "funding": {
1215 | "url": "https://github.com/sponsors/isaacs"
1216 | }
1217 | },
1218 | "node_modules/azure-functions-core-tools/node_modules/has-flag": {
1219 | "version": "4.0.0",
1220 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1221 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1222 | "dev": true,
1223 | "engines": {
1224 | "node": ">=8"
1225 | }
1226 | },
1227 | "node_modules/azure-functions-core-tools/node_modules/https-proxy-agent": {
1228 | "version": "5.0.1",
1229 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
1230 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
1231 | "dev": true,
1232 | "license": "MIT",
1233 | "dependencies": {
1234 | "agent-base": "6",
1235 | "debug": "4"
1236 | },
1237 | "engines": {
1238 | "node": ">= 6"
1239 | }
1240 | },
1241 | "node_modules/azure-functions-core-tools/node_modules/lru-cache": {
1242 | "version": "10.4.3",
1243 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1244 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
1245 | "dev": true,
1246 | "license": "ISC"
1247 | },
1248 | "node_modules/azure-functions-core-tools/node_modules/minimatch": {
1249 | "version": "8.0.4",
1250 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
1251 | "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
1252 | "dev": true,
1253 | "license": "ISC",
1254 | "dependencies": {
1255 | "brace-expansion": "^2.0.1"
1256 | },
1257 | "engines": {
1258 | "node": ">=16 || 14 >=14.17"
1259 | },
1260 | "funding": {
1261 | "url": "https://github.com/sponsors/isaacs"
1262 | }
1263 | },
1264 | "node_modules/azure-functions-core-tools/node_modules/minipass": {
1265 | "version": "4.2.8",
1266 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
1267 | "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
1268 | "dev": true,
1269 | "license": "ISC",
1270 | "engines": {
1271 | "node": ">=8"
1272 | }
1273 | },
1274 | "node_modules/azure-functions-core-tools/node_modules/ms": {
1275 | "version": "2.1.3",
1276 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1277 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1278 | "dev": true,
1279 | "license": "MIT"
1280 | },
1281 | "node_modules/azure-functions-core-tools/node_modules/once": {
1282 | "version": "1.4.0",
1283 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1284 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1285 | "dev": true,
1286 | "dependencies": {
1287 | "wrappy": "1"
1288 | }
1289 | },
1290 | "node_modules/azure-functions-core-tools/node_modules/path-scurry": {
1291 | "version": "1.11.1",
1292 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1293 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1294 | "dev": true,
1295 | "license": "BlueOak-1.0.0",
1296 | "dependencies": {
1297 | "lru-cache": "^10.2.0",
1298 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1299 | },
1300 | "engines": {
1301 | "node": ">=16 || 14 >=14.18"
1302 | },
1303 | "funding": {
1304 | "url": "https://github.com/sponsors/isaacs"
1305 | }
1306 | },
1307 | "node_modules/azure-functions-core-tools/node_modules/path-scurry/node_modules/minipass": {
1308 | "version": "7.1.2",
1309 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1310 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1311 | "dev": true,
1312 | "license": "ISC",
1313 | "engines": {
1314 | "node": ">=16 || 14 >=14.17"
1315 | }
1316 | },
1317 | "node_modules/azure-functions-core-tools/node_modules/pend": {
1318 | "version": "1.2.0",
1319 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
1320 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
1321 | "dev": true
1322 | },
1323 | "node_modules/azure-functions-core-tools/node_modules/progress": {
1324 | "version": "2.0.3",
1325 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1326 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1327 | "dev": true,
1328 | "engines": {
1329 | "node": ">=0.4.0"
1330 | }
1331 | },
1332 | "node_modules/azure-functions-core-tools/node_modules/pump": {
1333 | "version": "3.0.0",
1334 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1335 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1336 | "dev": true,
1337 | "dependencies": {
1338 | "end-of-stream": "^1.1.0",
1339 | "once": "^1.3.1"
1340 | }
1341 | },
1342 | "node_modules/azure-functions-core-tools/node_modules/rimraf": {
1343 | "version": "4.4.1",
1344 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
1345 | "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
1346 | "dev": true,
1347 | "license": "ISC",
1348 | "dependencies": {
1349 | "glob": "^9.2.0"
1350 | },
1351 | "bin": {
1352 | "rimraf": "dist/cjs/src/bin.js"
1353 | },
1354 | "engines": {
1355 | "node": ">=14"
1356 | },
1357 | "funding": {
1358 | "url": "https://github.com/sponsors/isaacs"
1359 | }
1360 | },
1361 | "node_modules/azure-functions-core-tools/node_modules/supports-color": {
1362 | "version": "7.1.0",
1363 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
1364 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
1365 | "dev": true,
1366 | "dependencies": {
1367 | "has-flag": "^4.0.0"
1368 | },
1369 | "engines": {
1370 | "node": ">=8"
1371 | }
1372 | },
1373 | "node_modules/azure-functions-core-tools/node_modules/wrappy": {
1374 | "version": "1.0.2",
1375 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1376 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1377 | "dev": true
1378 | },
1379 | "node_modules/azure-functions-core-tools/node_modules/yauzl": {
1380 | "version": "2.10.0",
1381 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
1382 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
1383 | "dev": true,
1384 | "dependencies": {
1385 | "buffer-crc32": "~0.2.3",
1386 | "fd-slicer": "~1.1.0"
1387 | }
1388 | },
1389 | "node_modules/balanced-match": {
1390 | "version": "1.0.2",
1391 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1392 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1393 | "dev": true,
1394 | "license": "MIT"
1395 | },
1396 | "node_modules/base64-js": {
1397 | "version": "1.5.1",
1398 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
1399 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
1400 | "funding": [
1401 | {
1402 | "type": "github",
1403 | "url": "https://github.com/sponsors/feross"
1404 | },
1405 | {
1406 | "type": "patreon",
1407 | "url": "https://www.patreon.com/feross"
1408 | },
1409 | {
1410 | "type": "consulting",
1411 | "url": "https://feross.org/support"
1412 | }
1413 | ],
1414 | "license": "MIT"
1415 | },
1416 | "node_modules/bl": {
1417 | "version": "6.1.4",
1418 | "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.4.tgz",
1419 | "integrity": "sha512-ZV/9asSuknOExbM/zPPA8z00lc1ihPKWaStHkkQrxHNeYx+yY+TmF+v80dpv2G0mv3HVXBu7ryoAsxbFFhf4eg==",
1420 | "license": "MIT",
1421 | "dependencies": {
1422 | "@types/readable-stream": "^4.0.0",
1423 | "buffer": "^6.0.3",
1424 | "inherits": "^2.0.4",
1425 | "readable-stream": "^4.2.0"
1426 | }
1427 | },
1428 | "node_modules/body-parser": {
1429 | "version": "2.2.0",
1430 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
1431 | "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
1432 | "license": "MIT",
1433 | "dependencies": {
1434 | "bytes": "^3.1.2",
1435 | "content-type": "^1.0.5",
1436 | "debug": "^4.4.0",
1437 | "http-errors": "^2.0.0",
1438 | "iconv-lite": "^0.6.3",
1439 | "on-finished": "^2.4.1",
1440 | "qs": "^6.14.0",
1441 | "raw-body": "^3.0.0",
1442 | "type-is": "^2.0.0"
1443 | },
1444 | "engines": {
1445 | "node": ">=18"
1446 | }
1447 | },
1448 | "node_modules/brace-expansion": {
1449 | "version": "2.0.2",
1450 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
1451 | "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
1452 | "dev": true,
1453 | "license": "MIT",
1454 | "dependencies": {
1455 | "balanced-match": "^1.0.0"
1456 | }
1457 | },
1458 | "node_modules/buffer": {
1459 | "version": "6.0.3",
1460 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
1461 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
1462 | "funding": [
1463 | {
1464 | "type": "github",
1465 | "url": "https://github.com/sponsors/feross"
1466 | },
1467 | {
1468 | "type": "patreon",
1469 | "url": "https://www.patreon.com/feross"
1470 | },
1471 | {
1472 | "type": "consulting",
1473 | "url": "https://feross.org/support"
1474 | }
1475 | ],
1476 | "license": "MIT",
1477 | "dependencies": {
1478 | "base64-js": "^1.3.1",
1479 | "ieee754": "^1.2.1"
1480 | }
1481 | },
1482 | "node_modules/buffer-equal-constant-time": {
1483 | "version": "1.0.1",
1484 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
1485 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
1486 | "license": "BSD-3-Clause"
1487 | },
1488 | "node_modules/bundle-name": {
1489 | "version": "4.1.0",
1490 | "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
1491 | "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
1492 | "license": "MIT",
1493 | "dependencies": {
1494 | "run-applescript": "^7.0.0"
1495 | },
1496 | "engines": {
1497 | "node": ">=18"
1498 | },
1499 | "funding": {
1500 | "url": "https://github.com/sponsors/sindresorhus"
1501 | }
1502 | },
1503 | "node_modules/bytes": {
1504 | "version": "3.1.2",
1505 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
1506 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
1507 | "license": "MIT",
1508 | "engines": {
1509 | "node": ">= 0.8"
1510 | }
1511 | },
1512 | "node_modules/c12": {
1513 | "version": "3.1.0",
1514 | "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz",
1515 | "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==",
1516 | "devOptional": true,
1517 | "license": "MIT",
1518 | "dependencies": {
1519 | "chokidar": "^4.0.3",
1520 | "confbox": "^0.2.2",
1521 | "defu": "^6.1.4",
1522 | "dotenv": "^16.6.1",
1523 | "exsolve": "^1.0.7",
1524 | "giget": "^2.0.0",
1525 | "jiti": "^2.4.2",
1526 | "ohash": "^2.0.11",
1527 | "pathe": "^2.0.3",
1528 | "perfect-debounce": "^1.0.0",
1529 | "pkg-types": "^2.2.0",
1530 | "rc9": "^2.1.2"
1531 | },
1532 | "peerDependencies": {
1533 | "magicast": "^0.3.5"
1534 | },
1535 | "peerDependenciesMeta": {
1536 | "magicast": {
1537 | "optional": true
1538 | }
1539 | }
1540 | },
1541 | "node_modules/c12/node_modules/dotenv": {
1542 | "version": "16.6.1",
1543 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
1544 | "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
1545 | "devOptional": true,
1546 | "license": "BSD-2-Clause",
1547 | "engines": {
1548 | "node": ">=12"
1549 | },
1550 | "funding": {
1551 | "url": "https://dotenvx.com"
1552 | }
1553 | },
1554 | "node_modules/call-bind": {
1555 | "version": "1.0.8",
1556 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
1557 | "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
1558 | "license": "MIT",
1559 | "dependencies": {
1560 | "call-bind-apply-helpers": "^1.0.0",
1561 | "es-define-property": "^1.0.0",
1562 | "get-intrinsic": "^1.2.4",
1563 | "set-function-length": "^1.2.2"
1564 | },
1565 | "engines": {
1566 | "node": ">= 0.4"
1567 | },
1568 | "funding": {
1569 | "url": "https://github.com/sponsors/ljharb"
1570 | }
1571 | },
1572 | "node_modules/call-bind-apply-helpers": {
1573 | "version": "1.0.2",
1574 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
1575 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
1576 | "license": "MIT",
1577 | "dependencies": {
1578 | "es-errors": "^1.3.0",
1579 | "function-bind": "^1.1.2"
1580 | },
1581 | "engines": {
1582 | "node": ">= 0.4"
1583 | }
1584 | },
1585 | "node_modules/call-bound": {
1586 | "version": "1.0.4",
1587 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
1588 | "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
1589 | "license": "MIT",
1590 | "dependencies": {
1591 | "call-bind-apply-helpers": "^1.0.2",
1592 | "get-intrinsic": "^1.3.0"
1593 | },
1594 | "engines": {
1595 | "node": ">= 0.4"
1596 | },
1597 | "funding": {
1598 | "url": "https://github.com/sponsors/ljharb"
1599 | }
1600 | },
1601 | "node_modules/chokidar": {
1602 | "version": "4.0.3",
1603 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
1604 | "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
1605 | "devOptional": true,
1606 | "license": "MIT",
1607 | "dependencies": {
1608 | "readdirp": "^4.0.1"
1609 | },
1610 | "engines": {
1611 | "node": ">= 14.16.0"
1612 | },
1613 | "funding": {
1614 | "url": "https://paulmillr.com/funding/"
1615 | }
1616 | },
1617 | "node_modules/citty": {
1618 | "version": "0.1.6",
1619 | "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
1620 | "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
1621 | "devOptional": true,
1622 | "license": "MIT",
1623 | "dependencies": {
1624 | "consola": "^3.2.3"
1625 | }
1626 | },
1627 | "node_modules/color-convert": {
1628 | "version": "2.0.1",
1629 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1630 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1631 | "dev": true,
1632 | "license": "MIT",
1633 | "dependencies": {
1634 | "color-name": "~1.1.4"
1635 | },
1636 | "engines": {
1637 | "node": ">=7.0.0"
1638 | }
1639 | },
1640 | "node_modules/color-name": {
1641 | "version": "1.1.4",
1642 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1643 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1644 | "dev": true,
1645 | "license": "MIT"
1646 | },
1647 | "node_modules/confbox": {
1648 | "version": "0.2.2",
1649 | "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
1650 | "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
1651 | "devOptional": true,
1652 | "license": "MIT"
1653 | },
1654 | "node_modules/consola": {
1655 | "version": "3.4.2",
1656 | "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
1657 | "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
1658 | "devOptional": true,
1659 | "license": "MIT",
1660 | "engines": {
1661 | "node": "^14.18.0 || >=16.10.0"
1662 | }
1663 | },
1664 | "node_modules/content-type": {
1665 | "version": "1.0.5",
1666 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
1667 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
1668 | "license": "MIT",
1669 | "engines": {
1670 | "node": ">= 0.6"
1671 | }
1672 | },
1673 | "node_modules/cookie": {
1674 | "version": "0.7.2",
1675 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
1676 | "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
1677 | "license": "MIT",
1678 | "engines": {
1679 | "node": ">= 0.6"
1680 | }
1681 | },
1682 | "node_modules/cors": {
1683 | "version": "2.8.5",
1684 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
1685 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
1686 | "license": "MIT",
1687 | "dependencies": {
1688 | "object-assign": "^4",
1689 | "vary": "^1"
1690 | },
1691 | "engines": {
1692 | "node": ">= 0.10"
1693 | }
1694 | },
1695 | "node_modules/cross-inspect": {
1696 | "version": "1.0.1",
1697 | "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz",
1698 | "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==",
1699 | "license": "MIT",
1700 | "dependencies": {
1701 | "tslib": "^2.4.0"
1702 | },
1703 | "engines": {
1704 | "node": ">=16.0.0"
1705 | }
1706 | },
1707 | "node_modules/cross-spawn": {
1708 | "version": "7.0.6",
1709 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1710 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1711 | "dev": true,
1712 | "license": "MIT",
1713 | "dependencies": {
1714 | "path-key": "^3.1.0",
1715 | "shebang-command": "^2.0.0",
1716 | "which": "^2.0.1"
1717 | },
1718 | "engines": {
1719 | "node": ">= 8"
1720 | }
1721 | },
1722 | "node_modules/debug": {
1723 | "version": "4.4.3",
1724 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1725 | "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1726 | "license": "MIT",
1727 | "dependencies": {
1728 | "ms": "^2.1.3"
1729 | },
1730 | "engines": {
1731 | "node": ">=6.0"
1732 | },
1733 | "peerDependenciesMeta": {
1734 | "supports-color": {
1735 | "optional": true
1736 | }
1737 | }
1738 | },
1739 | "node_modules/deepmerge-ts": {
1740 | "version": "7.1.5",
1741 | "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
1742 | "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==",
1743 | "devOptional": true,
1744 | "license": "BSD-3-Clause",
1745 | "engines": {
1746 | "node": ">=16.0.0"
1747 | }
1748 | },
1749 | "node_modules/default-browser": {
1750 | "version": "5.2.1",
1751 | "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
1752 | "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
1753 | "license": "MIT",
1754 | "dependencies": {
1755 | "bundle-name": "^4.1.0",
1756 | "default-browser-id": "^5.0.0"
1757 | },
1758 | "engines": {
1759 | "node": ">=18"
1760 | },
1761 | "funding": {
1762 | "url": "https://github.com/sponsors/sindresorhus"
1763 | }
1764 | },
1765 | "node_modules/default-browser-id": {
1766 | "version": "5.0.0",
1767 | "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
1768 | "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
1769 | "license": "MIT",
1770 | "engines": {
1771 | "node": ">=18"
1772 | },
1773 | "funding": {
1774 | "url": "https://github.com/sponsors/sindresorhus"
1775 | }
1776 | },
1777 | "node_modules/define-data-property": {
1778 | "version": "1.1.4",
1779 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
1780 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
1781 | "license": "MIT",
1782 | "dependencies": {
1783 | "es-define-property": "^1.0.0",
1784 | "es-errors": "^1.3.0",
1785 | "gopd": "^1.0.1"
1786 | },
1787 | "engines": {
1788 | "node": ">= 0.4"
1789 | },
1790 | "funding": {
1791 | "url": "https://github.com/sponsors/ljharb"
1792 | }
1793 | },
1794 | "node_modules/define-lazy-prop": {
1795 | "version": "3.0.0",
1796 | "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
1797 | "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
1798 | "license": "MIT",
1799 | "engines": {
1800 | "node": ">=12"
1801 | },
1802 | "funding": {
1803 | "url": "https://github.com/sponsors/sindresorhus"
1804 | }
1805 | },
1806 | "node_modules/defu": {
1807 | "version": "6.1.4",
1808 | "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
1809 | "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
1810 | "devOptional": true,
1811 | "license": "MIT"
1812 | },
1813 | "node_modules/depd": {
1814 | "version": "2.0.0",
1815 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
1816 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
1817 | "license": "MIT",
1818 | "engines": {
1819 | "node": ">= 0.8"
1820 | }
1821 | },
1822 | "node_modules/destr": {
1823 | "version": "2.0.5",
1824 | "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
1825 | "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
1826 | "devOptional": true,
1827 | "license": "MIT"
1828 | },
1829 | "node_modules/dotenv": {
1830 | "version": "17.2.3",
1831 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
1832 | "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
1833 | "license": "BSD-2-Clause",
1834 | "engines": {
1835 | "node": ">=12"
1836 | },
1837 | "funding": {
1838 | "url": "https://dotenvx.com"
1839 | }
1840 | },
1841 | "node_modules/dset": {
1842 | "version": "3.1.4",
1843 | "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
1844 | "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
1845 | "license": "MIT",
1846 | "engines": {
1847 | "node": ">=4"
1848 | }
1849 | },
1850 | "node_modules/dunder-proto": {
1851 | "version": "1.0.1",
1852 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
1853 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
1854 | "license": "MIT",
1855 | "dependencies": {
1856 | "call-bind-apply-helpers": "^1.0.1",
1857 | "es-errors": "^1.3.0",
1858 | "gopd": "^1.2.0"
1859 | },
1860 | "engines": {
1861 | "node": ">= 0.4"
1862 | }
1863 | },
1864 | "node_modules/eastasianwidth": {
1865 | "version": "0.2.0",
1866 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1867 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1868 | "dev": true,
1869 | "license": "MIT"
1870 | },
1871 | "node_modules/ecdsa-sig-formatter": {
1872 | "version": "1.0.11",
1873 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
1874 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
1875 | "license": "Apache-2.0",
1876 | "dependencies": {
1877 | "safe-buffer": "^5.0.1"
1878 | }
1879 | },
1880 | "node_modules/ee-first": {
1881 | "version": "1.1.1",
1882 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1883 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
1884 | "license": "MIT"
1885 | },
1886 | "node_modules/effect": {
1887 | "version": "3.16.12",
1888 | "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz",
1889 | "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==",
1890 | "devOptional": true,
1891 | "license": "MIT",
1892 | "dependencies": {
1893 | "@standard-schema/spec": "^1.0.0",
1894 | "fast-check": "^3.23.1"
1895 | }
1896 | },
1897 | "node_modules/emoji-regex": {
1898 | "version": "9.2.2",
1899 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1900 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1901 | "dev": true,
1902 | "license": "MIT"
1903 | },
1904 | "node_modules/empathic": {
1905 | "version": "2.0.0",
1906 | "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz",
1907 | "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==",
1908 | "devOptional": true,
1909 | "license": "MIT",
1910 | "engines": {
1911 | "node": ">=14"
1912 | }
1913 | },
1914 | "node_modules/encodeurl": {
1915 | "version": "2.0.0",
1916 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
1917 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
1918 | "license": "MIT",
1919 | "engines": {
1920 | "node": ">= 0.8"
1921 | }
1922 | },
1923 | "node_modules/es-define-property": {
1924 | "version": "1.0.1",
1925 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
1926 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
1927 | "license": "MIT",
1928 | "engines": {
1929 | "node": ">= 0.4"
1930 | }
1931 | },
1932 | "node_modules/es-errors": {
1933 | "version": "1.3.0",
1934 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1935 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1936 | "license": "MIT",
1937 | "engines": {
1938 | "node": ">= 0.4"
1939 | }
1940 | },
1941 | "node_modules/es-object-atoms": {
1942 | "version": "1.1.1",
1943 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
1944 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
1945 | "license": "MIT",
1946 | "dependencies": {
1947 | "es-errors": "^1.3.0"
1948 | },
1949 | "engines": {
1950 | "node": ">= 0.4"
1951 | }
1952 | },
1953 | "node_modules/escape-html": {
1954 | "version": "1.0.3",
1955 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1956 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
1957 | "license": "MIT"
1958 | },
1959 | "node_modules/event-target-shim": {
1960 | "version": "5.0.1",
1961 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
1962 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
1963 | "license": "MIT",
1964 | "engines": {
1965 | "node": ">=6"
1966 | }
1967 | },
1968 | "node_modules/events": {
1969 | "version": "3.3.0",
1970 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
1971 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
1972 | "license": "MIT",
1973 | "engines": {
1974 | "node": ">=0.8.x"
1975 | }
1976 | },
1977 | "node_modules/exsolve": {
1978 | "version": "1.0.7",
1979 | "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
1980 | "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
1981 | "devOptional": true,
1982 | "license": "MIT"
1983 | },
1984 | "node_modules/fast-check": {
1985 | "version": "3.23.2",
1986 | "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz",
1987 | "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==",
1988 | "devOptional": true,
1989 | "funding": [
1990 | {
1991 | "type": "individual",
1992 | "url": "https://github.com/sponsors/dubzzz"
1993 | },
1994 | {
1995 | "type": "opencollective",
1996 | "url": "https://opencollective.com/fast-check"
1997 | }
1998 | ],
1999 | "license": "MIT",
2000 | "dependencies": {
2001 | "pure-rand": "^6.1.0"
2002 | },
2003 | "engines": {
2004 | "node": ">=8.0.0"
2005 | }
2006 | },
2007 | "node_modules/finalhandler": {
2008 | "version": "2.1.0",
2009 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
2010 | "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
2011 | "license": "MIT",
2012 | "dependencies": {
2013 | "debug": "^4.4.0",
2014 | "encodeurl": "^2.0.0",
2015 | "escape-html": "^1.0.3",
2016 | "on-finished": "^2.4.1",
2017 | "parseurl": "^1.3.3",
2018 | "statuses": "^2.0.1"
2019 | },
2020 | "engines": {
2021 | "node": ">= 0.8"
2022 | }
2023 | },
2024 | "node_modules/for-each": {
2025 | "version": "0.3.5",
2026 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
2027 | "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
2028 | "license": "MIT",
2029 | "dependencies": {
2030 | "is-callable": "^1.2.7"
2031 | },
2032 | "engines": {
2033 | "node": ">= 0.4"
2034 | },
2035 | "funding": {
2036 | "url": "https://github.com/sponsors/ljharb"
2037 | }
2038 | },
2039 | "node_modules/foreground-child": {
2040 | "version": "3.3.1",
2041 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
2042 | "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
2043 | "dev": true,
2044 | "license": "ISC",
2045 | "dependencies": {
2046 | "cross-spawn": "^7.0.6",
2047 | "signal-exit": "^4.0.1"
2048 | },
2049 | "engines": {
2050 | "node": ">=14"
2051 | },
2052 | "funding": {
2053 | "url": "https://github.com/sponsors/isaacs"
2054 | }
2055 | },
2056 | "node_modules/function-bind": {
2057 | "version": "1.1.2",
2058 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2059 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
2060 | "license": "MIT",
2061 | "funding": {
2062 | "url": "https://github.com/sponsors/ljharb"
2063 | }
2064 | },
2065 | "node_modules/get-intrinsic": {
2066 | "version": "1.3.0",
2067 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
2068 | "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
2069 | "license": "MIT",
2070 | "dependencies": {
2071 | "call-bind-apply-helpers": "^1.0.2",
2072 | "es-define-property": "^1.0.1",
2073 | "es-errors": "^1.3.0",
2074 | "es-object-atoms": "^1.1.1",
2075 | "function-bind": "^1.1.2",
2076 | "get-proto": "^1.0.1",
2077 | "gopd": "^1.2.0",
2078 | "has-symbols": "^1.1.0",
2079 | "hasown": "^2.0.2",
2080 | "math-intrinsics": "^1.1.0"
2081 | },
2082 | "engines": {
2083 | "node": ">= 0.4"
2084 | },
2085 | "funding": {
2086 | "url": "https://github.com/sponsors/ljharb"
2087 | }
2088 | },
2089 | "node_modules/get-proto": {
2090 | "version": "1.0.1",
2091 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
2092 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
2093 | "license": "MIT",
2094 | "dependencies": {
2095 | "dunder-proto": "^1.0.1",
2096 | "es-object-atoms": "^1.0.0"
2097 | },
2098 | "engines": {
2099 | "node": ">= 0.4"
2100 | }
2101 | },
2102 | "node_modules/giget": {
2103 | "version": "2.0.0",
2104 | "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
2105 | "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
2106 | "devOptional": true,
2107 | "license": "MIT",
2108 | "dependencies": {
2109 | "citty": "^0.1.6",
2110 | "consola": "^3.4.0",
2111 | "defu": "^6.1.4",
2112 | "node-fetch-native": "^1.6.6",
2113 | "nypm": "^0.6.0",
2114 | "pathe": "^2.0.3"
2115 | },
2116 | "bin": {
2117 | "giget": "dist/cli.mjs"
2118 | }
2119 | },
2120 | "node_modules/glob": {
2121 | "version": "10.4.5",
2122 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
2123 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
2124 | "dev": true,
2125 | "license": "ISC",
2126 | "dependencies": {
2127 | "foreground-child": "^3.1.0",
2128 | "jackspeak": "^3.1.2",
2129 | "minimatch": "^9.0.4",
2130 | "minipass": "^7.1.2",
2131 | "package-json-from-dist": "^1.0.0",
2132 | "path-scurry": "^1.11.1"
2133 | },
2134 | "bin": {
2135 | "glob": "dist/esm/bin.mjs"
2136 | },
2137 | "funding": {
2138 | "url": "https://github.com/sponsors/isaacs"
2139 | }
2140 | },
2141 | "node_modules/gopd": {
2142 | "version": "1.2.0",
2143 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
2144 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
2145 | "license": "MIT",
2146 | "engines": {
2147 | "node": ">= 0.4"
2148 | },
2149 | "funding": {
2150 | "url": "https://github.com/sponsors/ljharb"
2151 | }
2152 | },
2153 | "node_modules/graphql": {
2154 | "version": "16.11.0",
2155 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz",
2156 | "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==",
2157 | "license": "MIT",
2158 | "engines": {
2159 | "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
2160 | }
2161 | },
2162 | "node_modules/has-property-descriptors": {
2163 | "version": "1.0.2",
2164 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
2165 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
2166 | "license": "MIT",
2167 | "dependencies": {
2168 | "es-define-property": "^1.0.0"
2169 | },
2170 | "funding": {
2171 | "url": "https://github.com/sponsors/ljharb"
2172 | }
2173 | },
2174 | "node_modules/has-symbols": {
2175 | "version": "1.1.0",
2176 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
2177 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
2178 | "license": "MIT",
2179 | "engines": {
2180 | "node": ">= 0.4"
2181 | },
2182 | "funding": {
2183 | "url": "https://github.com/sponsors/ljharb"
2184 | }
2185 | },
2186 | "node_modules/has-tostringtag": {
2187 | "version": "1.0.2",
2188 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
2189 | "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
2190 | "license": "MIT",
2191 | "dependencies": {
2192 | "has-symbols": "^1.0.3"
2193 | },
2194 | "engines": {
2195 | "node": ">= 0.4"
2196 | },
2197 | "funding": {
2198 | "url": "https://github.com/sponsors/ljharb"
2199 | }
2200 | },
2201 | "node_modules/hasown": {
2202 | "version": "2.0.2",
2203 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
2204 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
2205 | "license": "MIT",
2206 | "dependencies": {
2207 | "function-bind": "^1.1.2"
2208 | },
2209 | "engines": {
2210 | "node": ">= 0.4"
2211 | }
2212 | },
2213 | "node_modules/http-errors": {
2214 | "version": "2.0.0",
2215 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
2216 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
2217 | "license": "MIT",
2218 | "dependencies": {
2219 | "depd": "2.0.0",
2220 | "inherits": "2.0.4",
2221 | "setprototypeof": "1.2.0",
2222 | "statuses": "2.0.1",
2223 | "toidentifier": "1.0.1"
2224 | },
2225 | "engines": {
2226 | "node": ">= 0.8"
2227 | }
2228 | },
2229 | "node_modules/http-errors/node_modules/statuses": {
2230 | "version": "2.0.1",
2231 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
2232 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
2233 | "license": "MIT",
2234 | "engines": {
2235 | "node": ">= 0.8"
2236 | }
2237 | },
2238 | "node_modules/http-proxy-agent": {
2239 | "version": "7.0.2",
2240 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
2241 | "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
2242 | "license": "MIT",
2243 | "dependencies": {
2244 | "agent-base": "^7.1.0",
2245 | "debug": "^4.3.4"
2246 | },
2247 | "engines": {
2248 | "node": ">= 14"
2249 | }
2250 | },
2251 | "node_modules/https-proxy-agent": {
2252 | "version": "7.0.6",
2253 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
2254 | "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
2255 | "license": "MIT",
2256 | "dependencies": {
2257 | "agent-base": "^7.1.2",
2258 | "debug": "4"
2259 | },
2260 | "engines": {
2261 | "node": ">= 14"
2262 | }
2263 | },
2264 | "node_modules/iconv-lite": {
2265 | "version": "0.6.3",
2266 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
2267 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
2268 | "license": "MIT",
2269 | "dependencies": {
2270 | "safer-buffer": ">= 2.1.2 < 3.0.0"
2271 | },
2272 | "engines": {
2273 | "node": ">=0.10.0"
2274 | }
2275 | },
2276 | "node_modules/ieee754": {
2277 | "version": "1.2.1",
2278 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
2279 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
2280 | "funding": [
2281 | {
2282 | "type": "github",
2283 | "url": "https://github.com/sponsors/feross"
2284 | },
2285 | {
2286 | "type": "patreon",
2287 | "url": "https://www.patreon.com/feross"
2288 | },
2289 | {
2290 | "type": "consulting",
2291 | "url": "https://feross.org/support"
2292 | }
2293 | ],
2294 | "license": "BSD-3-Clause"
2295 | },
2296 | "node_modules/inherits": {
2297 | "version": "2.0.4",
2298 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2299 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2300 | "license": "ISC"
2301 | },
2302 | "node_modules/is-callable": {
2303 | "version": "1.2.7",
2304 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
2305 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
2306 | "license": "MIT",
2307 | "engines": {
2308 | "node": ">= 0.4"
2309 | },
2310 | "funding": {
2311 | "url": "https://github.com/sponsors/ljharb"
2312 | }
2313 | },
2314 | "node_modules/is-docker": {
2315 | "version": "3.0.0",
2316 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
2317 | "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
2318 | "license": "MIT",
2319 | "bin": {
2320 | "is-docker": "cli.js"
2321 | },
2322 | "engines": {
2323 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2324 | },
2325 | "funding": {
2326 | "url": "https://github.com/sponsors/sindresorhus"
2327 | }
2328 | },
2329 | "node_modules/is-fullwidth-code-point": {
2330 | "version": "3.0.0",
2331 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
2332 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
2333 | "dev": true,
2334 | "license": "MIT",
2335 | "engines": {
2336 | "node": ">=8"
2337 | }
2338 | },
2339 | "node_modules/is-inside-container": {
2340 | "version": "1.0.0",
2341 | "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
2342 | "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
2343 | "license": "MIT",
2344 | "dependencies": {
2345 | "is-docker": "^3.0.0"
2346 | },
2347 | "bin": {
2348 | "is-inside-container": "cli.js"
2349 | },
2350 | "engines": {
2351 | "node": ">=14.16"
2352 | },
2353 | "funding": {
2354 | "url": "https://github.com/sponsors/sindresorhus"
2355 | }
2356 | },
2357 | "node_modules/is-typed-array": {
2358 | "version": "1.1.15",
2359 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
2360 | "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
2361 | "license": "MIT",
2362 | "dependencies": {
2363 | "which-typed-array": "^1.1.16"
2364 | },
2365 | "engines": {
2366 | "node": ">= 0.4"
2367 | },
2368 | "funding": {
2369 | "url": "https://github.com/sponsors/ljharb"
2370 | }
2371 | },
2372 | "node_modules/is-wsl": {
2373 | "version": "3.1.0",
2374 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
2375 | "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
2376 | "license": "MIT",
2377 | "dependencies": {
2378 | "is-inside-container": "^1.0.0"
2379 | },
2380 | "engines": {
2381 | "node": ">=16"
2382 | },
2383 | "funding": {
2384 | "url": "https://github.com/sponsors/sindresorhus"
2385 | }
2386 | },
2387 | "node_modules/isarray": {
2388 | "version": "2.0.5",
2389 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
2390 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
2391 | "license": "MIT"
2392 | },
2393 | "node_modules/isexe": {
2394 | "version": "2.0.0",
2395 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2396 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2397 | "dev": true,
2398 | "license": "ISC"
2399 | },
2400 | "node_modules/jackspeak": {
2401 | "version": "3.4.3",
2402 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
2403 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
2404 | "dev": true,
2405 | "license": "BlueOak-1.0.0",
2406 | "dependencies": {
2407 | "@isaacs/cliui": "^8.0.2"
2408 | },
2409 | "funding": {
2410 | "url": "https://github.com/sponsors/isaacs"
2411 | },
2412 | "optionalDependencies": {
2413 | "@pkgjs/parseargs": "^0.11.0"
2414 | }
2415 | },
2416 | "node_modules/jiti": {
2417 | "version": "2.6.1",
2418 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
2419 | "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
2420 | "devOptional": true,
2421 | "license": "MIT",
2422 | "bin": {
2423 | "jiti": "lib/jiti-cli.mjs"
2424 | }
2425 | },
2426 | "node_modules/js-md4": {
2427 | "version": "0.3.2",
2428 | "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz",
2429 | "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==",
2430 | "license": "MIT"
2431 | },
2432 | "node_modules/jsonwebtoken": {
2433 | "version": "9.0.2",
2434 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
2435 | "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
2436 | "license": "MIT",
2437 | "dependencies": {
2438 | "jws": "^3.2.2",
2439 | "lodash.includes": "^4.3.0",
2440 | "lodash.isboolean": "^3.0.3",
2441 | "lodash.isinteger": "^4.0.4",
2442 | "lodash.isnumber": "^3.0.3",
2443 | "lodash.isplainobject": "^4.0.6",
2444 | "lodash.isstring": "^4.0.1",
2445 | "lodash.once": "^4.0.0",
2446 | "ms": "^2.1.1",
2447 | "semver": "^7.5.4"
2448 | },
2449 | "engines": {
2450 | "node": ">=12",
2451 | "npm": ">=6"
2452 | }
2453 | },
2454 | "node_modules/jwa": {
2455 | "version": "1.4.2",
2456 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz",
2457 | "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==",
2458 | "license": "MIT",
2459 | "dependencies": {
2460 | "buffer-equal-constant-time": "^1.0.1",
2461 | "ecdsa-sig-formatter": "1.0.11",
2462 | "safe-buffer": "^5.0.1"
2463 | }
2464 | },
2465 | "node_modules/jws": {
2466 | "version": "3.2.2",
2467 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
2468 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
2469 | "license": "MIT",
2470 | "dependencies": {
2471 | "jwa": "^1.4.1",
2472 | "safe-buffer": "^5.0.1"
2473 | }
2474 | },
2475 | "node_modules/lodash.includes": {
2476 | "version": "4.3.0",
2477 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
2478 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
2479 | "license": "MIT"
2480 | },
2481 | "node_modules/lodash.isboolean": {
2482 | "version": "3.0.3",
2483 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
2484 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
2485 | "license": "MIT"
2486 | },
2487 | "node_modules/lodash.isinteger": {
2488 | "version": "4.0.4",
2489 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
2490 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
2491 | "license": "MIT"
2492 | },
2493 | "node_modules/lodash.isnumber": {
2494 | "version": "3.0.3",
2495 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
2496 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
2497 | "license": "MIT"
2498 | },
2499 | "node_modules/lodash.isplainobject": {
2500 | "version": "4.0.6",
2501 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
2502 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
2503 | "license": "MIT"
2504 | },
2505 | "node_modules/lodash.isstring": {
2506 | "version": "4.0.1",
2507 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
2508 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
2509 | "license": "MIT"
2510 | },
2511 | "node_modules/lodash.once": {
2512 | "version": "4.1.1",
2513 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
2514 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
2515 | "license": "MIT"
2516 | },
2517 | "node_modules/lodash.sortby": {
2518 | "version": "4.7.0",
2519 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
2520 | "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
2521 | "license": "MIT"
2522 | },
2523 | "node_modules/loglevel": {
2524 | "version": "1.9.2",
2525 | "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
2526 | "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
2527 | "license": "MIT",
2528 | "engines": {
2529 | "node": ">= 0.6.0"
2530 | },
2531 | "funding": {
2532 | "type": "tidelift",
2533 | "url": "https://tidelift.com/funding/github/npm/loglevel"
2534 | }
2535 | },
2536 | "node_modules/long": {
2537 | "version": "4.0.0",
2538 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
2539 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
2540 | "license": "Apache-2.0"
2541 | },
2542 | "node_modules/lru-cache": {
2543 | "version": "10.4.3",
2544 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
2545 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
2546 | "dev": true,
2547 | "license": "ISC"
2548 | },
2549 | "node_modules/math-intrinsics": {
2550 | "version": "1.1.0",
2551 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
2552 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
2553 | "license": "MIT",
2554 | "engines": {
2555 | "node": ">= 0.4"
2556 | }
2557 | },
2558 | "node_modules/media-typer": {
2559 | "version": "1.1.0",
2560 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
2561 | "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
2562 | "license": "MIT",
2563 | "engines": {
2564 | "node": ">= 0.8"
2565 | }
2566 | },
2567 | "node_modules/mime-db": {
2568 | "version": "1.54.0",
2569 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
2570 | "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
2571 | "license": "MIT",
2572 | "engines": {
2573 | "node": ">= 0.6"
2574 | }
2575 | },
2576 | "node_modules/mime-types": {
2577 | "version": "3.0.1",
2578 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
2579 | "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
2580 | "license": "MIT",
2581 | "dependencies": {
2582 | "mime-db": "^1.54.0"
2583 | },
2584 | "engines": {
2585 | "node": ">= 0.6"
2586 | }
2587 | },
2588 | "node_modules/minimatch": {
2589 | "version": "9.0.5",
2590 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2591 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2592 | "dev": true,
2593 | "license": "ISC",
2594 | "dependencies": {
2595 | "brace-expansion": "^2.0.1"
2596 | },
2597 | "engines": {
2598 | "node": ">=16 || 14 >=14.17"
2599 | },
2600 | "funding": {
2601 | "url": "https://github.com/sponsors/isaacs"
2602 | }
2603 | },
2604 | "node_modules/minipass": {
2605 | "version": "7.1.2",
2606 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
2607 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
2608 | "dev": true,
2609 | "license": "ISC",
2610 | "engines": {
2611 | "node": ">=16 || 14 >=14.17"
2612 | }
2613 | },
2614 | "node_modules/ms": {
2615 | "version": "2.1.3",
2616 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2617 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2618 | "license": "MIT"
2619 | },
2620 | "node_modules/native-duplexpair": {
2621 | "version": "1.0.0",
2622 | "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz",
2623 | "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==",
2624 | "license": "MIT"
2625 | },
2626 | "node_modules/negotiator": {
2627 | "version": "1.0.0",
2628 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
2629 | "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
2630 | "license": "MIT",
2631 | "engines": {
2632 | "node": ">= 0.6"
2633 | }
2634 | },
2635 | "node_modules/node-fetch-native": {
2636 | "version": "1.6.7",
2637 | "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
2638 | "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
2639 | "devOptional": true,
2640 | "license": "MIT"
2641 | },
2642 | "node_modules/nypm": {
2643 | "version": "0.6.2",
2644 | "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz",
2645 | "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==",
2646 | "devOptional": true,
2647 | "license": "MIT",
2648 | "dependencies": {
2649 | "citty": "^0.1.6",
2650 | "consola": "^3.4.2",
2651 | "pathe": "^2.0.3",
2652 | "pkg-types": "^2.3.0",
2653 | "tinyexec": "^1.0.1"
2654 | },
2655 | "bin": {
2656 | "nypm": "dist/cli.mjs"
2657 | },
2658 | "engines": {
2659 | "node": "^14.16.0 || >=16.10.0"
2660 | }
2661 | },
2662 | "node_modules/object-assign": {
2663 | "version": "4.1.1",
2664 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2665 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
2666 | "license": "MIT",
2667 | "engines": {
2668 | "node": ">=0.10.0"
2669 | }
2670 | },
2671 | "node_modules/object-inspect": {
2672 | "version": "1.13.4",
2673 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
2674 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
2675 | "license": "MIT",
2676 | "engines": {
2677 | "node": ">= 0.4"
2678 | },
2679 | "funding": {
2680 | "url": "https://github.com/sponsors/ljharb"
2681 | }
2682 | },
2683 | "node_modules/ohash": {
2684 | "version": "2.0.11",
2685 | "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
2686 | "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
2687 | "devOptional": true,
2688 | "license": "MIT"
2689 | },
2690 | "node_modules/on-finished": {
2691 | "version": "2.4.1",
2692 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
2693 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
2694 | "license": "MIT",
2695 | "dependencies": {
2696 | "ee-first": "1.1.1"
2697 | },
2698 | "engines": {
2699 | "node": ">= 0.8"
2700 | }
2701 | },
2702 | "node_modules/open": {
2703 | "version": "10.2.0",
2704 | "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
2705 | "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
2706 | "license": "MIT",
2707 | "dependencies": {
2708 | "default-browser": "^5.2.1",
2709 | "define-lazy-prop": "^3.0.0",
2710 | "is-inside-container": "^1.0.0",
2711 | "wsl-utils": "^0.1.0"
2712 | },
2713 | "engines": {
2714 | "node": ">=18"
2715 | },
2716 | "funding": {
2717 | "url": "https://github.com/sponsors/sindresorhus"
2718 | }
2719 | },
2720 | "node_modules/package-json-from-dist": {
2721 | "version": "1.0.1",
2722 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
2723 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
2724 | "dev": true,
2725 | "license": "BlueOak-1.0.0"
2726 | },
2727 | "node_modules/parseurl": {
2728 | "version": "1.3.3",
2729 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
2730 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
2731 | "license": "MIT",
2732 | "engines": {
2733 | "node": ">= 0.8"
2734 | }
2735 | },
2736 | "node_modules/path-key": {
2737 | "version": "3.1.1",
2738 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2739 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2740 | "dev": true,
2741 | "license": "MIT",
2742 | "engines": {
2743 | "node": ">=8"
2744 | }
2745 | },
2746 | "node_modules/path-scurry": {
2747 | "version": "1.11.1",
2748 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
2749 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
2750 | "dev": true,
2751 | "license": "BlueOak-1.0.0",
2752 | "dependencies": {
2753 | "lru-cache": "^10.2.0",
2754 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
2755 | },
2756 | "engines": {
2757 | "node": ">=16 || 14 >=14.18"
2758 | },
2759 | "funding": {
2760 | "url": "https://github.com/sponsors/isaacs"
2761 | }
2762 | },
2763 | "node_modules/pathe": {
2764 | "version": "2.0.3",
2765 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
2766 | "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
2767 | "devOptional": true,
2768 | "license": "MIT"
2769 | },
2770 | "node_modules/perfect-debounce": {
2771 | "version": "1.0.0",
2772 | "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
2773 | "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
2774 | "devOptional": true,
2775 | "license": "MIT"
2776 | },
2777 | "node_modules/pkg-types": {
2778 | "version": "2.3.0",
2779 | "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
2780 | "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
2781 | "devOptional": true,
2782 | "license": "MIT",
2783 | "dependencies": {
2784 | "confbox": "^0.2.2",
2785 | "exsolve": "^1.0.7",
2786 | "pathe": "^2.0.3"
2787 | }
2788 | },
2789 | "node_modules/possible-typed-array-names": {
2790 | "version": "1.1.0",
2791 | "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
2792 | "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
2793 | "license": "MIT",
2794 | "engines": {
2795 | "node": ">= 0.4"
2796 | }
2797 | },
2798 | "node_modules/prisma": {
2799 | "version": "6.17.1",
2800 | "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.17.1.tgz",
2801 | "integrity": "sha512-ac6h0sM1Tg3zu8NInY+qhP/S9KhENVaw9n1BrGKQVFu05JT5yT5Qqqmb8tMRIE3ZXvVj4xcRA5yfrsy4X7Yy5g==",
2802 | "devOptional": true,
2803 | "hasInstallScript": true,
2804 | "license": "Apache-2.0",
2805 | "dependencies": {
2806 | "@prisma/config": "6.17.1",
2807 | "@prisma/engines": "6.17.1"
2808 | },
2809 | "bin": {
2810 | "prisma": "build/index.js"
2811 | },
2812 | "engines": {
2813 | "node": ">=18.18"
2814 | },
2815 | "peerDependencies": {
2816 | "typescript": ">=5.1.0"
2817 | },
2818 | "peerDependenciesMeta": {
2819 | "typescript": {
2820 | "optional": true
2821 | }
2822 | }
2823 | },
2824 | "node_modules/process": {
2825 | "version": "0.11.10",
2826 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
2827 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
2828 | "license": "MIT",
2829 | "engines": {
2830 | "node": ">= 0.6.0"
2831 | }
2832 | },
2833 | "node_modules/pure-rand": {
2834 | "version": "6.1.0",
2835 | "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
2836 | "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==",
2837 | "devOptional": true,
2838 | "funding": [
2839 | {
2840 | "type": "individual",
2841 | "url": "https://github.com/sponsors/dubzzz"
2842 | },
2843 | {
2844 | "type": "opencollective",
2845 | "url": "https://opencollective.com/fast-check"
2846 | }
2847 | ],
2848 | "license": "MIT"
2849 | },
2850 | "node_modules/qs": {
2851 | "version": "6.14.0",
2852 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
2853 | "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
2854 | "license": "BSD-3-Clause",
2855 | "dependencies": {
2856 | "side-channel": "^1.1.0"
2857 | },
2858 | "engines": {
2859 | "node": ">=0.6"
2860 | },
2861 | "funding": {
2862 | "url": "https://github.com/sponsors/ljharb"
2863 | }
2864 | },
2865 | "node_modules/raw-body": {
2866 | "version": "3.0.1",
2867 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
2868 | "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
2869 | "license": "MIT",
2870 | "dependencies": {
2871 | "bytes": "3.1.2",
2872 | "http-errors": "2.0.0",
2873 | "iconv-lite": "0.7.0",
2874 | "unpipe": "1.0.0"
2875 | },
2876 | "engines": {
2877 | "node": ">= 0.10"
2878 | }
2879 | },
2880 | "node_modules/raw-body/node_modules/iconv-lite": {
2881 | "version": "0.7.0",
2882 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
2883 | "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
2884 | "license": "MIT",
2885 | "dependencies": {
2886 | "safer-buffer": ">= 2.1.2 < 3.0.0"
2887 | },
2888 | "engines": {
2889 | "node": ">=0.10.0"
2890 | },
2891 | "funding": {
2892 | "type": "opencollective",
2893 | "url": "https://opencollective.com/express"
2894 | }
2895 | },
2896 | "node_modules/rc9": {
2897 | "version": "2.1.2",
2898 | "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
2899 | "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
2900 | "devOptional": true,
2901 | "license": "MIT",
2902 | "dependencies": {
2903 | "defu": "^6.1.4",
2904 | "destr": "^2.0.3"
2905 | }
2906 | },
2907 | "node_modules/readable-stream": {
2908 | "version": "4.7.0",
2909 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
2910 | "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
2911 | "license": "MIT",
2912 | "dependencies": {
2913 | "abort-controller": "^3.0.0",
2914 | "buffer": "^6.0.3",
2915 | "events": "^3.3.0",
2916 | "process": "^0.11.10",
2917 | "string_decoder": "^1.3.0"
2918 | },
2919 | "engines": {
2920 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2921 | }
2922 | },
2923 | "node_modules/readdirp": {
2924 | "version": "4.1.2",
2925 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
2926 | "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
2927 | "devOptional": true,
2928 | "license": "MIT",
2929 | "engines": {
2930 | "node": ">= 14.18.0"
2931 | },
2932 | "funding": {
2933 | "type": "individual",
2934 | "url": "https://paulmillr.com/funding/"
2935 | }
2936 | },
2937 | "node_modules/retry": {
2938 | "version": "0.13.1",
2939 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
2940 | "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
2941 | "license": "MIT",
2942 | "engines": {
2943 | "node": ">= 4"
2944 | }
2945 | },
2946 | "node_modules/rimraf": {
2947 | "version": "5.0.10",
2948 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
2949 | "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
2950 | "dev": true,
2951 | "license": "ISC",
2952 | "dependencies": {
2953 | "glob": "^10.3.7"
2954 | },
2955 | "bin": {
2956 | "rimraf": "dist/esm/bin.mjs"
2957 | },
2958 | "funding": {
2959 | "url": "https://github.com/sponsors/isaacs"
2960 | }
2961 | },
2962 | "node_modules/run-applescript": {
2963 | "version": "7.1.0",
2964 | "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
2965 | "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
2966 | "license": "MIT",
2967 | "engines": {
2968 | "node": ">=18"
2969 | },
2970 | "funding": {
2971 | "url": "https://github.com/sponsors/sindresorhus"
2972 | }
2973 | },
2974 | "node_modules/safe-buffer": {
2975 | "version": "5.2.1",
2976 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2977 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2978 | "funding": [
2979 | {
2980 | "type": "github",
2981 | "url": "https://github.com/sponsors/feross"
2982 | },
2983 | {
2984 | "type": "patreon",
2985 | "url": "https://www.patreon.com/feross"
2986 | },
2987 | {
2988 | "type": "consulting",
2989 | "url": "https://feross.org/support"
2990 | }
2991 | ],
2992 | "license": "MIT"
2993 | },
2994 | "node_modules/safer-buffer": {
2995 | "version": "2.1.2",
2996 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2997 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2998 | "license": "MIT"
2999 | },
3000 | "node_modules/semver": {
3001 | "version": "7.7.3",
3002 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
3003 | "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
3004 | "license": "ISC",
3005 | "bin": {
3006 | "semver": "bin/semver.js"
3007 | },
3008 | "engines": {
3009 | "node": ">=10"
3010 | }
3011 | },
3012 | "node_modules/set-function-length": {
3013 | "version": "1.2.2",
3014 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
3015 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
3016 | "license": "MIT",
3017 | "dependencies": {
3018 | "define-data-property": "^1.1.4",
3019 | "es-errors": "^1.3.0",
3020 | "function-bind": "^1.1.2",
3021 | "get-intrinsic": "^1.2.4",
3022 | "gopd": "^1.0.1",
3023 | "has-property-descriptors": "^1.0.2"
3024 | },
3025 | "engines": {
3026 | "node": ">= 0.4"
3027 | }
3028 | },
3029 | "node_modules/setprototypeof": {
3030 | "version": "1.2.0",
3031 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
3032 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
3033 | "license": "ISC"
3034 | },
3035 | "node_modules/sha.js": {
3036 | "version": "2.4.12",
3037 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz",
3038 | "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
3039 | "license": "(MIT AND BSD-3-Clause)",
3040 | "dependencies": {
3041 | "inherits": "^2.0.4",
3042 | "safe-buffer": "^5.2.1",
3043 | "to-buffer": "^1.2.0"
3044 | },
3045 | "bin": {
3046 | "sha.js": "bin.js"
3047 | },
3048 | "engines": {
3049 | "node": ">= 0.10"
3050 | },
3051 | "funding": {
3052 | "url": "https://github.com/sponsors/ljharb"
3053 | }
3054 | },
3055 | "node_modules/shebang-command": {
3056 | "version": "2.0.0",
3057 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
3058 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
3059 | "dev": true,
3060 | "license": "MIT",
3061 | "dependencies": {
3062 | "shebang-regex": "^3.0.0"
3063 | },
3064 | "engines": {
3065 | "node": ">=8"
3066 | }
3067 | },
3068 | "node_modules/shebang-regex": {
3069 | "version": "3.0.0",
3070 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
3071 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
3072 | "dev": true,
3073 | "license": "MIT",
3074 | "engines": {
3075 | "node": ">=8"
3076 | }
3077 | },
3078 | "node_modules/side-channel": {
3079 | "version": "1.1.0",
3080 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
3081 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
3082 | "license": "MIT",
3083 | "dependencies": {
3084 | "es-errors": "^1.3.0",
3085 | "object-inspect": "^1.13.3",
3086 | "side-channel-list": "^1.0.0",
3087 | "side-channel-map": "^1.0.1",
3088 | "side-channel-weakmap": "^1.0.2"
3089 | },
3090 | "engines": {
3091 | "node": ">= 0.4"
3092 | },
3093 | "funding": {
3094 | "url": "https://github.com/sponsors/ljharb"
3095 | }
3096 | },
3097 | "node_modules/side-channel-list": {
3098 | "version": "1.0.0",
3099 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
3100 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
3101 | "license": "MIT",
3102 | "dependencies": {
3103 | "es-errors": "^1.3.0",
3104 | "object-inspect": "^1.13.3"
3105 | },
3106 | "engines": {
3107 | "node": ">= 0.4"
3108 | },
3109 | "funding": {
3110 | "url": "https://github.com/sponsors/ljharb"
3111 | }
3112 | },
3113 | "node_modules/side-channel-map": {
3114 | "version": "1.0.1",
3115 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
3116 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
3117 | "license": "MIT",
3118 | "dependencies": {
3119 | "call-bound": "^1.0.2",
3120 | "es-errors": "^1.3.0",
3121 | "get-intrinsic": "^1.2.5",
3122 | "object-inspect": "^1.13.3"
3123 | },
3124 | "engines": {
3125 | "node": ">= 0.4"
3126 | },
3127 | "funding": {
3128 | "url": "https://github.com/sponsors/ljharb"
3129 | }
3130 | },
3131 | "node_modules/side-channel-weakmap": {
3132 | "version": "1.0.2",
3133 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
3134 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
3135 | "license": "MIT",
3136 | "dependencies": {
3137 | "call-bound": "^1.0.2",
3138 | "es-errors": "^1.3.0",
3139 | "get-intrinsic": "^1.2.5",
3140 | "object-inspect": "^1.13.3",
3141 | "side-channel-map": "^1.0.1"
3142 | },
3143 | "engines": {
3144 | "node": ">= 0.4"
3145 | },
3146 | "funding": {
3147 | "url": "https://github.com/sponsors/ljharb"
3148 | }
3149 | },
3150 | "node_modules/signal-exit": {
3151 | "version": "4.1.0",
3152 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
3153 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
3154 | "dev": true,
3155 | "license": "ISC",
3156 | "engines": {
3157 | "node": ">=14"
3158 | },
3159 | "funding": {
3160 | "url": "https://github.com/sponsors/isaacs"
3161 | }
3162 | },
3163 | "node_modules/sprintf-js": {
3164 | "version": "1.1.3",
3165 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
3166 | "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
3167 | "license": "BSD-3-Clause"
3168 | },
3169 | "node_modules/statuses": {
3170 | "version": "2.0.2",
3171 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
3172 | "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
3173 | "license": "MIT",
3174 | "engines": {
3175 | "node": ">= 0.8"
3176 | }
3177 | },
3178 | "node_modules/string_decoder": {
3179 | "version": "1.3.0",
3180 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
3181 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
3182 | "license": "MIT",
3183 | "dependencies": {
3184 | "safe-buffer": "~5.2.0"
3185 | }
3186 | },
3187 | "node_modules/string-width": {
3188 | "version": "5.1.2",
3189 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
3190 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
3191 | "dev": true,
3192 | "license": "MIT",
3193 | "dependencies": {
3194 | "eastasianwidth": "^0.2.0",
3195 | "emoji-regex": "^9.2.2",
3196 | "strip-ansi": "^7.0.1"
3197 | },
3198 | "engines": {
3199 | "node": ">=12"
3200 | },
3201 | "funding": {
3202 | "url": "https://github.com/sponsors/sindresorhus"
3203 | }
3204 | },
3205 | "node_modules/string-width-cjs": {
3206 | "name": "string-width",
3207 | "version": "4.2.3",
3208 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3209 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3210 | "dev": true,
3211 | "license": "MIT",
3212 | "dependencies": {
3213 | "emoji-regex": "^8.0.0",
3214 | "is-fullwidth-code-point": "^3.0.0",
3215 | "strip-ansi": "^6.0.1"
3216 | },
3217 | "engines": {
3218 | "node": ">=8"
3219 | }
3220 | },
3221 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
3222 | "version": "5.0.1",
3223 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
3224 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
3225 | "dev": true,
3226 | "license": "MIT",
3227 | "engines": {
3228 | "node": ">=8"
3229 | }
3230 | },
3231 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
3232 | "version": "8.0.0",
3233 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3234 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3235 | "dev": true,
3236 | "license": "MIT"
3237 | },
3238 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
3239 | "version": "6.0.1",
3240 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3241 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3242 | "dev": true,
3243 | "license": "MIT",
3244 | "dependencies": {
3245 | "ansi-regex": "^5.0.1"
3246 | },
3247 | "engines": {
3248 | "node": ">=8"
3249 | }
3250 | },
3251 | "node_modules/strip-ansi": {
3252 | "version": "7.1.2",
3253 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
3254 | "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
3255 | "dev": true,
3256 | "license": "MIT",
3257 | "dependencies": {
3258 | "ansi-regex": "^6.0.1"
3259 | },
3260 | "engines": {
3261 | "node": ">=12"
3262 | },
3263 | "funding": {
3264 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
3265 | }
3266 | },
3267 | "node_modules/strip-ansi-cjs": {
3268 | "name": "strip-ansi",
3269 | "version": "6.0.1",
3270 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3271 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3272 | "dev": true,
3273 | "license": "MIT",
3274 | "dependencies": {
3275 | "ansi-regex": "^5.0.1"
3276 | },
3277 | "engines": {
3278 | "node": ">=8"
3279 | }
3280 | },
3281 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
3282 | "version": "5.0.1",
3283 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
3284 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
3285 | "dev": true,
3286 | "license": "MIT",
3287 | "engines": {
3288 | "node": ">=8"
3289 | }
3290 | },
3291 | "node_modules/tedious": {
3292 | "version": "18.6.1",
3293 | "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.1.tgz",
3294 | "integrity": "sha512-9AvErXXQTd6l7TDd5EmM+nxbOGyhnmdbp/8c3pw+tjaiSXW9usME90ET/CRG1LN1Y9tPMtz/p83z4Q97B4DDpw==",
3295 | "license": "MIT",
3296 | "dependencies": {
3297 | "@azure/core-auth": "^1.7.2",
3298 | "@azure/identity": "^4.2.1",
3299 | "@azure/keyvault-keys": "^4.4.0",
3300 | "@js-joda/core": "^5.6.1",
3301 | "@types/node": ">=18",
3302 | "bl": "^6.0.11",
3303 | "iconv-lite": "^0.6.3",
3304 | "js-md4": "^0.3.2",
3305 | "native-duplexpair": "^1.0.0",
3306 | "sprintf-js": "^1.1.3"
3307 | },
3308 | "engines": {
3309 | "node": ">=18"
3310 | }
3311 | },
3312 | "node_modules/tinyexec": {
3313 | "version": "1.0.1",
3314 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
3315 | "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
3316 | "devOptional": true,
3317 | "license": "MIT"
3318 | },
3319 | "node_modules/to-buffer": {
3320 | "version": "1.2.2",
3321 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz",
3322 | "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==",
3323 | "license": "MIT",
3324 | "dependencies": {
3325 | "isarray": "^2.0.5",
3326 | "safe-buffer": "^5.2.1",
3327 | "typed-array-buffer": "^1.0.3"
3328 | },
3329 | "engines": {
3330 | "node": ">= 0.4"
3331 | }
3332 | },
3333 | "node_modules/toidentifier": {
3334 | "version": "1.0.1",
3335 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
3336 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
3337 | "license": "MIT",
3338 | "engines": {
3339 | "node": ">=0.6"
3340 | }
3341 | },
3342 | "node_modules/tslib": {
3343 | "version": "2.8.1",
3344 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
3345 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
3346 | "license": "0BSD"
3347 | },
3348 | "node_modules/type-is": {
3349 | "version": "2.0.1",
3350 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
3351 | "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
3352 | "license": "MIT",
3353 | "dependencies": {
3354 | "content-type": "^1.0.5",
3355 | "media-typer": "^1.1.0",
3356 | "mime-types": "^3.0.0"
3357 | },
3358 | "engines": {
3359 | "node": ">= 0.6"
3360 | }
3361 | },
3362 | "node_modules/typed-array-buffer": {
3363 | "version": "1.0.3",
3364 | "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
3365 | "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
3366 | "license": "MIT",
3367 | "dependencies": {
3368 | "call-bound": "^1.0.3",
3369 | "es-errors": "^1.3.0",
3370 | "is-typed-array": "^1.1.14"
3371 | },
3372 | "engines": {
3373 | "node": ">= 0.4"
3374 | }
3375 | },
3376 | "node_modules/typescript": {
3377 | "version": "5.9.3",
3378 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
3379 | "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
3380 | "devOptional": true,
3381 | "license": "Apache-2.0",
3382 | "bin": {
3383 | "tsc": "bin/tsc",
3384 | "tsserver": "bin/tsserver"
3385 | },
3386 | "engines": {
3387 | "node": ">=14.17"
3388 | }
3389 | },
3390 | "node_modules/undici": {
3391 | "version": "5.29.0",
3392 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
3393 | "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
3394 | "license": "MIT",
3395 | "dependencies": {
3396 | "@fastify/busboy": "^2.0.0"
3397 | },
3398 | "engines": {
3399 | "node": ">=14.0"
3400 | }
3401 | },
3402 | "node_modules/undici-types": {
3403 | "version": "5.26.5",
3404 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
3405 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
3406 | "license": "MIT"
3407 | },
3408 | "node_modules/unpipe": {
3409 | "version": "1.0.0",
3410 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
3411 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
3412 | "license": "MIT",
3413 | "engines": {
3414 | "node": ">= 0.8"
3415 | }
3416 | },
3417 | "node_modules/vary": {
3418 | "version": "1.1.2",
3419 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
3420 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
3421 | "license": "MIT",
3422 | "engines": {
3423 | "node": ">= 0.8"
3424 | }
3425 | },
3426 | "node_modules/which": {
3427 | "version": "2.0.2",
3428 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3429 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3430 | "dev": true,
3431 | "license": "ISC",
3432 | "dependencies": {
3433 | "isexe": "^2.0.0"
3434 | },
3435 | "bin": {
3436 | "node-which": "bin/node-which"
3437 | },
3438 | "engines": {
3439 | "node": ">= 8"
3440 | }
3441 | },
3442 | "node_modules/which-typed-array": {
3443 | "version": "1.1.19",
3444 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
3445 | "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
3446 | "license": "MIT",
3447 | "dependencies": {
3448 | "available-typed-arrays": "^1.0.7",
3449 | "call-bind": "^1.0.8",
3450 | "call-bound": "^1.0.4",
3451 | "for-each": "^0.3.5",
3452 | "get-proto": "^1.0.1",
3453 | "gopd": "^1.2.0",
3454 | "has-tostringtag": "^1.0.2"
3455 | },
3456 | "engines": {
3457 | "node": ">= 0.4"
3458 | },
3459 | "funding": {
3460 | "url": "https://github.com/sponsors/ljharb"
3461 | }
3462 | },
3463 | "node_modules/wrap-ansi": {
3464 | "version": "8.1.0",
3465 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
3466 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
3467 | "dev": true,
3468 | "license": "MIT",
3469 | "dependencies": {
3470 | "ansi-styles": "^6.1.0",
3471 | "string-width": "^5.0.1",
3472 | "strip-ansi": "^7.0.1"
3473 | },
3474 | "engines": {
3475 | "node": ">=12"
3476 | },
3477 | "funding": {
3478 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3479 | }
3480 | },
3481 | "node_modules/wrap-ansi-cjs": {
3482 | "name": "wrap-ansi",
3483 | "version": "7.0.0",
3484 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
3485 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
3486 | "dev": true,
3487 | "license": "MIT",
3488 | "dependencies": {
3489 | "ansi-styles": "^4.0.0",
3490 | "string-width": "^4.1.0",
3491 | "strip-ansi": "^6.0.0"
3492 | },
3493 | "engines": {
3494 | "node": ">=10"
3495 | },
3496 | "funding": {
3497 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3498 | }
3499 | },
3500 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
3501 | "version": "5.0.1",
3502 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
3503 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
3504 | "dev": true,
3505 | "license": "MIT",
3506 | "engines": {
3507 | "node": ">=8"
3508 | }
3509 | },
3510 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
3511 | "version": "4.3.0",
3512 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
3513 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
3514 | "dev": true,
3515 | "license": "MIT",
3516 | "dependencies": {
3517 | "color-convert": "^2.0.1"
3518 | },
3519 | "engines": {
3520 | "node": ">=8"
3521 | },
3522 | "funding": {
3523 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
3524 | }
3525 | },
3526 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
3527 | "version": "8.0.0",
3528 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3529 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3530 | "dev": true,
3531 | "license": "MIT"
3532 | },
3533 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
3534 | "version": "4.2.3",
3535 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3536 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3537 | "dev": true,
3538 | "license": "MIT",
3539 | "dependencies": {
3540 | "emoji-regex": "^8.0.0",
3541 | "is-fullwidth-code-point": "^3.0.0",
3542 | "strip-ansi": "^6.0.1"
3543 | },
3544 | "engines": {
3545 | "node": ">=8"
3546 | }
3547 | },
3548 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
3549 | "version": "6.0.1",
3550 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3551 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3552 | "dev": true,
3553 | "license": "MIT",
3554 | "dependencies": {
3555 | "ansi-regex": "^5.0.1"
3556 | },
3557 | "engines": {
3558 | "node": ">=8"
3559 | }
3560 | },
3561 | "node_modules/wsl-utils": {
3562 | "version": "0.1.0",
3563 | "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
3564 | "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
3565 | "license": "MIT",
3566 | "dependencies": {
3567 | "is-wsl": "^3.1.0"
3568 | },
3569 | "engines": {
3570 | "node": ">=18"
3571 | },
3572 | "funding": {
3573 | "url": "https://github.com/sponsors/sindresorhus"
3574 | }
3575 | }
3576 | }
3577 | }
3578 |
--------------------------------------------------------------------------------