From ed62583f46ee05213e2372df8a6e78a78bd33d46 Mon Sep 17 00:00:00 2001 From: dev-callgent Date: Sat, 12 Oct 2024 08:42:55 +0800 Subject: [PATCH 1/5] refactor: rename funName to epName Signed-off-by: dev-callgent --- prisma/schema.prisma | 2 +- prisma/seed-test.ts | 48 +++---------------- prisma/seed.ts | 29 +++++++---- src/agents/agents.service.ts | 26 +++++----- .../events/progressive-request.event.ts | 2 +- src/callgent-hub/callgent-hub.service.ts | 8 ++-- .../callgent-realms.service.ts | 4 +- src/endpoints/endpoints.service.ts | 22 ++++----- .../adaptors/builtin/email/email.adaptor.ts | 2 +- .../builtin/restapi/restapi.controller.ts | 34 +++++++------ src/entries/entries.service.ts | 14 +++--- src/entries/events/client-request.event.ts | 9 ++-- src/event-listeners/event-object.ts | 2 +- 13 files changed, 92 insertions(+), 110 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 49f7b02..950ac5e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -25,7 +25,7 @@ datasource db { relationMode = "prisma" // no foreign constraints in db, pls add @@index on manually } -// # foreign key using pk, instead of id, for better performance +// TODO # foreign key using pk, instead of id, for better performance? // # db sharding base on tenantPk: // 1. pk segmentation, ALTER SEQUENCE [表名]_[id]_seq RESTART WITH 1001; diff --git a/prisma/seed-test.ts b/prisma/seed-test.ts index 3a36b43..638e74b 100644 --- a/prisma/seed-test.ts +++ b/prisma/seed-test.ts @@ -142,63 +142,27 @@ function initTestData( create: cepDto, }) .then((cep) => console.log({ cep })), - // addLlmCache( - // 1, - // 'api2Function', - // 'Please convert below API doc of format restAPI:\n{ "POST:/boards/list": {"summary":"List all boards","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string","description":"Your secret API key."}},"required":["apiKey"]}}},"required":true},"responses":{"200":{"description":"A dictionary with a \\"boards\\" property that contains an array of board objects.","content":{"application/json":{"schema":{"type":"object","properties":{"boards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the board."},"created":{"type":"string","description":"Time at which the board was created, in ISO 8601 format."},"isPrivate":{"type":"boolean","description":"Whether or not the board is set as private in the administrative settings."},"name":{"type":"string","description":"The board\'s name."},"postCount":{"type":"integer","description":"The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete."},"privateComments":{"type":"boolean","description":"Whether or not comments left on posts can be viewed by other end-users."},"url":{"type":"string","description":"The URL to the board\'s page."}}}},"hasMore":{"type":"boolean","description":"Specifies whether this query returns more boards than the limit."}}}}}}}} }\n\ninto a js function, the function must be as follows:\n// the `invoker` function do the real invocation\nasync (invoker: (req:{ path: string; method: string; headers?: { [key: string]: string }; query?: { [key: string]: string }; params?: { [key: string]: string }; files?: { [key: string]: any }; body?: any; form?: any;})=>Promise<{ apiResult: any; headers?: { [key: string]: string }; status?: number; statusText?: string;}>, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; }\n\nplease generate the js function with **full implementation and error handling**! output a single-line json object:\n{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}', - // '{"funName":"listBoards","params":["invoker","apiKey"],"documents":"This function lists all boards.\\n\\n@param {Function} invoker - A function that makes the actual API call.\\n@param {string} apiKey - Your secret API key.\\n\\n@returns {Promise} A promise that resolves to an object containing the API result.\\n@property {Array} boards - An array of board objects.\\n@property {string} boards[].id - A unique identifier for the board.\\n@property {string} boards[].created - Time at which the board was created, in ISO 8601 format.\\n@property {boolean} boards[].isPrivate - Whether or not the board is set as private in the administrative settings.\\n@property {string} boards[].name - The board\'s name.\\n@property {number} boards[].postCount - The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete.\\n@property {boolean} boards[].privateComments - Whether or not comments left on posts can be viewed by other end-users.\\n@property {string} boards[].url - The URL to the board\'s page.\\n@property {boolean} hasMore - Specifies whether this query returns more boards than the limit.","fullCode":"(invoker, apiKey) => {\\n const requestBody = {\\n apiKey\\n };\\n const options = {\\n method: \'POST\',\\n path: \'/boards/list\',\\n body: JSON.stringify(requestBody),\\n headers: {\'Content-Type\': \'application/json\'},\\n };\\n try {\\n const json = await invoker(options);\\n if (json.status !== 200) {\\n throw new Error(Request failed with status ${json.status});\\n }\\n return json.apiResult;\\n } catch (error) {\\n console.error(error);\\n throw error;\\n }\\n}"}', - // ), - // addLlmCache( - // 2, - // 'api2Function', - // 'Please convert below API doc of format restAPI:\n{ "POST:/boards/retrieve": {"summary":"Retrieve board","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string","description":"Your secret API key."},"id":{"type":"string","description":"The board\'s unique identifier."}},"required":["apiKey","id"]}}},"required":true},"responses":{"200":{"description":"Returns a board object, if a valid id was supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the board."},"created":{"type":"string","description":"Time at which the board was created, in ISO 8601 format."},"isPrivate":{"type":"boolean","description":"Whether or not the board is set as private in the administrative settings."},"name":{"type":"string","description":"The board\'s name."},"postCount":{"type":"integer","description":"The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete."},"privateComments":{"type":"boolean","description":"Whether or not comments left on posts can be viewed by other end-users."},"url":{"type":"string","description":"The URL to the board\'s page."}}}}}}}} }\n\ninto a js function, the function must be as follows:\n// the `invoker` function do the real invocation\nasync (invoker: (req:{ path: string; method: string; headers?: { [key: string]: string }; query?: { [key: string]: string }; params?: { [key: string]: string }; files?: { [key: string]: any }; body?: any; form?: any;})=>Promise<{ apiResult: any; headers?: { [key: string]: string }; status?: number; statusText?: string;}>, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; }\n\nplease generate the js function with **full implementation and error handling**! output a single-line json object:\n{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}', - // '{"funName":"retrieveBoard","params":["invoker","apiKey","id"],"documents":"This function retrieves a board object given a valid API key and board ID.\\n\\nParameters:\\n- invoker: A function that performs the actual API call.\\n- apiKey: Your secret API key.\\n- pk: The board\'s unique identifier.\\n\\nReturns:\\nAn object containing the board details if a valid id was supplied. The object properties are:\\n- pk: A unique identifier for the board.\\n- created: Time at which the board was created, in ISO 8601 format.\\n- isPrivate: Whether or not the board is set as private in the administrative settings.\\n- name: The board\'s name.\\n- postCount: The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete.\\n- privateComments: Whether or not comments left on posts can be viewed by other end-users.\\n- url: The URL to the board\'s page.","fullCode":"(invoker, apiKey, id) => {\\n const req = {\\n path: \'/boards/retrieve\',\\n method: \'POST\',\\n headers: { \'Content-Type\': \'application/json\' },\\n body: JSON.stringify({\\n apiKey, id\\n })\\n };\\n try {\\n const resp = await invoker(req);\\n if (resp.status !== 200) {\\n throw new Error(`Failed to retrieve board. Status: ${resp.status}`);\\n }\\n return resp.result;\\n } catch (error) {\\n console.error(error);\\n throw error;\\n }\\n}"}', - // ), - // addLlmCache( - // 3, - // 'api2Function', - // 'Please convert below API doc of format restAPI:\n{ "POST:/categories/list": {"summary":"List categories","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string","description":"Your secret API key."},"boardID":{"type":"string","description":"The id of the board you\'d like to fetch categories for."},"limit":{"type":"integer","description":"The number of categories you\'d like to fetch. Defaults to 10 if not specified. Max of 10000."},"skip":{"type":"integer","description":"The number of categories you\'d like to skip before starting to fetch. Defaults to 0 if not specified."}},"required":["apiKey"]}}},"required":true},"responses":{"200":{"description":"A dictionary with a \\"categories\\" property that contains an array of tag objects. There\'s also a \\"hasMore\\" property that specifies whether this query returns more categories than the limit.","content":{"application/json":{"schema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the category."},"board":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the board."},"created":{"type":"string","description":"Time at which the board was created, in ISO 8601 format."},"isPrivate":{"type":"boolean","description":"Whether or not the board is set as private in the administrative settings."},"name":{"type":"string","description":"The board\'s name."},"postCount":{"type":"integer","description":"The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete."},"privateComments":{"type":"boolean","description":"Whether or not comments left on posts can be viewed by other end-users."},"url":{"type":"string","description":"The URL to the board\'s page."}},"description":"The board this category is associated with."},"created":{"type":"string","description":"Time at which the category was created, in ISO 8601 format."},"name":{"type":"string","description":"The name of the category."},"parentID":{"type":"string","description":"The id of the parent category. If this category is not a sub category, this field will be null."},"postCount":{"type":"integer","description":"The number of posts that have been assigned this category."},"url":{"type":"string","description":"The URL to the board, filtered to just posts that have been assigned this category."}}}},"hasMore":{"type":"boolean","description":"Specifies whether this query returns more categories than the limit."}}}}}}}} }\n\ninto a js function, the function must be as follows:\n// the `invoker` function do the real invocation\nasync (invoker: (req:{ path: string; method: string; headers?: { [key: string]: string }; query?: { [key: string]: string }; params?: { [key: string]: string }; files?: { [key: string]: any }; body?: any; form?: any;})=>Promise<{ apiResult: any; headers?: { [key: string]: string }; status?: number; statusText?: string;}>, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; }\n\nplease generate the js function with **full implementation and error handling**! output a single-line json object:\n{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}', - // '{"funName":"listCategories","params":["invoker","apiKey","boardID","limit","skip"],"documents":"This function lists categories based on the provided API key, board ID, limit, and skip parameters.\\n\\nParameters:\\n- `invoker`: A function that performs the actual API call.\\n- `apiKey`: Your secret API key.\\n- `boardID`: The id of the board you\'d like to fetch categories for.\\n- `limit`: The number of categories you\'d like to fetch. Defaults to 10 if not specified. Max of 10000.\\n- `skip`: The number of categories you\'d like to skip before starting to fetch. Defaults to 0 if not specified.\\n\\nReturns:\\nAn object containing the categories and a hasMore property that specifies whether this query returns more categories than the limit.","fullCode":"(invoker, apiKey, boardID, limit = 10, skip = 0) => {\\n const reqBody = {\\n apiKey, boardID,\\n limit: Math.min(Math.max(limit, 0), 10000),\\n skip: Math.max(skip, 0)\\n };\\n const resp = await invoker({\\n path: \'/categories/list\',\\n method: \'POST\',\\n body: reqBody\\n });\\n if (resp.status !== 200) {\\n throw new Error(`API request failed with status ${resp.status}: ${resp.statusText}`);\\n }\\n return resp.result;\\n}"}', - // ), addLlmCache( prisma, - 'map2Function', - 'given below service functions:\nclass new-test-callgent {\n "function name: POST:/boards/list": {"params":[invoker,apiKey], "documents":"This function lists all boards.\n\n@param {Function} invoker - A function that makes the actual API call.\n@param {string} apiKey - Your secret API key.\n\n@returns {Promise} A promise that resolves to an object containing the API result.\n@property {Array} boards - An array of board objects.\n@property {string} boards[].id - A unique identifier for the board.\n@property {string} boards[].created - Time at which the board was created, in ISO 8601 format.\n@property {boolean} boards[].isPrivate - Whether or not the board is set as private in the administrative settings.\n@property {string} boards[].name - The board\'s name.\n@property {number} boards[].postCount - The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete.\n@property {boolean} boards[].privateComments - Whether or not comments left on posts can be viewed by other end-users.\n@property {string} boards[].url - The URL to the board\'s page.\n@property {boolean} hasMore - Specifies whether this query returns more boards than the limit."},\n\n}\nand an service `invoker` function.\n\nPlease choose one function to fulfill below request:\n{\n"requesting function": "POST:/boards/list",\n"request from": "restAPI",\n"request_object": {"url":"/boards/list","method":"POST","headers":{"host":"127.0.0.1:3300","connection":"close","content-length":"0"},"query":{}},\n}\nand code for request_object to chosen function args mapping. if any data missing/unclear/ambiguous from request_object to invocation args, please ask question to the caller in below json.question field.\n\noutput a single-line json object:\n{ "funName": "the function name to be invoked", "params":"param names of the chosen function", "mapping": "the js function (invoker, request_object)=>{...;return functionArgsArray;}, full implementation to return the **real** args from request_object to invoke the chosen service function. don\'t use data not exist or ambiguous in request", "question": "question to ask the caller if anything not sure or missing for request to args mapping, *no* guess or assumption of the mapping. null if the mapping is crystal clear." }"}', - '{"funName":"POST:/boards/list","params":["invoker","apiKey"],"mapping":"(invoker, request_object)=>{ let apiKey = request_object.params.ids; return [invoker, apiKey]; }","question":"What is the API key for this request? It is not provided in the request_object."}', + 'map2Endpoints', + 'given below service endpoints:\nclass new-test-callgent {\n "endpoint name: POST:/boards/list": {"params":[invoker,apiKey], "documents":"This function lists all boards.\n\n@param {Function} invoker - A function that makes the actual API call.\n@param {string} apiKey - Your secret API key.\n\n@returns {Promise} A promise that resolves to an object containing the API result.\n@property {Array} boards - An array of board objects.\n@property {string} boards[].id - A unique identifier for the board.\n@property {string} boards[].created - Time at which the board was created, in ISO 8601 format.\n@property {boolean} boards[].isPrivate - Whether or not the board is set as private in the administrative settings.\n@property {string} boards[].name - The board\'s name.\n@property {number} boards[].postCount - The number of non-deleted posts associated with the board. This number includes posts that are marked as closed or complete.\n@property {boolean} boards[].privateComments - Whether or not comments left on posts can be viewed by other end-users.\n@property {string} boards[].url - The URL to the board\'s page.\n@property {boolean} hasMore - Specifies whether this query returns more boards than the limit."},\n\n}\nand an service `invoker` function.\n\nPlease choose one function to fulfill below request:\n{\n"requesting function": "POST:/boards/list",\n"request from": "restAPI",\n"request_object": {"url":"/boards/list","method":"POST","headers":{"host":"127.0.0.1:3300","connection":"close","content-length":"0"},"query":{}},\n}\nand code for request_object to chosen function args mapping. if any data missing/unclear/ambiguous from request_object to invocation args, please ask question to the caller in below json.question field.\n\noutput a single-line json object:\n{ "epName": "the endpoint name to be invoked", "params":"param names of the chosen function", "mapping": "the js function (invoker, request_object)=>{...;return functionArgsArray;}, full implementation to return the **real** args from request_object to invoke the chosen service function. don\'t use data not exist or ambiguous in request", "question": "question to ask the caller if anything not sure or missing for request to args mapping, *no* guess or assumption of the mapping. null if the mapping is crystal clear." }"}', + '{"endpoint":"POST:/boards/list","args":["invoker","apiKey"],"mapping":"(invoker, request_object)=>{ let apiKey = request_object.params.ids; return [invoker, apiKey]; }","question":"What is the API key for this request? It is not provided in the request_object."}', ), - // addLlmCache( - // 5, - // 'api2Function', - // 'Please convert below API doc of format restAPI:\n{ "GET:/positions": {"summary":"List all job positions","description":"Retrieve a list of all available job positions.","operationId":"listPositions","responses":{"200":{"description":"A list of job positions","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the job position"},"title":{"type":"string","description":"Title of the job position"},"description":{"type":"string","description":"Description of the job position"},"location":{"type":"string","description":"Location of the job position"},"requirements":{"type":"array","items":{"type":"string"},"description":"List of requirements for the job position"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was last updated"}}}}}}},"500":{"description":"Internal Server Error"}}} }\n\ninto a js function, the function must be as follows:\n// the `invoker` function do the real invocation\nasync (invoker: (req:{ path: string; method: string; headers?: { [key: string]: string }; query?: { [key: string]: string }; params?: { [key: string]: string }; files?: { [key: string]: any }; body?: any; form?: any;})=>Promise<{ apiResult: any; headers?: { [key: string]: string }; status?: number; statusText?: string;}>, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; }\n\nplease generate the js function with **full implementation and error handling**! output a single-line json object:\n{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}', - // '{"funName":"listPositions","params":["invoker"],"documents":"/**\n * List all job positions\n * Retrieve a list of all available job positions.\n * @param {Function} invoker - The function that performs the real invocation.\n * @returns {Promise} - A promise that resolves to an object containing the API result.\n * @property {Array} apiResult - A list of job positions.\n * @property {string} apiResult[].id - Unique identifier for the job position.\n * @property {string} apiResult[].title - Title of the job position.\n * @property {string} apiResult[].description - Description of the job position.\n * @property {string} apiResult[].location - Location of the job position.\n * @property {Array} apiResult[].requirements - List of requirements for the job position.\n * @property {string} apiResult[].createdAt - Timestamp when the job position was created.\n * @property {string} apiResult[].updatedAt - Timestamp when the job position was last updated.\n */","fullCode":"async (invoker) => {\n try {\n const json = await invoker({\n path: \'/positions\',\n method: \'GET\'\n });\n if (json.status === 200) {\n return json.apiResult;\n } else if (json.status === 500) {\n throw new Error(\'Internal Server Error\');\n } else {\n throw new Error(\'Unexpected status code: \' + json.status);\n }\n } catch (error) {\n console.error(\'Error fetching job positions:\', error);\n throw error;\n }\n}"}', - // ), - // addLlmCache( - // 6, - // 'api2Function', - // 'Please convert below API doc of format restAPI:\n{ "GET:/positions/{positionId}": {"summary":"View a specific job position","description":"Retrieve details of a specific job position by its ID.","operationId":"viewPosition","parameters":[{"name":"positionId","in":"path","required":true,"schema":{"type":"string"},"description":"The ID of the job position to retrieve"}],"responses":{"200":{"description":"Details of the job position","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the job position"},"title":{"type":"string","description":"Title of the job position"},"description":{"type":"string","description":"Description of the job position"},"location":{"type":"string","description":"Location of the job position"},"requirements":{"type":"array","items":{"type":"string"},"description":"List of requirements for the job position"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was last updated"}}}}}},"404":{"description":"Job position not found"},"500":{"description":"Internal Server Error"}}} }\n\ninto a js function, the function must be as follows:\n// the `invoker` function do the real invocation\nasync (invoker: (req:{ path: string; method: string; headers?: { [key: string]: string }; query?: { [key: string]: string }; params?: { [key: string]: string }; files?: { [key: string]: any }; body?: any; form?: any;})=>Promise<{ apiResult: any; headers?: { [key: string]: string }; status?: number; statusText?: string;}>, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; }\n\nplease generate the js function with **full implementation and error handling**! output a single-line json object:\n{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}', - // '{"funName":"viewPosition","params":["invoker","positionId"],"documents":"/**\\n * View a specific job position\\n * Retrieve details of a specific job position by its ID.\\n * @param {Function} invoker - The function that performs the real invocation.\\n * @param {string} positionId - The ID of the job position to retrieve.\\n * @returns {Promise} - A promise that resolves to the job position details.\\n * @property {string} id - Unique identifier for the job position.\\n * @property {string} title - Title of the job position.\\n * @property {string} description - Description of the job position.\\n * @property {string} location - Location of the job position.\\n * @property {Array} requirements - List of requirements for the job position.\\n * @property {string} createdAt - Timestamp when the job position was created.\\n * @property {string} updatedAt - Timestamp when the job position was last updated.\\n */","fullCode":"async (invoker, positionId) => {\\n try {\\n const json = await invoker({\\n path: `/positions/${positionId}`,\\n method: \'GET\',\\n params: { positionId }\\n });\\n if (json.status === 200) {\\n return json.apiResult;\\n } else if (json.status === 404) {\\n throw new Error(\'Job position not found\');\\n } else if (json.status === 500) {\\n throw new Error(\'Internal Server Error\');\\n }\\n } catch (error) {\\n throw new Error(`Error fetching job position: ${error.message}`);\\n }\\n}"}', - // ), - // addLlmCache( - // 7, - // 'api2Function', - // 'Please convert below API doc of format restAPI:\n{ "POST:/positions/{positionId}/apply": {"summary":"Apply for a position","description":"Submit an application for a specific job position.","operationId":"applyForPosition","parameters":[{"name":"positionId","in":"path","required":true,"schema":{"type":"string"},"description":"The ID of the job position to apply for"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"applicantName":{"type":"string","description":"Name of the applicant"},"email":{"type":"string","format":"email","description":"Email address of the applicant"},"resume":{"type":"string","format":"binary","description":"Resume of the applicant"},"coverLetter":{"type":"string","description":"Cover letter of the applicant"},"appliedAt":{"type":"string","format":"date-time","description":"Timestamp when the application was submitted"}}}}}},"responses":{"201":{"description":"Application submitted successfully"},"400":{"description":"Invalid input"},"404":{"description":"Job position not found"},"500":{"description":"Internal Server Error"}}} }\n\ninto a js function, the function must be as follows:\n// the `invoker` function do the real invocation\nasync (invoker: (req:{ path: string; method: string; headers?: { [key: string]: string }; query?: { [key: string]: string }; params?: { [key: string]: string }; files?: { [key: string]: any }; body?: any; form?: any;})=>Promise<{ apiResult: any; headers?: { [key: string]: string }; status?: number; statusText?: string;}>, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; }\n\nplease generate the js function with **full implementation and error handling**! output a single-line json object:\n{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}', - // '{"funName":"applyForPosition","params":["invoker","positionId","applicantName","email","resume","coverLetter","appliedAt"],"documents":"/**\\n * Apply for a position\\n * @param {Function} invoker - The function that performs the actual API invocation.\\n * @param {string} positionId - The ID of the job position to apply for.\\n * @param {string} applicantName - Name of the applicant.\\n * @param {string} email - Email address of the applicant.\\n * @param {string} resume - Resume of the applicant.\\n * @param {string} coverLetter - Cover letter of the applicant.\\n * @param {string} appliedAt - Timestamp when the application was submitted.\\n * @returns {Promise<{apiResult: any, headers?: { [key: string]: string }, status?: number, statusText?: string}>} The result of the API call.\\n */","fullCode":"async (invoker, positionId, applicantName, email, resume, coverLetter, appliedAt) => {\\n try {\\n const req = {\\n path: `/positions/${positionId}/apply`,\\n method: \'POST\',\\n headers: {\\n \'Content-Type\': \'application/json\'\\n },\\n body: {\\n applicantName,\\n email,\\n resume,\\n coverLetter,\\n appliedAt\\n }\\n };\\n const json = await invoker(req);\\n if (json.status === 201) {\\n return { apiResult: json.apiResult, headers: json.headers, status: json.status, statusText: json.statusText };\\n } else if (json.status === 400) {\\n throw new Error(\'Invalid input\');\\n } else if (json.status === 404) {\\n throw new Error(\'Job position not found\');\\n } else if (json.status === 500) {\\n throw new Error(\'Internal Server Error\');\\n } else {\\n throw new Error(\'Unknown error\');\\n }\\n } catch (error) {\\n console.error(\'Error applying for position:\', error.message);\\n throw error;\\n }\\n}"}', - // ), addLlmCache( prisma, - 'map2Function', + 'map2Endpoints', 'given below service APIs:\nservice test-callgent {\n "API: GET /positions": {"endpoint": "GET /positions", "summary":"listPositions: List all job positions", "description":"Retrieve a list of all available job positions.", "params":{}, "responses":{"200":{"description":"A list of job positions","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the job position"},"title":{"type":"string","description":"Title of the job position"},"description":{"type":"string","description":"Description of the job position"},"location":{"type":"string","description":"Location of the job position"},"requirements":{"type":"array","items":{"type":"string"},"description":"List of requirements for the job position"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was last updated"}}}}}}},"500":{"description":"Internal Server Error"}} },\n}\n\nPlease choose one API to fulfill below request:\n{\n"requesting endpoint": "GET /positions",\n"request from": "restAPI",\n"request_object": {"url":"/positions","method":"GET","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br","cache-control":"no-cache","connection":"keep-alive","host":"127.0.0.1:3000","user-agent":"Apifox/1.0.0 (https://apifox.com)"},"query":{}},\n}\nand code for request_object to chosen function args mapping. if any data missing/unclear/ambiguous from request_object to invocation args, please ask question to the caller in below json.question field.\n\noutput a single-line json object:\n{ "endpoint": "the chosen API endpoint to be invoked", "args":"params/body/headers/..., with same structure as the \'params\' JSON object(no more args than it) with additional \'value\' prop, or null if no args needed", "mapping": "if the the request_object is structured (or null if unstructured), generate the js function (request_object)=>{...;return API_signature_args;}, full implementation to return the **real** args from request_object to invoke the API. don\'t use data not exist or ambiguous in request", "question": "question to ask the caller if anything not sure or missing for request to args mapping, *no* guess or assumption of the mapping. null if the mapping is crystal clear." }"}', '{ "endpoint": "GET /positions", "args": null, "mapping": "(request_object)=>{return null;}", "question": null }', ), addLlmCache( prisma, - 'map2Function', + 'map2Endpoints', 'given below service APIs:\nservice test-callgent {\n "API: POST /api/users/send-confirm-email": {"endpoint": "POST /api/users/send-confirm-email", "summary":"UsersController_sendConfirmEmail: Reset password by sending validation email with reset url", "description":" Tags: Users", "params":{"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","example":"user@example.com","nullable":false},"create":{"type":"boolean","description":"If true, a new user will be created if not exists.","nullable":true},"resetPwd":{"type":"boolean","description":"If set to false, only validating email. Note: new user forces resetPwd.","nullable":true}},"required":["email"]}}}}}, "responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"number","description":"Status code, empty means success"},"message":{"type":"string"},"data":{"type":"object"},"meta":{"type":"object","description":"Pagination, usage, quotation, profiling, versions, HATEOAS, etc."}},"required":["data"]},{"properties":{"data":{"type":"boolean"}}}]}}}}} },\n}\n\nPlease choose one API to fulfill below request:\n{\n"requesting endpoint": "POST /api/users/send-confirm-email",\n"request from": "restAPI",\n"request_object": {"url":"/api/users/send-confirm-email","method":"POST","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br","cache-control":"no-cache","connection":"keep-alive","content-length":"53","content-type":"application/json","host":"127.0.0.1:3000","user-agent":"Apifox/1.0.0 (https://apifox.com)"},"params":{},"data":{"email":"dev@callgent.com","resetPwd":true}},\n}\nand code for request_object to chosen function args mapping. if any data missing/unclear/ambiguous from request_object to invocation args, please ask question to the caller in below json.question field.\n\noutput a single-line json object:\n{ "endpoint": "the chosen API endpoint to be invoked", "args":"params/body/headers/..., with same structure as the \'params\' JSON object(no more args than it) with additional \'value\' prop, or null if no args needed", "mapping": "if the the request_object is structured (or null if unstructured), generate the js function (request_object)=>{...;return API_signature_args;}, full implementation to return the **real** args from request_object to invoke the API. don\'t use data not exist or ambiguous in request", "question": "question to ask the caller if anything not sure or missing for request to args mapping, *no* guess or assumption of the mapping. null if the mapping is crystal clear." }"}', '```json\n{\n "endpoint": "POST /api/users/send-confirm-email",\n "args": {\n "params": null,\n "body": {\n "email": { "value": "dev@callgent.com" },\n "resetPwd": { "value": true }\n },\n "headers": null\n },\n "mapping": "(request_object) => {\n const { data } = request_object;\n return {\n body: {\n email: { value: data.email },\n resetPwd: { value: data.resetPwd }\n }\n };\n }",\n "question": null\n}\n```', ), addLlmCache( prisma, - 'map2Function', + 'map2Endpoints', 'given below service APIs:\nservice test-callgent {\n "API: POST /api/users/send-confirm-email": {"endpoint": "POST /api/users/send-confirm-email", "summary":"UsersController_sendConfirmEmail: Reset password by sending validation email with reset url", "description":" Tags: Users", "params":{"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","example":"user@example.com","nullable":false},"create":{"type":"boolean","description":"If true, a new user will be created if not exists.","nullable":true},"resetPwd":{"type":"boolean","description":"If set to false, only validating email. Note: new user forces resetPwd.","nullable":true}},"required":["email"]}}}}}, "responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"number","description":"Status code, empty means success"},"message":{"type":"string"},"data":{"type":"object"},"meta":{"type":"object","description":"Pagination, usage, quotation, profiling, versions, HATEOAS, etc."}},"required":["data"]},{"properties":{"data":{"type":"boolean"}}}]}}}}} },\n}\n\nPlease choose one API to fulfill below request:\n{\n"requesting endpoint": "POST /api/users/send-confirm-email",\n"request from": "restAPI",\n"request_object": {"url":"/api/users/send-confirm-email","method":"POST","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br","connection":"keep-alive","content-length":"53","content-type":"application/json","host":"127.0.0.1:3000","user-agent":"Apifox/1.0.0 (https://apifox.com)"},"params":{},"data":{"email":"dev@callgent.com","resetPwd":true}},\n}\nand code for request_object to chosen function args mapping. if any data missing/unclear/ambiguous from request_object to invocation args, please ask question to the caller in below json.question field.\n\noutput a single-line json object:\n{ "endpoint": "the chosen API endpoint to be invoked", "args":"params/body/headers/..., with same structure as the \'params\' JSON object(no more args than it) with additional \'value\' prop, or null if no args needed", "mapping": "if the the request_object is structured (or null if unstructured), generate the js function (request_object)=>{...;return API_signature_args;}, full implementation to return the **real** args from request_object to invoke the API. don\'t use data not exist or ambiguous in request", "question": "question to ask the caller if anything not sure or missing for request to args mapping, *no* guess or assumption of the mapping. null if the mapping is crystal clear." }"}', '```json\n{\n "endpoint": "POST /api/users/send-confirm-email",\n "args": {\n "params": null,\n "body": {\n "email": { "value": "dev@callgent.com" },\n "resetPwd": { "value": true }\n },\n "headers": null\n },\n "mapping": "(request_object) => {\n const { data } = request_object;\n return {\n body: {\n email: { value: data.email },\n resetPwd: { value: data.resetPwd }\n }\n };\n }",\n "question": null\n}\n```', ), diff --git a/prisma/seed.ts b/prisma/seed.ts index 83d83cf..a052cc7 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -82,8 +82,7 @@ function initEventListeners( serviceType: 'SERVICE', serviceName: 'EndpointsService', funName: 'loadFunctions', - description: - 'Load all entries of the callgent into event.context.functions', + description: 'Load all endpoints into event.context.endpoints', createdBy: 'GLOBAL', priority: (priority += 100), }, @@ -102,16 +101,30 @@ function initEventListeners( priority: (priority += 100), }, { - id: 'CR-MAP-2-FUNCTION', + id: 'CR-MAP-2-ENDPOINT', srcId: 'GLOBAL', tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', serviceName: 'AgentsService', - funName: 'map2Function', + funName: 'map2Endpoints', + description: + 'Map the request to endpoints and corresponding args, put into event.context.map2Endpoints and event.context.endpoints[0]', + createdBy: 'GLOBAL', + priority: (priority += 100), + }, + { + id: 'CR-GENERATE-WEBPAGE', + srcId: 'GLOBAL', + tenantPk: 0, + eventType: 'CLIENT_REQUEST', + dataType: 'Webpage', + serviceType: 'SERVICE', + serviceName: 'AgentsService', + funName: 'map2Endpoints', description: - 'Map the request to a endpoint function and corresponding args, put into event.context.map2Function and event.context.functions[0]', + 'Map the request to a endpoint function and corresponding args, put into event.context.map2Endpoints and event.context.endpoints[0]', createdBy: 'GLOBAL', priority: (priority += 100), }, @@ -185,10 +198,10 @@ into a js function, the function must be as follows: async (invoker: {{=it.handle}}, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; } please generate the js function with **full implementation and error handling**! output a single-line json object: -{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}`, +{"epName":"endpoint name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}`, }, { - name: 'map2Function', + name: 'map2Endpoints', prompt: `given below service APIs: service {{=it.callgentName}} {{{~ it.endpoints :fun }} "API: {{=fun.name}}": {"endpoint": "{{=fun.name}}", "summary":"{{=fun.summary}}", {{=fun.description ? '"description":"'+fun.description+'", ':''}}"params":{{=JSON.stringify(fun.params)}}, "responses":{{=JSON.stringify(fun.responses)}} }, @@ -196,7 +209,7 @@ service {{=it.callgentName}} {{{~ it.endpoints :fun }} Please choose one API to fulfill below request: { -{{ if (it.funName) { }}"requesting endpoint": "{{=it.funName}}", +{{ if (it.epName) { }}"requesting endpoint": "{{=it.epName}}", {{ } }}"request from": "{{=it.cepAdaptor}}", "request_object": {{=JSON.stringify(it.req)}}, } diff --git a/src/agents/agents.service.ts b/src/agents/agents.service.ts index 44b7d77..9f6ccbf 100644 --- a/src/agents/agents.service.ts +++ b/src/agents/agents.service.ts @@ -24,28 +24,28 @@ export class AgentsService { // handle, // ...args, // }, - // { funName: '', params: [''], documents: '', fullCode: '' }, + // { epName: '', params: [''], documents: '', fullCode: '' }, // ); // } /** * map req to an API function, generate args(with vars/conversations), argsMapping function if applicable */ - async map2Function( + async map2Endpoints( reqEvent: ClientRequestEvent, ): Promise { const { id, srcId, dataType: cepAdaptor, - data: { callgentName, funName, progressive }, + data: { callgentName, epName, progressive }, context: { tgtEvents, req }, } = reqEvent; const endpoints = reqEvent.context - .functions as unknown as EndpointDto[]; + .endpoints as unknown as EndpointDto[]; if (!endpoints?.length) throw new BadRequestException( - 'No functions for mapping, ClientRequestEvent#' + id, + 'No endpoints for mapping, ClientRequestEvent#' + id, ); // FIXME map from all targetId events @@ -53,12 +53,12 @@ export class AgentsService { // TODO how to use mapping function: for specific req & function const mapped = await this.llmService.template( - 'map2Function', - { req, funName, callgentName, cepAdaptor, endpoints }, + 'map2Endpoints', + { req, epName, callgentName, cepAdaptor, endpoints }, { endpoint: '', args: {}, mapping: '', question: '' }, id, - ); // TODO check `funName` exists in endpoints, validating `mapping` - reqEvent.context.map2Function = mapped; + ); // TODO check `epName` exists in endpoints, validating `mapping` + reqEvent.context.map2Endpoints = mapped; if (mapped.question) { if (!progressive) @@ -86,12 +86,12 @@ export class AgentsService { return { data: reqEvent, resumeFunName: 'map2FunctionProgressive' }; throw new HttpException(message, statusCode); } else { - const functions = reqEvent.context.functions.filter( + const endpoints = reqEvent.context.endpoints.filter( (f) => f.name == mapped.endpoint, ); - if (functions?.length != 1) + if (endpoints?.length != 1) throw new BadRequestException('Failed to map to function: ' + mapped); - reqEvent.context.functions = functions; + reqEvent.context.endpoints = endpoints; mapped.args = this._args2List30x(mapped.args); } @@ -139,7 +139,7 @@ export class AgentsService { { args, resp, fun }, { statusCode: 200, data: {} }, eventId, - ); // TODO check `funName` exists in endpoints, validating `mapping` + ); // TODO check `epName` exists in endpoints, validating `mapping` return { statusCode: mapped.statusCode, data: mapped.data }; } diff --git a/src/agents/events/progressive-request.event.ts b/src/agents/events/progressive-request.event.ts index e16870e..8faece3 100644 --- a/src/agents/events/progressive-request.event.ts +++ b/src/agents/events/progressive-request.event.ts @@ -7,7 +7,7 @@ export class ProgressiveRequestEvent extends EventObject { fromEvent: string, dataType: string, public readonly data: { - /** url template for progressive requesting, `callgent:funName[@callgent]` to invoke callgent */ + /** url template for progressive requesting, `callgent:epName[@callgent]` to invoke callgent */ progressive: string; }, ) { diff --git a/src/callgent-hub/callgent-hub.service.ts b/src/callgent-hub/callgent-hub.service.ts index 5212773..6a33425 100644 --- a/src/callgent-hub/callgent-hub.service.ts +++ b/src/callgent-hub/callgent-hub.service.ts @@ -166,10 +166,10 @@ export class CallgentHubService { ); this.tenancyService.setTenantId(fromTenant); - const functionMap = {}; + const endpointMap = {}; await Promise.all( ens.map(async (epOld) => { - const functions = await this.endpointsService.findAll({ + const endpoints = await this.endpointsService.findAll({ where: { entryId: epOld.id }, orderBy: { pk: 'asc' }, select: { @@ -184,7 +184,7 @@ export class CallgentHubService { rawJson: true, }, }); - functionMap[epOld.id] = functions; + endpointMap[epOld.id] = endpoints; }), ); @@ -201,7 +201,7 @@ export class CallgentHubService { }); return Promise.all( - functionMap[epOld.id].map((fun) => { + endpointMap[epOld.id].map((fun) => { const securities: any[] = dupSecurities(fun.securities); return this.endpointsService.create({ ...fun, diff --git a/src/callgent-realms/callgent-realms.service.ts b/src/callgent-realms/callgent-realms.service.ts index c69943f..539cba1 100644 --- a/src/callgent-realms/callgent-realms.service.ts +++ b/src/callgent-realms/callgent-realms.service.ts @@ -182,9 +182,9 @@ export class CallgentRealmsService implements OnModuleInit { async checkSepAuth( reqEvent: ClientRequestEvent, ): Promise { - // functions: Endpoint[], @see AgentsService.map2Function + // endpoints: Endpoint[], @see AgentsService.map2Endpoints const { securities, entryId: sepId } = - reqEvent.context.functions?.length && reqEvent.context.functions[0]; + reqEvent.context.endpoints?.length && reqEvent.context.endpoints[0]; const sep = sepId && (await this.entriesService.findOne(reqEvent.srcId)); if (!sep) diff --git a/src/endpoints/endpoints.service.ts b/src/endpoints/endpoints.service.ts index 6e179a4..5992337 100644 --- a/src/endpoints/endpoints.service.ts +++ b/src/endpoints/endpoints.service.ts @@ -44,31 +44,31 @@ export class EndpointsService { async loadFunctions( reqEvent: ClientRequestEvent, ): Promise { - const { funName, callgentId } = reqEvent.data; + const { epName, callgentId } = reqEvent.data; - // TODO if too many functions, use summary first - const { data: funcs } = await this.findMany({ + // TODO if too many endpoints, use summary first + const { data: eps } = await this.findMany({ select: { createdAt: false, updatedAt: false, params: null, responses: null, }, - where: { callgentId: callgentId, name: funName }, + where: { callgentId: callgentId, name: epName }, perPage: Number.MAX_SAFE_INTEGER, }); - if (!funcs.length) + if (!eps.length) throw new NotFoundException( `No function found on callgent#${callgentId}${ - funName ? ' name=' + funName : '' + epName ? ' name=' + epName : '' }`, ); - reqEvent.context.functions = funcs as any[]; + reqEvent.context.endpoints = eps as any[]; } /** * a single function invocation. simple with no vars/flow controls/lambdas/parallels. - * system callgents are involved: collection functions, timer, etc. + * system callgents are involved: collection endpoints, timer, etc. */ // protected async _invoke( // taskAction: TaskActionDto, @@ -77,7 +77,7 @@ export class EndpointsService { // ) { // // FIXME task ctx msgs // // 生成args映射方法, - // const { funName, mapping, question } = await this._mapping( + // const { epName, mapping, question } = await this._mapping( // taskAction, // callgent.name, // endpoints, @@ -91,7 +91,7 @@ export class EndpointsService { // // ); // } - // const fun = endpoints.find((f) => f.name === funName); + // const fun = endpoints.find((f) => f.name === epName); // if (!fun) return; // FIXME // // doInvoke @@ -168,7 +168,7 @@ export class EndpointsService { }, ); - // create api functions + // create api endpoints const prisma = this.txHost.tx as PrismaClient; const { count: actionsCount } = await prisma.endpoint.createMany({ data: actMap, diff --git a/src/entries/adaptors/builtin/email/email.adaptor.ts b/src/entries/adaptors/builtin/email/email.adaptor.ts index 43f757b..9bd9c52 100644 --- a/src/entries/adaptors/builtin/email/email.adaptor.ts +++ b/src/entries/adaptors/builtin/email/email.adaptor.ts @@ -60,7 +60,7 @@ export class EmailAdaptor extends EntryAdaptor { // convert resp to api format reqEvent.context.resp = await this.agentsService.convert2Response( - reqEvent?.context?.map2Function?.args, + reqEvent?.context?.map2Endpoints?.args, resp.content.text || resp.content.html, fun, reqEvent.id, diff --git a/src/entries/adaptors/builtin/restapi/restapi.controller.ts b/src/entries/adaptors/builtin/restapi/restapi.controller.ts index 139399f..6bd6ee7 100644 --- a/src/entries/adaptors/builtin/restapi/restapi.controller.ts +++ b/src/entries/adaptors/builtin/restapi/restapi.controller.ts @@ -58,7 +58,7 @@ export class RestApiController { description: 'AI agent will generate code to invoke several functional endpoints to fulfill the requirement.', }) - @Post('request') + @Post('request/:callgentId/:entryId') @ApiUnauthorizedResponse() async request(@Body() req: Requirement) { // TODO @@ -103,8 +103,8 @@ export class RestApiController { @Headers('x-callgent-timeout') timeout?: string, ) { const basePath = `invoke/${callgentId}/${entryId}/`; - let funName = req.url.substr(req.url.indexOf(basePath) + basePath.length); - if (funName) funName = Utils.formalApiName(req.method, '/' + funName); + let epName = req.url.substr(req.url.indexOf(basePath) + basePath.length); + if (epName) epName = Utils.formalApiName(req.method, '/' + epName); const callerId = req.user?.sub; // || req.ip || req.socket.remoteAddress; // TODO owner defaults to caller callgent @@ -125,21 +125,27 @@ export class RestApiController { if (!callgent) throw new NotFoundException('callgent not found: ' + callgentId); - const { data, statusCode, message } = await this.eventListenersService.emit( - new ClientRequestEvent(cep.id, taskId, cep.adaptorKey, callback, req, { - callgentId, - callgentName: callgent.name, - callerId, - progressive, - funName, - }), + const result = await this.eventListenersService.emit( + new ClientRequestEvent( + cep.id, + taskId, + cep.adaptorKey, + req, + { + callgentId, + callgentName: callgent.name, + callerId, + progressive, + epName, + }, + callback, + ), parseInt(timeout) || 0, // sync timeout ); // FIXME data - res - .status(statusCode < 0 ? 418 : statusCode < 200 ? 200 : statusCode) - .send({ data, statusCode, message }); + const code = result.statusCode || 200; // code cannot < 0 + res.status(code < 0 ? 418 : code < 200 ? 200 : code).send(result); } @ApiOperation({ diff --git a/src/entries/entries.service.ts b/src/entries/entries.service.ts index 6cb61e6..5055563 100644 --- a/src/entries/entries.service.ts +++ b/src/entries/entries.service.ts @@ -303,11 +303,11 @@ export class EntriesService { @Transactional() async invokeSEP(reqEvent: ClientRequestEvent) { - const { map2Function, functions } = reqEvent.context; - if (!map2Function || !functions?.length) + const { map2Endpoints, endpoints } = reqEvent.context; + if (!map2Endpoints || !endpoints?.length) throw new Error('Failed to invoke, No mapping function found'); - const func = functions[0] as EndpointDto; + const func = endpoints[0] as EndpointDto; const sep = await this.findOne(func.entryId, { id: true, name: true, @@ -324,7 +324,7 @@ export class EntriesService { // may returns pending result return adapter - .invoke(func, map2Function.args, sep as any, reqEvent) + .invoke(func, map2Endpoints.args, sep as any, reqEvent) .then((res) => { if (res && res.resumeFunName) return res; return this.postInvokeSEP((res && res.data) || reqEvent); @@ -335,12 +335,12 @@ export class EntriesService { @Transactional() async postInvokeSEP(reqEvent: ClientRequestEvent) { const { - context: { functions, resp }, + context: { endpoints, resp }, } = reqEvent; - if (!functions?.length) + if (!endpoints?.length) throw new Error('Failed to invoke, No mapping function found'); - const func = functions[0] as EndpointDto; + const func = endpoints[0] as EndpointDto; const sep = await this.findOne(func.entryId, { id: true, name: true, diff --git a/src/entries/events/client-request.event.ts b/src/entries/events/client-request.event.ts index 807ebcb..5f56583 100644 --- a/src/entries/events/client-request.event.ts +++ b/src/entries/events/client-request.event.ts @@ -11,11 +11,10 @@ import { EventObject } from '../../event-listeners/event-object'; export class ClientRequestEvent extends EventObject { constructor( /** client entry id */ - cepId: string, + entryId: string, /** empty to create new task */ taskId: string, dataType: string, - callback: string, req: object, public readonly data: { callgentId: string; @@ -23,12 +22,12 @@ export class ClientRequestEvent extends EventObject { /** empty means anonymous */ callerId?: string; /** requested endpoint name */ - funName?: string; - /** url template for progressive requesting, `callgent:funName[@callgent]` to invoke callgent */ + epName?: string /** url template for progressive requesting, `callgent:epName[@callgent]` to invoke callgent */; progressive?: string; }, + callback?: string, ) { - super(cepId, 'CLIENT_REQUEST', dataType, taskId, callback, 'URL'); + super(entryId, 'CLIENT_REQUEST', dataType, taskId, callback, 'URL'); this.context.req = req; } } diff --git a/src/event-listeners/event-object.ts b/src/event-listeners/event-object.ts index 4c420f4..3e90bad 100644 --- a/src/event-listeners/event-object.ts +++ b/src/event-listeners/event-object.ts @@ -9,7 +9,7 @@ export class EventObject { public readonly dataType: string, /** target id to relate several events */ public targetId: string, - /** url template for response callback, `callgent:funName[@callgent]` to invoke callgent */ + /** url template for response callback, `callgent:epName[@callgent]` to invoke callgent */ public callback?: string, public readonly callbackType: EventCallbackType = 'EVENT', ) { From f318cf0efd86fb2130619c0c43ce176f5f2c1f63 Mon Sep 17 00:00:00 2001 From: dev-callgent Date: Sat, 12 Oct 2024 09:53:35 +0800 Subject: [PATCH 2/5] feat: webpage entry: service Signed-off-by: dev-callgent --- .../migration.sql | 13 + prisma/schema.prisma | 14 +- prisma/seed.ts | 12 +- src/endpoints/endpoints.service.ts | 4 +- .../adaptors/builtin/web/webpage.adaptor.ts | 44 +-- .../builtin/web/webpage.controller.ts | 270 ++++++++++++++++++ .../adaptors/builtin/web/webpage.service.ts | 26 ++ src/entries/entries.module.ts | 5 +- src/entries/entries.service.ts | 5 +- .../event-listeners.service.ts | 6 + src/event-listeners/event-object.ts | 2 +- 11 files changed, 360 insertions(+), 41 deletions(-) create mode 100644 prisma/migrations/20241012014016_refactor_epname/migration.sql create mode 100644 src/entries/adaptors/builtin/web/webpage.controller.ts create mode 100644 src/entries/adaptors/builtin/web/webpage.service.ts diff --git a/prisma/migrations/20241012014016_refactor_epname/migration.sql b/prisma/migrations/20241012014016_refactor_epname/migration.sql new file mode 100644 index 0000000..e4101e1 --- /dev/null +++ b/prisma/migrations/20241012014016_refactor_epname/migration.sql @@ -0,0 +1,13 @@ +/* + Warnings: + + - You are about to drop the column `defaultPrevented` on the `EventStore` table. All the data in the column will be lost. + - You are about to drop the column `funName` on the `TaskAction` table. All the data in the column will be lost. + - Added the required column `preventDefault` to the `EventStore` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "EventStore" RENAME COLUMN "defaultPrevented" TO "preventDefault"; + +-- AlterTable +ALTER TABLE "TaskAction" RENAME COLUMN "funName" TO "epName"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 950ac5e..7509aaf 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -371,7 +371,7 @@ model TaskAction { // client side information /// @description action owner callgent id, responsible for progressive response ceId String? @db.VarChar(36) /// @description client entry id - funName String? @db.VarChar(255) /// @description optional endpoint name + epName String? @db.VarChar(255) /// @description optional endpoint name cAdaptor String @db.VarChar(36) /// @description client adaptor key callback Json? @db.Json /// @description callback url template or endpoint progressive String? @db.VarChar(36) /// @description progressive requesting url template or endpoint @@ -594,12 +594,12 @@ model EventStore { context Json? @db.Json /// @description statusCode, 1: processing, 0: done, 2: pending: waiting for external event trigger to to resume calling current-listener.funName, <0: error - statusCode Int @default(1) - message String? @db.VarChar(255) - stopPropagation Boolean - defaultPrevented Boolean - listenerId String? @db.VarChar(36) - funName String? @db.VarChar(255) /// @description listener's function to call on pending event activated. + statusCode Int @default(1) + message String? @db.VarChar(255) + stopPropagation Boolean /// @description stop propagation to next listeners + preventDefault Boolean /// @description prevent default action, going to next listeners + listenerId String? @db.VarChar(36) + funName String? @db.VarChar(255) /// @description listener's function to call on pending event activated. createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt diff --git a/prisma/seed.ts b/prisma/seed.ts index a052cc7..0affea8 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -74,14 +74,14 @@ function initEventListeners( priority: (priority += 100), }, { - id: 'CR-LOAD-FUNCTIONS', + id: 'CR-LOAD-ENDPOINTS', srcId: 'GLOBAL', tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', serviceName: 'EndpointsService', - funName: 'loadFunctions', + funName: 'loadEndpoints', description: 'Load all endpoints into event.context.endpoints', createdBy: 'GLOBAL', priority: (priority += 100), @@ -101,7 +101,7 @@ function initEventListeners( priority: (priority += 100), }, { - id: 'CR-MAP-2-ENDPOINT', + id: 'CR-MAP-2-ENDPOINTS', srcId: 'GLOBAL', tenantPk: 0, eventType: 'CLIENT_REQUEST', @@ -121,10 +121,10 @@ function initEventListeners( eventType: 'CLIENT_REQUEST', dataType: 'Webpage', serviceType: 'SERVICE', - serviceName: 'AgentsService', - funName: 'map2Endpoints', + serviceName: 'WebpagesService', + funName: 'genWebpage', description: - 'Map the request to a endpoint function and corresponding args, put into event.context.map2Endpoints and event.context.endpoints[0]', + 'Generate webpage[view/model/view-model] from request & endpoints', createdBy: 'GLOBAL', priority: (priority += 100), }, diff --git a/src/endpoints/endpoints.service.ts b/src/endpoints/endpoints.service.ts index 5992337..02d8b7f 100644 --- a/src/endpoints/endpoints.service.ts +++ b/src/endpoints/endpoints.service.ts @@ -41,7 +41,7 @@ export class EndpointsService { deletedAt: false, }; - async loadFunctions( + async loadEndpoints( reqEvent: ClientRequestEvent, ): Promise { const { epName, callgentId } = reqEvent.data; @@ -59,7 +59,7 @@ export class EndpointsService { }); if (!eps.length) throw new NotFoundException( - `No function found on callgent#${callgentId}${ + `No service endpoints found on callgent#${callgentId}${ epName ? ' name=' + epName : '' }`, ); diff --git a/src/entries/adaptors/builtin/web/webpage.adaptor.ts b/src/entries/adaptors/builtin/web/webpage.adaptor.ts index fe14dca..c5e89f9 100644 --- a/src/entries/adaptors/builtin/web/webpage.adaptor.ts +++ b/src/entries/adaptors/builtin/web/webpage.adaptor.ts @@ -7,12 +7,33 @@ import { ClientRequestEvent } from '../../../events/client-request.event'; import { EntryAdaptor, EntryConfig } from '../../entry-adaptor.base'; import { EntryAdaptorName } from '../../entry-adaptor.decorator'; -@EntryAdaptorName('webpage', 'client') +@EntryAdaptorName('Webpage', 'client') export class WebpageAdaptor extends EntryAdaptor { constructor(@Inject('AgentsService') readonly agentsService: AgentsService) { super(agentsService); } + async preprocess(reqEvent: ClientRequestEvent, entry: EntryDto) { + // + } + + async postprocess(reqEvent: ClientRequestEvent, fun: EndpointDto) { + // + } + + req2Json(req: object) { + throw new NotImplementedException('Method not implemented.'); + } + + async invoke( + fun: EndpointDto, + args: object, + sep: Entry, + reqEvent: ClientRequestEvent, + ): Promise<{ data: ClientRequestEvent; resumeFunName?: string }> { + throw new NotImplementedException('Method not implemented.'); + } + getCallback(callback: string, reqEntry?: EntryDto): Promise { throw new NotImplementedException('Method not implemented.'); } @@ -77,31 +98,10 @@ export class WebpageAdaptor extends EntryAdaptor { throw new NotImplementedException('Method not implemented.'); } - async preprocess(reqEvent: ClientRequestEvent, entry: EntryDto) { - // - } - - async postprocess(reqEvent: ClientRequestEvent, fun: EndpointDto) { - // - } - readData(name: string, hints?: { [key: string]: any }): Promise { throw new NotImplementedException('Method not implemented.'); } - req2Json(req: object) { - throw new NotImplementedException('Method not implemented.'); - } - - async invoke( - fun: EndpointDto, - args: object, - sep: Entry, - reqEvent: ClientRequestEvent, - ): Promise<{ data: ClientRequestEvent; resumeFunName?: string }> { - throw new NotImplementedException('Method not implemented.'); - } - callback(resp: any): Promise { throw new NotImplementedException('Method not implemented.'); } diff --git a/src/entries/adaptors/builtin/web/webpage.controller.ts b/src/entries/adaptors/builtin/web/webpage.controller.ts new file mode 100644 index 0000000..5d7da64 --- /dev/null +++ b/src/entries/adaptors/builtin/web/webpage.controller.ts @@ -0,0 +1,270 @@ +import { + All, + Body, + Controller, + Get, + Headers, + Inject, + NotFoundException, + Param, + Post, + Query, + Req, + Res, + UseGuards, +} from '@nestjs/common'; +import { + ApiHeader, + ApiOperation, + ApiParam, + ApiProperty, + ApiQuery, + ApiTags, + ApiUnauthorizedResponse, +} from '@nestjs/swagger'; +import { EntryType } from '@prisma/client'; +import { IsNotEmpty, IsString } from 'class-validator'; +import { CallgentsService } from '../../../../callgents/callgents.service'; +import { EventListenersService } from '../../../../event-listeners/event-listeners.service'; +import { JwtGuard } from '../../../../infra/auth/jwt/jwt.guard'; +import { Utils } from '../../../../infra/libs/utils'; +import { EntriesService } from '../../../entries.service'; +import { ClientRequestEvent } from '../../../events/client-request.event'; + +export class Requirement { + @ApiProperty({ + description: 'Requirement for callgent to fulfill.', + example: + 'I want to apply for the Senior Algorithm Engineer based in Singapore.', + required: true, + }) + @IsNotEmpty() + @IsString() + requirement: string; +} + +/** to generate web pages based on request and callgent endpoints */ +@ApiTags('Client Entry: Webpage') +@UseGuards(new JwtGuard(true)) +@Controller('webpage') +export class WebpageController { + constructor( + protected readonly callgentsService: CallgentsService, + @Inject('EntriesService') + protected readonly entriesService: EntriesService, + protected readonly eventListenersService: EventListenersService, + ) {} + + @ApiOperation({ + summary: + 'Request with requirement description, to instantly generate web page.', + description: + 'AI agent will instantly generate page to fulfill the requirement.', + }) + @ApiQuery({ + name: 'taskId', + required: false, + description: 'Conversation Id', + }) + @Get('request/:callgentId/:entryId') + async request( + @Body() requirement: Requirement, + @Param('callgentId') callgentId: string, + @Req() req, + @Res() res, + @Param('entryId') entryId?: string, + @Query('taskId') taskId?: string, + ) { + const { entry, callgent } = await this._load(callgentId, entryId); + + const result = await this.eventListenersService.emit( + new ClientRequestEvent( + entry.id, + taskId, + entry.adaptorKey, + requirement, + { + callgentId, + callgentName: callgent.name, + callerId: req.user?.sub, + // progressive, // 是否需要渐进式? + }, + // callback, // 是否需要异步返回结果 + ), + ); + // event listeners: + // preprocess, c-auth, load eps, load target events, map2Endpoints, + + // [gen view/model/view-model, response] + + // remove: | s-auth, invoke-service + + // return generated webpage + const code = result.statusCode || 200; + res.status(code < 0 ? 418 : code < 200 ? 200 : code).send(result); + } + + @ApiOperation({ summary: 'To invoke pregenerated pages.' }) + @ApiParam({ + name: 'callgentId', + required: true, + description: 'Callgent id', + }) + @ApiParam({ + name: 'entryId', + required: false, + description: + 'Client entry id, mey empty: "/rest/invoke/:callgent-id`//`.."', + }) + @ApiParam({ + name: 'NOTE: swagger does not support wildcard param. Just document here', + required: false, + description: + 'rest/invoke/:callgentId/:entryId/`resource-path-here`. the wildcard path, may be empty', + }) + @ApiHeader({ name: 'x-callgent-taskId', required: false }) + @ApiHeader({ + name: 'x-callgent-progressive', + required: false, + description: 'progressive request responder', + }) + @ApiHeader({ name: 'x-callgent-callback', required: false }) + @ApiHeader({ name: 'x-callgent-timeout', required: false }) + @All('invoke/:callgentId/:entryId/*') + @ApiUnauthorizedResponse() + async invoke( + @Req() req, + @Res() res, + @Param('callgentId') callgentId: string, + @Param('entryId') entryId?: string, + @Headers('x-callgent-taskId') taskId?: string, + @Headers('x-callgent-progressive') progressive?: string, + @Headers('x-callgent-callback') callback?: string, + @Headers('x-callgent-timeout') timeout?: string, + ) { + const basePath = `invoke/${callgentId}/${entryId}/`; + let epName = req.url.substr(req.url.indexOf(basePath) + basePath.length); + if (epName) epName = Utils.formalApiName(req.method, '/' + epName); + + const { entry, callgent } = await this._load(callgentId, entryId); + + const result = await this.eventListenersService.emit( + new ClientRequestEvent( + entry.id, + taskId, + entry.adaptorKey, + req, + { + callgentId, + callgentName: callgent.name, + callerId: req.user?.sub, + progressive, + epName, + }, + callback, + ), + parseInt(timeout) || 0, // sync timeout + ); + // FIXME data + const code = result.statusCode || 200; + // code cannot < 0 + res.status(code < 0 ? 418 : code < 200 ? 200 : code).send(result); + } + + private async _load(callgentId: string, entryId: string) { + // TODO owner defaults to caller callgent + // find callgent cep, then set tenantPk + const entry = await this.entriesService.$findFirstByType( + EntryType.CLIENT, + callgentId, + 'Webpage', + entryId, + ); + if (!entry) + throw new NotFoundException( + 'restAPI entry not found for callgent: ' + callgentId, + ); + const callgent = await this.callgentsService.findOne(callgentId, { + name: true, + }); + if (!callgent) + throw new NotFoundException('callgent not found: ' + callgentId); + return { entry, callgent }; + } + + @ApiOperation({ + description: + 'Inquiry the result of an invocation request. TODO: Socket Mode', + }) + @Get('/result/:requestId') + async invokeResult(@Param('requestId') reqId: string) { + // FIXME + return null; + } + + /** + * 1. push(task): { + * 2. mapping, + * 3. progressive param, ? manual/ai? + * 4. auth, invoke,-> } + * 5. reply -> confirm task + */ + // @Post('reply/:authToken') + // async postReply(@Param('authToken') authToken: string, @Body() body: object) { + // // verify the authToken + // const caller: JwtPayload = await this.verifyAppToken(authToken); + // if (!caller) throw new UnauthorizedException(); + + // // return this.called(authToken, body); + // } + + /** + * + * 1. called: { + * 2. verify + * 3. convert -> + * 4. create} + * 5. respond to caller -> + */ + // async called(authToken: string, callerType: string, body: object) { + // // verify the authToken + // const caller: JwtPayload = await this.verifyAppToken(authToken); + // if (!caller) throw new UnauthorizedException(); + + // const dto = await this.convertToTask(callerType, body, caller); + // if (!dto?.callgent) + // throw new BadRequestException('callgent id is missing'); + + // const [task] = await this.tasksService.create(dto); + + // // TODO instant syncResult to respond + // return task; + // } + + // /** jwt with aud == 'authToken' */ + // async verifyAppToken(authToken: string) { + // const payload: JwtPayload = await this.authTokensService.verify( + // authToken, + // 'API_KEY', + // ); + // return payload; + // } + + /** implementation for postmarkapp.com */ + // async convertToTask( + // callerType: string, + // body: object, + // caller: JwtPayload, + // ): Promise { + // const plugin: CallerPlugin = this.pluginsService.getPlugin(callerType); + // if (!plugin?.convertToTask) + // throw new BadRequestException( + // `plugin callerType=${callerType} not found`, + // ); + + // const task: TaskDto = await plugin.convertToTask(callerType, body, caller); + // if (!task) return; + + // return { ...task, callerType, createdBy: caller.sub }; + // } +} diff --git a/src/entries/adaptors/builtin/web/webpage.service.ts b/src/entries/adaptors/builtin/web/webpage.service.ts new file mode 100644 index 0000000..d1c6073 --- /dev/null +++ b/src/entries/adaptors/builtin/web/webpage.service.ts @@ -0,0 +1,26 @@ +import { TransactionHost, Transactional } from '@nestjs-cls/transactional'; +import { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma'; +import { Inject, Injectable } from '@nestjs/common'; +import { ModuleRef, ModulesContainer } from '@nestjs/core'; +import { PrismaTenancyService } from '../../../../infra/repo/tenancy/prisma-tenancy.service'; +import { ClientRequestEvent } from '../../../events/client-request.event'; + +@Injectable() +export class WebpageService { + constructor( + private readonly moduleRef: ModuleRef, + @Inject(ModulesContainer) + private readonly modulesContainer: ModulesContainer, + private readonly txHost: TransactionHost, + private readonly tenancyService: PrismaTenancyService, + ) {} + + /** Generate webpage[view/model/view-model], then respond the src code */ + @Transactional() + async genWebpage( + data: ClientRequestEvent, + ): Promise { + data.stopPropagation = true; // stop event propagation + return { data }; + } +} diff --git a/src/entries/entries.module.ts b/src/entries/entries.module.ts index 08b2d44..b992b15 100644 --- a/src/entries/entries.module.ts +++ b/src/entries/entries.module.ts @@ -4,6 +4,8 @@ import { EmailAdaptor } from './adaptors/builtin/email/email.adaptor'; import { RestAPIAdaptor } from './adaptors/builtin/restapi/restapi.adaptor'; import { RestApiController } from './adaptors/builtin/restapi/restapi.controller'; import { WebpageAdaptor } from './adaptors/builtin/web/webpage.adaptor'; +import { WebpageController } from './adaptors/builtin/web/webpage.controller'; +import { WebpageService } from './adaptors/builtin/web/webpage.service'; import { EntriesController } from './entries.controller'; import { EntriesService } from './entries.service'; import { CallgentCreatedListener } from './listeners/callgent-created.listener'; @@ -12,6 +14,7 @@ import { CallgentCreatedListener } from './listeners/callgent-created.listener'; imports: [CallgentsModule], providers: [ { provide: 'EntriesService', useClass: EntriesService }, + { provide: 'WebpageService', useClass: WebpageService }, CallgentCreatedListener, { provide: 'restAPI-EntryAdaptor', @@ -26,7 +29,7 @@ import { CallgentCreatedListener } from './listeners/callgent-created.listener'; useClass: EmailAdaptor, }, ], - controllers: [EntriesController, RestApiController], + controllers: [EntriesController, RestApiController, WebpageController], exports: ['EntriesService'], }) export class EntriesModule {} diff --git a/src/entries/entries.service.ts b/src/entries/entries.service.ts index 5055563..c1efe9b 100644 --- a/src/entries/entries.service.ts +++ b/src/entries/entries.service.ts @@ -10,11 +10,12 @@ import { Injectable, InjectionToken, NotFoundException, + OnModuleInit, } from '@nestjs/common'; import { ModuleRef, ModulesContainer } from '@nestjs/core'; import { EntryType, Prisma, PrismaClient } from '@prisma/client'; -import { EndpointDto } from '../endpoints/dto/endpoint.dto'; import { RealmSecurityVO } from '../callgent-realms/dto/realm-security.vo'; +import { EndpointDto } from '../endpoints/dto/endpoint.dto'; import { Utils } from '../infra/libs/utils'; import { selectHelper } from '../infra/repo/select.helper'; import { PrismaTenancyService } from '../infra/repo/tenancy/prisma-tenancy.service'; @@ -25,7 +26,7 @@ import { UpdateEntryDto } from './dto/update-entry.dto'; import { ClientRequestEvent } from './events/client-request.event'; @Injectable() -export class EntriesService { +export class EntriesService implements OnModuleInit { constructor( private readonly moduleRef: ModuleRef, @Inject(ModulesContainer) diff --git a/src/event-listeners/event-listeners.service.ts b/src/event-listeners/event-listeners.service.ts index dd02914..2731d82 100644 --- a/src/event-listeners/event-listeners.service.ts +++ b/src/event-listeners/event-listeners.service.ts @@ -124,6 +124,12 @@ export class EventListenersService { let [statusCode, idx] = [1, 0]; try { for (; idx < listeners.length; ) { + if (event.stopPropagation) break; + if (event.preventDefault) { + event.preventDefault = false; + continue; + } + const listener = listeners[idx++]; try { const result = await this._invokeListener(listener, event, funName); diff --git a/src/event-listeners/event-object.ts b/src/event-listeners/event-object.ts index 3e90bad..421233a 100644 --- a/src/event-listeners/event-object.ts +++ b/src/event-listeners/event-object.ts @@ -18,5 +18,5 @@ export class EventObject { public readonly id: string; public readonly context: { [key: string]: any } = {}; public stopPropagation = false; - public defaultPrevented = false; + public preventDefault = false; } From b9e4526faa5064fdefcac78557cbad4c07f32593 Mon Sep 17 00:00:00 2001 From: dev-callgent Date: Sun, 13 Oct 2024 20:24:12 +0800 Subject: [PATCH 3/5] feat: auto-gen host when creating centry Signed-off-by: dev-callgent --- prisma/schema.prisma | 3 +- src/app.controller.ts | 104 +--------- src/emails/emails.controller.ts | 4 +- .../adaptors/builtin/email/email.adaptor.ts | 15 +- .../builtin/restapi/restapi.adaptor.ts | 174 ++++++++-------- .../builtin/restapi/restapi.controller.ts | 4 +- .../adaptors/builtin/web/webpage.adaptor.ts | 97 ++++----- .../builtin/web/webpage.controller.ts | 80 +------- src/entries/adaptors/entry-adaptor.base.ts | 190 +++++++++--------- src/entries/entries.service.ts | 18 +- src/infra/libs/utils.ts | 1 + 11 files changed, 270 insertions(+), 420 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7509aaf..a885e46 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -448,7 +448,8 @@ model Entry { adaptorKey String @db.VarChar(127) /// @description entry adaptor key priority Int @default(0) /// @description priority in the callgent - host String @db.VarChar(2047) /// @description host address, e.g. '/api/callgents/rbhes0-w4rff/{id}/invoke/', where `{id}` will be replaced with current entry id + /// @DtoCreateOptional + host String @db.VarChar(2047) /// @description host address, client entry host are *generated*, e.g. '/api/rest/invoke/rbhes0-w4rff/{id}', where `{id}` will be replaced with current entry id initParams Json? @db.Json /// @description initializing parameters content Json? @db.Json /// @description generated content/code by init method /// @DtoReadOnly diff --git a/src/app.controller.ts b/src/app.controller.ts index ac5fc12..e2fda7c 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -1,110 +1,8 @@ -import { Body, Controller, Get, Logger, Post } from '@nestjs/common'; +import { Controller, Logger } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController { constructor(private readonly appService: AppService) {} private readonly logger = new Logger(AppController.name); - - @Get() - getHello(): string { - return this.appService.getHello(); - } - - @Post() - postHello(@Body() body: any): string { - this.logger.warn(body); - const postmarkapp_com = { - FromName: 'JamesP', - MessageStream: 'inbound', - From: 'pang.ju@roles.chat', - FromFull: { - Email: 'pang.ju@roles.chat', - Name: 'JamesP', - MailboxHash: '', - }, - To: '"ddsfskldfjds+334rfgg@my.callgent.com" ', - ToFull: [ - { - Email: 'ddsfskldfjds+334rfgg@my.callgent.com', - Name: 'ddsfskldfjds+334rfgg@my.callgent.com', - MailboxHash: '334rfgg', - }, - ], - Cc: '', - CcFull: [], - Bcc: '', - BccFull: [], - OriginalRecipient: 'ddsfskldfjds+334rfgg@my.callgent.com', - Subject: 'Re: sfddsf', - MessageID: '3e157239-b8c7-4a88-9cba-51c3a5690a15', - ReplyTo: '', - MailboxHash: '334rfgg', - Date: 'Fri, 01 Mar 2024 22:46:07 +0800', - TextBody: - 'Sdfsdf sddfds\nAppController\n\nddsfskldfjds+334rfgg@my.callgent.com\n\n\nsdf\n> From: "JamesP"\n> Date: Fri, Mar 1, 2024, 22:43\n> Subject: sfddsf\n> To: "ddsfskldfjds+334rfgg@my.callgent.com"\n> Sdfsdfsdfdsvbbf df', - HtmlBody: - '
Sdfsdf <a href="dfd">sddfds</a>
AppController



sdf
From: "JamesP"<pang.ju@roles.chat>
Date: Fri, Mar 1, 2024, 22:43
Subject: sfddsf
Sdfsdfsdfdsvbbf df
', - StrippedTextReply: - 'Sdfsdf sddfds\nAppController\n\nddsfskldfjds+334rfgg@my.callgent.com\n\n\nsdf', - Tag: '', - Headers: [ - { Name: 'Return-Path', Value: '' }, - { - Name: 'Received', - Value: - 'by p-pm-inboundg03c-aws-useast1c.inbound.postmarkapp.com (Postfix, from userid 996)\tid 9921A4052B9; Fri, 1 Mar 2024 14:46:15 +0000 (UTC)', - }, - { - Name: 'X-Spam-Checker-Version', - Value: - 'SpamAssassin 3.4.0 (2014-02-07) on\tp-pm-inboundg03c-aws-useast1c', - }, - { Name: 'X-Spam-Status', Value: 'No' }, - { Name: 'X-Spam-Score', Value: '-0.0' }, - { - Name: 'X-Spam-Tests', - Value: - 'DKIM_SIGNED,DKIM_VALID,HTML_MESSAGE,RCVD_IN_ZEN_BLOCKED_OPENDNS,\tSPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_DBL_BLOCKED_OPENDNS,\tURIBL_ZEN_BLOCKED_OPENDNS', - }, - { - Name: 'Received-SPF', - Value: - "pass (roles.chat: Sender is authorized to use 'pang.ju@roles.chat' in 'mfrom' identity (mechanism 'include:_netblocks.m.feishu.cn' matched)) receiver=p-pm-inboundg03c-aws-useast1c; identity=mailfrom; envelope-from=\"pang.ju@roles.chat\"; helo=va-1-15.ptr.blmpb.com; client-ip=209.127.230.15", - }, - { - Name: 'Received', - Value: - 'from va-1-15.ptr.blmpb.com (va-1-15.ptr.blmpb.com [209.127.230.15])\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\t(No client certificate requested)\tby p-pm-inboundg03c-aws-useast1c.inbound.postmarkapp.com (Postfix) with ESMTPS id E14E9405106\tfor ; Fri, 1 Mar 2024 14:46:14 +0000 (UTC)', - }, - { - Name: 'DKIM-Signature', - Value: - 'v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=s1; d=roles-chat.20200927.dkim.feishu.cn; t=1709304369; h=from:subject:mime-version:from:date:message-id:subject:to:cc: reply-to:content-type:mime-version:in-reply-to:message-id; bh=a15MvT8ivxkZjcqYjvMgzEbDMdmDpehIkoB9y/m4eLU=; b=AZb/VdLuQXeDShxHhCJXnu0F18wIPXMNH2qIuyBKSOiksPhaDWgHXTPGeQ7GPak5U9zr7N 7tZWyxqR7xtmdHqArxZMq6qAHKY2y3BGgZpQVN2xFALzH9oz7eT0/+1He11n2IXSVcuqBV Nu0KHxP+pX2UhuJfj78gFmOOQ/d8htBiaIqMcQJFIMWhOKh+aO3NV9xtjHlcryr8xp7ba1 CQ2TstmPJoxwgXSuKV5GJ9bTBHGcLwcXji8+kKlOvSdjghGJ269hrtbslJ1fD49ivRcvDs 4tvXTyon4bsX9bqDs6C4YF/Y1wrx5bp28dmfp84nMPDpOYFGln3icOZHMBl4Vg==', - }, - { - Name: 'In-Reply-To', - Value: - '<41158e7233075aeb6407512c20ae271901afcd14.65806463.2cb7.417b.8e55.5c47d139a2e8@feishu.cn>', - }, - { - Name: 'References', - Value: - '<41158e7233075aeb6407512c20ae271901afcd14.65806463.2cb7.417b.8e55.5c47d139a2e8@feishu.cn>', - }, - { - Name: 'Message-Id', - Value: - '<41158e7233075aeb6407512c20ae271901afcd14.8fbdff92.86c5.42e7.92e9.eef203910296@feishu.cn>', - }, - { Name: 'Mime-Version', Value: '1.0' }, - { - Name: 'X-Lms-Return-Path', - Value: '', - }, - ], - Attachments: [], - }; - return this.appService.getHello(); - } } diff --git a/src/emails/emails.controller.ts b/src/emails/emails.controller.ts index 95e6847..46c78c2 100644 --- a/src/emails/emails.controller.ts +++ b/src/emails/emails.controller.ts @@ -8,10 +8,12 @@ import { Post, } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; +import { ApiTags } from '@nestjs/swagger'; import { JwtAuthService } from '../infra/auth/jwt/jwt.service'; -import { EmailsService } from './emails.service'; import { EmailRelayObject } from './dto/sparkpost-relay-object.interface'; +import { EmailsService } from './emails.service'; +@ApiTags('Callbacks') @Controller('emails') export class EmailsController { constructor( diff --git a/src/entries/adaptors/builtin/email/email.adaptor.ts b/src/entries/adaptors/builtin/email/email.adaptor.ts index 9bd9c52..3aaa283 100644 --- a/src/entries/adaptors/builtin/email/email.adaptor.ts +++ b/src/entries/adaptors/builtin/email/email.adaptor.ts @@ -4,18 +4,19 @@ import { Inject, NotImplementedException, } from '@nestjs/common'; +import { Prisma } from '@prisma/client'; import * as httpStatus from 'http-status'; import { AgentsService } from '../../../../agents/agents.service'; -import { EndpointDto } from '../../../../endpoints/dto/endpoint.dto'; import { RelayEmail } from '../../../../emails/dto/sparkpost-relay-object.interface'; import { EmailRelayKey, EmailsService, } from '../../../../emails/emails.service'; +import { EndpointDto } from '../../../../endpoints/dto/endpoint.dto'; import { EntryDto } from '../../../dto/entry.dto'; import { Entry } from '../../../entities/entry.entity'; import { ClientRequestEvent } from '../../../events/client-request.event'; -import { EntryAdaptor, EntryConfig } from '../../entry-adaptor.base'; +import { EntryAdaptor } from '../../entry-adaptor.base'; import { EntryAdaptorName } from '../../entry-adaptor.decorator'; @EntryAdaptorName('Email', 'both') @@ -27,13 +28,17 @@ export class EmailAdaptor extends EntryAdaptor { super(agentsService); } + protected _genClientHost(data: Prisma.EntryUncheckedCreateInput) { + data.host = `invoke+${data.id}@my.callgent.com`; + } + getCallback(callback: string, reqEntry?: EntryDto): Promise { throw new NotImplementedException('Method not implemented.'); } - getConfig(): EntryConfig { - return {}; - } + // getConfig(): EntryConfig { + // return {}; + // } /** generate a web page entry */ async initClient(params: object, entry: Entry) { diff --git a/src/entries/adaptors/builtin/restapi/restapi.adaptor.ts b/src/entries/adaptors/builtin/restapi/restapi.adaptor.ts index 488cbed..1ead992 100644 --- a/src/entries/adaptors/builtin/restapi/restapi.adaptor.ts +++ b/src/entries/adaptors/builtin/restapi/restapi.adaptor.ts @@ -3,12 +3,13 @@ import { Inject, NotImplementedException, } from '@nestjs/common'; +import { Prisma } from '@prisma/client'; import axios, { AxiosResponse } from 'axios'; import { AgentsService } from '../../../../agents/agents.service'; import { EndpointDto } from '../../../../endpoints/dto/endpoint.dto'; import { EntryDto } from '../../../dto/entry.dto'; import { ClientRequestEvent } from '../../../events/client-request.event'; -import { EntryAdaptor, EntryConfig } from '../../entry-adaptor.base'; +import { EntryAdaptor } from '../../entry-adaptor.base'; import { EntryAdaptorName } from '../../entry-adaptor.decorator'; @EntryAdaptorName('restAPI', 'both') @@ -17,91 +18,96 @@ export class RestAPIAdaptor extends EntryAdaptor { super(agentsService); } - getConfig(): EntryConfig { - return { - server: { - host: { - address: { - type: 'url', - name: 'API root URL', - }, - authConfig: [ - { - name: 'tokenName', - label: 'Token Name', - type: 'text', - }, - { - name: 'tokenPosition', - label: 'Where is the Token', - type: 'select', - value: ['header', 'cookie', 'body', 'query'], - }, - { - name: 'credentialsType', - label: 'Credentials Type', - placeholder: - 'Method to exchange token from credentials: token = exchange(credentials, args)', - type: 'select', - value: { - constant: [ - { name: 'apiKey', label: 'API Key', type: 'password' }, - ], - oauth: [], - function: [], - }, - }, - ], - }, - addParams: true, - params: [ - { - type: 'readonly', - name: 'Note', - position: 'top', - value: - '> This is for simple web page operations. For complex pages such as SPA, you may need other tools, e.g. RPAs, [SeeAct](https://github.com/OSU-NLP-Group/SeeAct), etc.', - }, - { - type: 'readonly', - name: 'Download Chrome Plugin', - position: 'bottom', - value: - 'Before continue, please confirm this automation does NOT violate any ToS or regulations of the target website! \nYour need to install the [Callgent Web Page](https://chrome.google.com/webstore/detail/callgent-web-page/pefjgjgjgjgjgjgjgjgjgjgjgjgjgjgj) Chrome plugin, as the operation client. \n> Note: You need to keep the Chrome open to perform tasks.', - }, - ], - }, - client: { - host: { - address: { - type: 'domain', - name: 'Custom Domain', - value: 'page.callgent.com', - placeholder: 'Not applicable in Free plan.', - }, - }, - params: [ - { - type: 'url', - name: 'Callback URL', - optional: true, - placeholder: - 'Callback URL to receive response with request ID. TODO: api spec', - }, - { type: 'radio', name: 'Page Type', value: ['WEB', 'React', 'Vue'] }, - ], - addParams: true, - initParams: [ - { - name: 'Page Generation Prompt', - type: 'textarea', - placeholder: 'Prompt or content to generate the Web Page.', - }, - ], - }, - }; + protected _genClientHost(data: Prisma.EntryUncheckedCreateInput) { + // unstructured request url + data.host = `/api/rest/request/${data.callgentId}/${data.id}`; } + // getConfig(): EntryConfig { + // return { + // server: { + // host: { + // address: { + // type: 'url', + // name: 'API root URL', + // }, + // authConfig: [ + // { + // name: 'tokenName', + // label: 'Token Name', + // type: 'text', + // }, + // { + // name: 'tokenPosition', + // label: 'Where is the Token', + // type: 'select', + // value: ['header', 'cookie', 'body', 'query'], + // }, + // { + // name: 'credentialsType', + // label: 'Credentials Type', + // placeholder: + // 'Method to exchange token from credentials: token = exchange(credentials, args)', + // type: 'select', + // value: { + // constant: [ + // { name: 'apiKey', label: 'API Key', type: 'password' }, + // ], + // oauth: [], + // function: [], + // }, + // }, + // ], + // }, + // addParams: true, + // params: [ + // { + // type: 'readonly', + // name: 'Note', + // position: 'top', + // value: + // '> This is for simple web page operations. For complex pages such as SPA, you may need other tools, e.g. RPAs, [SeeAct](https://github.com/OSU-NLP-Group/SeeAct), etc.', + // }, + // { + // type: 'readonly', + // name: 'Download Chrome Plugin', + // position: 'bottom', + // value: + // 'Before continue, please confirm this automation does NOT violate any ToS or regulations of the target website! \nYour need to install the [Callgent Web Page](https://chrome.google.com/webstore/detail/callgent-web-page/pefjgjgjgjgjgjgjgjgjgjgjgjgjgjgj) Chrome plugin, as the operation client. \n> Note: You need to keep the Chrome open to perform tasks.', + // }, + // ], + // }, + // client: { + // host: { + // address: { + // type: 'domain', + // name: 'Custom Domain', + // value: 'page.callgent.com', + // placeholder: 'Not applicable in Free plan.', + // }, + // }, + // params: [ + // { + // type: 'url', + // name: 'Callback URL', + // optional: true, + // placeholder: + // 'Callback URL to receive response with request ID. TODO: api spec', + // }, + // { type: 'radio', name: 'Page Type', value: ['WEB', 'React', 'Vue'] }, + // ], + // addParams: true, + // initParams: [ + // { + // name: 'Page Generation Prompt', + // type: 'textarea', + // placeholder: 'Prompt or content to generate the Web Page.', + // }, + // ], + // }, + // }; + // } + /** generate a web page entry */ initClient(params: object, entry: EntryDto): Promise { throw new NotImplementedException('Method not implemented.'); diff --git a/src/entries/adaptors/builtin/restapi/restapi.controller.ts b/src/entries/adaptors/builtin/restapi/restapi.controller.ts index 6bd6ee7..233e9c6 100644 --- a/src/entries/adaptors/builtin/restapi/restapi.controller.ts +++ b/src/entries/adaptors/builtin/restapi/restapi.controller.ts @@ -64,6 +64,8 @@ export class RestApiController { // TODO } + @All('invoke/:callgentId/:entryId/*') + @ApiOperation({ summary: 'To invoke the specific functional endpoint.' }) @ApiParam({ name: 'callgentId', required: true, @@ -89,8 +91,6 @@ export class RestApiController { }) @ApiHeader({ name: 'x-callgent-callback', required: false }) @ApiHeader({ name: 'x-callgent-timeout', required: false }) - @All('invoke/:callgentId/:entryId/*') - @ApiOperation({ summary: 'To invoke the specific functional endpoint.' }) @ApiUnauthorizedResponse() async invoke( @Req() req, diff --git a/src/entries/adaptors/builtin/web/webpage.adaptor.ts b/src/entries/adaptors/builtin/web/webpage.adaptor.ts index c5e89f9..2072ba9 100644 --- a/src/entries/adaptors/builtin/web/webpage.adaptor.ts +++ b/src/entries/adaptors/builtin/web/webpage.adaptor.ts @@ -1,10 +1,11 @@ import { Inject, NotImplementedException } from '@nestjs/common'; +import { Prisma } from '@prisma/client'; import { AgentsService } from '../../../../agents/agents.service'; import { EndpointDto } from '../../../../endpoints/dto/endpoint.dto'; import { EntryDto } from '../../../dto/entry.dto'; import { Entry } from '../../../entities/entry.entity'; import { ClientRequestEvent } from '../../../events/client-request.event'; -import { EntryAdaptor, EntryConfig } from '../../entry-adaptor.base'; +import { EntryAdaptor } from '../../entry-adaptor.base'; import { EntryAdaptorName } from '../../entry-adaptor.decorator'; @EntryAdaptorName('Webpage', 'client') @@ -13,6 +14,10 @@ export class WebpageAdaptor extends EntryAdaptor { super(agentsService); } + protected _genClientHost(data: Prisma.EntryUncheckedCreateInput) { + data.host = `/api/webpage/request/${data.callgentId}/${data.id}`; + } + async preprocess(reqEvent: ClientRequestEvent, entry: EntryDto) { // } @@ -38,51 +43,51 @@ export class WebpageAdaptor extends EntryAdaptor { throw new NotImplementedException('Method not implemented.'); } - getConfig(): EntryConfig { - return { - host: { address: { type: 'url', name: 'Page URL' } }, - server: { - addParams: true, - params: [ - { - type: 'readonly', - name: 'Note', - position: 'top', - value: - '> This is for simple web page operations. For complex pages such as SPA, you may need other tools, e.g. RPAs, [SeeAct](https://github.com/OSU-NLP-Group/SeeAct), etc.', - }, - { - type: 'readonly', - name: 'Download Chrome Plugin', - position: 'bottom', - value: - 'Before continue, please confirm this automation does NOT violate any ToS or regulations of the target website! \nYour need to install the [Callgent Web Page](https://chrome.google.com/webstore/detail/callgent-web-page/pefjgjgjgjgjgjgjgjgjgjgjgjgjgjgj) Chrome plugin, as the operation client. \n> Note: You need to keep the Chrome open to perform tasks.', - }, - ], - }, - client: { - host: { - address: { - type: 'domain', - name: 'Custom Domain', - value: 'page.callgent.com', - placeholder: 'Not applicable in Free plan.', - }, - }, - params: [ - { type: 'radio', name: 'Page Type', value: ['WEB', 'React', 'Vue'] }, - ], - addParams: true, - initParams: [ - { - name: 'Page Generation Prompt', - type: 'textarea', - placeholder: 'Prompt or content to generate the Web Page.', - }, - ], - }, - }; - } + // getConfig(): EntryConfig { + // return { + // host: { address: { type: 'url', name: 'Page URL' } }, + // server: { + // addParams: true, + // params: [ + // { + // type: 'readonly', + // name: 'Note', + // position: 'top', + // value: + // '> This is for simple web page operations. For complex pages such as SPA, you may need other tools, e.g. RPAs, [SeeAct](https://github.com/OSU-NLP-Group/SeeAct), etc.', + // }, + // { + // type: 'readonly', + // name: 'Download Chrome Plugin', + // position: 'bottom', + // value: + // 'Before continue, please confirm this automation does NOT violate any ToS or regulations of the target website! \nYour need to install the [Callgent Web Page](https://chrome.google.com/webstore/detail/callgent-web-page/pefjgjgjgjgjgjgjgjgjgjgjgjgjgjgj) Chrome plugin, as the operation client. \n> Note: You need to keep the Chrome open to perform tasks.', + // }, + // ], + // }, + // client: { + // host: { + // address: { + // type: 'domain', + // name: 'Custom Domain', + // value: 'page.callgent.com', + // placeholder: 'Not applicable in Free plan.', + // }, + // }, + // params: [ + // { type: 'radio', name: 'Page Type', value: ['WEB', 'React', 'Vue'] }, + // ], + // addParams: true, + // initParams: [ + // { + // name: 'Page Generation Prompt', + // type: 'textarea', + // placeholder: 'Prompt or content to generate the Web Page.', + // }, + // ], + // }, + // }; + // } /** generate a web page entry */ initClient(params: object, entry: EntryDto): Promise { diff --git a/src/entries/adaptors/builtin/web/webpage.controller.ts b/src/entries/adaptors/builtin/web/webpage.controller.ts index 5d7da64..a4c965e 100644 --- a/src/entries/adaptors/builtin/web/webpage.controller.ts +++ b/src/entries/adaptors/builtin/web/webpage.controller.ts @@ -1,5 +1,4 @@ import { - All, Body, Controller, Get, @@ -7,7 +6,6 @@ import { Inject, NotFoundException, Param, - Post, Query, Req, Res, @@ -130,7 +128,7 @@ export class WebpageController { }) @ApiHeader({ name: 'x-callgent-callback', required: false }) @ApiHeader({ name: 'x-callgent-timeout', required: false }) - @All('invoke/:callgentId/:entryId/*') + @Get('invoke/:callgentId/:entryId/*') @ApiUnauthorizedResponse() async invoke( @Req() req, @@ -191,80 +189,4 @@ export class WebpageController { throw new NotFoundException('callgent not found: ' + callgentId); return { entry, callgent }; } - - @ApiOperation({ - description: - 'Inquiry the result of an invocation request. TODO: Socket Mode', - }) - @Get('/result/:requestId') - async invokeResult(@Param('requestId') reqId: string) { - // FIXME - return null; - } - - /** - * 1. push(task): { - * 2. mapping, - * 3. progressive param, ? manual/ai? - * 4. auth, invoke,-> } - * 5. reply -> confirm task - */ - // @Post('reply/:authToken') - // async postReply(@Param('authToken') authToken: string, @Body() body: object) { - // // verify the authToken - // const caller: JwtPayload = await this.verifyAppToken(authToken); - // if (!caller) throw new UnauthorizedException(); - - // // return this.called(authToken, body); - // } - - /** - * - * 1. called: { - * 2. verify - * 3. convert -> - * 4. create} - * 5. respond to caller -> - */ - // async called(authToken: string, callerType: string, body: object) { - // // verify the authToken - // const caller: JwtPayload = await this.verifyAppToken(authToken); - // if (!caller) throw new UnauthorizedException(); - - // const dto = await this.convertToTask(callerType, body, caller); - // if (!dto?.callgent) - // throw new BadRequestException('callgent id is missing'); - - // const [task] = await this.tasksService.create(dto); - - // // TODO instant syncResult to respond - // return task; - // } - - // /** jwt with aud == 'authToken' */ - // async verifyAppToken(authToken: string) { - // const payload: JwtPayload = await this.authTokensService.verify( - // authToken, - // 'API_KEY', - // ); - // return payload; - // } - - /** implementation for postmarkapp.com */ - // async convertToTask( - // callerType: string, - // body: object, - // caller: JwtPayload, - // ): Promise { - // const plugin: CallerPlugin = this.pluginsService.getPlugin(callerType); - // if (!plugin?.convertToTask) - // throw new BadRequestException( - // `plugin callerType=${callerType} not found`, - // ); - - // const task: TaskDto = await plugin.convertToTask(callerType, body, caller); - // if (!task) return; - - // return { ...task, callerType, createdBy: caller.sub }; - // } } diff --git a/src/entries/adaptors/entry-adaptor.base.ts b/src/entries/adaptors/entry-adaptor.base.ts index f53fa1b..185f0dc 100644 --- a/src/entries/adaptors/entry-adaptor.base.ts +++ b/src/entries/adaptors/entry-adaptor.base.ts @@ -1,6 +1,5 @@ import $RefParser from '@apidevtools/json-schema-ref-parser'; import { BadRequestException, NotFoundException } from '@nestjs/common'; -import { ApiProperty } from '@nestjs/swagger'; import { SecurityRequirementObject, SecuritySchemeObject, @@ -19,6 +18,17 @@ export abstract class EntryAdaptor { this.agentsService = agentsService; } + preCreate(data: Prisma.EntryUncheckedCreateInput) { + if (data.type == 'CLIENT') this._genClientHost(data); + else if (!data.host) throw new BadRequestException('host is required'); + // init entry name + data.name || (data.name = data.host); + } + + /** client host is auto generated by adaptor */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + protected _genClientHost(entry: Prisma.EntryUncheckedCreateInput) {} + /** preprocess request, replace raw request */ abstract preprocess( reqEvent: ClientRequestEvent, @@ -32,7 +42,7 @@ export abstract class EntryAdaptor { ): Promise; /** Entry config. */ - abstract getConfig(): EntryConfig; + // abstract getConfig(): EntryConfig; /** init the entry. result in generated content */ abstract initClient(initParams: object, entry: EntryDto): Promise; @@ -169,98 +179,98 @@ export class ApiSpec { securities?: SecurityRequirementObject[]; } -export class EntryParam { - @ApiProperty({ - description: - 'param type. `readonly` shows some instructions in markdown format', - }) - type: - | 'text' - | 'textarea' - | 'integer' - | 'float' - | 'boolean' - | 'date' - | 'time' - | 'datetime' - | 'password' - | 'email' - | 'tel' - | 'url' - | 'domain' - | 'cron' - | 'regex' - | 'file' - | 'image' - | 'radio' - | 'select' - | 'checkbox' - | 'multiselect' - | 'range' - | 'slider' - | 'color' - | 'yaml' - | 'json' - | 'markdown' - | 'file' - | 'image' - | 'script' - | 'readonly'; - @ApiProperty({ description: 'Param name' }) - name: string; - @ApiProperty({ description: 'Default to param name' }) - label?: string; - @ApiProperty() - placeholder?: string; - @ApiProperty() - optional?: boolean; - @ApiProperty({ description: 'Default value, or select options' }) - value?: any | { [key: string]: EntryParam[] }; - @ApiProperty() - constraint?: string; - @ApiProperty() - position?: number | 'bottom' | 'top'; - // @ApiProperty() - // hidden?: boolean | (form: object) => boolean; -} +// export class EntryParam { +// @ApiProperty({ +// description: +// 'param type. `readonly` shows some instructions in markdown format', +// }) +// type: +// | 'text' +// | 'textarea' +// | 'integer' +// | 'float' +// | 'boolean' +// | 'date' +// | 'time' +// | 'datetime' +// | 'password' +// | 'email' +// | 'tel' +// | 'url' +// | 'domain' +// | 'cron' +// | 'regex' +// | 'file' +// | 'image' +// | 'radio' +// | 'select' +// | 'checkbox' +// | 'multiselect' +// | 'range' +// | 'slider' +// | 'color' +// | 'yaml' +// | 'json' +// | 'markdown' +// | 'file' +// | 'image' +// | 'script' +// | 'readonly'; +// @ApiProperty({ description: 'Param name' }) +// name: string; +// @ApiProperty({ description: 'Default to param name' }) +// label?: string; +// @ApiProperty() +// placeholder?: string; +// @ApiProperty() +// optional?: boolean; +// @ApiProperty({ description: 'Default value, or select options' }) +// value?: any | { [key: string]: EntryParam[] }; +// @ApiProperty() +// constraint?: string; +// @ApiProperty() +// position?: number | 'bottom' | 'top'; +// // @ApiProperty() +// // hidden?: boolean | (form: object) => boolean; +// } -class EntryHost { - @ApiProperty({ - description: 'host address', - example: 'task+sdfhjw4349fe@my.callgent.com', - }) - address: EntryParam; +// class EntryHost { +// @ApiProperty({ +// description: 'host address', +// example: 'task+sdfhjw4349fe@my.callgent.com', +// }) +// address: EntryParam; - @ApiProperty({ - description: 'default auth type', - enum: ['NONE', 'APP', 'USER'], - }) - authType?: 'NONE' | 'APP' | 'USER'; +// @ApiProperty({ +// description: 'default auth type', +// enum: ['NONE', 'APP', 'USER'], +// }) +// authType?: 'NONE' | 'APP' | 'USER'; - @ApiProperty({ description: 'Authentication Configuration' }) - authConfig?: EntryParam[]; -} +// @ApiProperty({ description: 'Authentication Configuration' }) +// authConfig?: EntryParam[]; +// } -class Entry { - @ApiProperty({ - description: 'Optional entry host config', - }) - host?: EntryHost; - @ApiProperty({ description: 'Entry requesting params template' }) - params?: EntryParam[]; - @ApiProperty({ description: 'Whether allow additional params' }) - addParams?: boolean; - @ApiProperty({ description: 'Entry initialization params template' }) - initParams?: EntryParam[]; -} +// class Entry { +// @ApiProperty({ +// description: 'Optional entry host config', +// }) +// host?: EntryHost; +// @ApiProperty({ description: 'Entry requesting params template' }) +// params?: EntryParam[]; +// @ApiProperty({ description: 'Whether allow additional params' }) +// addParams?: boolean; +// @ApiProperty({ description: 'Entry initialization params template' }) +// initParams?: EntryParam[]; +// } -export class EntryConfig { - @ApiProperty({ description: 'Entry host' }) - host?: EntryHost; +// export class EntryConfig { +// @ApiProperty({ description: 'Entry host' }) +// host?: EntryHost; - @ApiProperty({ description: 'The task client entry' }) - client?: Entry; +// @ApiProperty({ description: 'The task client entry' }) +// client?: Entry; - @ApiProperty({ description: 'The task server entry' }) - server?: Entry; -} +// @ApiProperty({ description: 'The task server entry' }) +// server?: Entry; +// } diff --git a/src/entries/entries.service.ts b/src/entries/entries.service.ts index c1efe9b..89b23f4 100644 --- a/src/entries/entries.service.ts +++ b/src/entries/entries.service.ts @@ -16,7 +16,7 @@ import { ModuleRef, ModulesContainer } from '@nestjs/core'; import { EntryType, Prisma, PrismaClient } from '@prisma/client'; import { RealmSecurityVO } from '../callgent-realms/dto/realm-security.vo'; import { EndpointDto } from '../endpoints/dto/endpoint.dto'; -import { Utils } from '../infra/libs/utils'; +import { Optional, Requires, Utils } from '../infra/libs/utils'; import { selectHelper } from '../infra/repo/select.helper'; import { PrismaTenancyService } from '../infra/repo/tenancy/prisma-tenancy.service'; import { EntryAdaptor } from './adaptors/entry-adaptor.base'; @@ -169,27 +169,27 @@ export class EntriesService implements OnModuleInit { @Transactional() async create( - dto: Omit, + dto: Optional, select?: Prisma.EntrySelect, ) { const prisma = this.txHost.tx as PrismaClient; - const service = this.getAdaptor(dto.adaptorKey, dto.type); - if (!service) + const adaptor = this.getAdaptor(dto.adaptorKey, dto.type); + if (!adaptor) throw new BadRequestException( 'Invalid entry adaptor key=' + dto.adaptorKey, ); - const id = Utils.uuid(); - // init ep name - dto.host = dto.host.replace('{id}', id); - dto.name || (dto.name = dto.host); + dto.id = Utils.uuid(); + const data = dto as Prisma.EntryUncheckedCreateInput; + + adaptor.preCreate(data); return selectHelper( select, (select) => prisma.entry.create({ select, - data: { ...dto, id }, + data, }), this.defSelect, ); diff --git a/src/infra/libs/utils.ts b/src/infra/libs/utils.ts index 74a276d..f129151 100644 --- a/src/infra/libs/utils.ts +++ b/src/infra/libs/utils.ts @@ -81,3 +81,4 @@ export class Utils { /** to make some props optional, e.g. Optional */ export type Optional = Omit & Partial>; +export type Requires = T & Required>; From 553e188ac8e59eb34d6502fffabd9c232ba541e2 Mon Sep 17 00:00:00 2001 From: dev-callgent Date: Sun, 13 Oct 2024 22:36:00 +0800 Subject: [PATCH 4/5] chore(deps): update multiple versions Signed-off-by: dev-callgent --- package.json | 98 +- pnpm-lock.yaml | 2440 +++++++++++++++++++----------------------------- 2 files changed, 1031 insertions(+), 1507 deletions(-) diff --git a/package.json b/package.json index 2484fec..2a48b03 100644 --- a/package.json +++ b/package.json @@ -31,93 +31,91 @@ "release": "standard-version" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "^11.5.4", - "@fastify/compress": "^7.0.0", - "@fastify/cookie": "^9.3.1", + "@apidevtools/json-schema-ref-parser": "^11.7.2", + "@fastify/compress": "^7.0.3", + "@fastify/cookie": "^9.4.0", "@fastify/cors": "^9.0.1", "@fastify/helmet": "^11.1.1", "@fastify/multipart": "8.3.0", - "@fastify/static": "^6.12.0", - "@nestjs-cls/transactional": "^2.2.0", + "@fastify/static": "^7.0.4", + "@nestjs-cls/transactional": "^2.4.2", "@nestjs-cls/transactional-adapter-prisma": "^1.2.4", - "@nestjs/cache-manager": "^2.2.0", - "@nestjs/common": "^10.0.0", - "@nestjs/config": "^3.1.1", - "@nestjs/core": "^10.0.0", - "@nestjs/event-emitter": "^2.0.3", + "@nestjs/cache-manager": "^2.2.2", + "@nestjs/common": "^10.4.4", + "@nestjs/config": "^3.2.3", + "@nestjs/core": "^10.4.4", + "@nestjs/event-emitter": "^2.0.4", "@nestjs/jwt": "^10.2.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-fastify": "^10.3.4", - "@nestjs/swagger": "^7.3.0", + "@nestjs/swagger": "^7.4.2", "@nodeteam/nestjs-prisma-pagination": "^1.0.6", - "@prisma/client": "5.18.0", - "axios": "^1.7.5", + "@prisma/client": "5.20.0", + "axios": "^1.7.7", "bcrypt": "^5.1.1", "braces": "^3.0.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "dot": "^1.1.3", "fastify": "4.26.2", - "fastify-ip": "^1.0.0", - "glob": "^10.3.10", + "fastify-ip": "^1.1.0", + "glob": "^10.4.5", "http-status": "^1.7.4", - "jsonrepair": "^3.7.0", + "jsonrepair": "^3.8.1", "module": "^1.2.5", "ms": "^2.1.3", "nanoid": "3.3.7", - "nestjs-cls": "^4.2.0", + "nestjs-cls": "^4.4.1", "nestjs-oauth2": "^0.0.7", - "nestjs-pino": "^4.0.0", + "nestjs-pino": "^4.1.0", "nestjs-prisma": "^0.23.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", - "pino": "^8.18.0", - "pino-http": "^9.0.0", - "pino-pretty": "^10.3.1", + "pino": "^9.4.0", + "pino-http": "^10.3.0", + "pino-pretty": "^11.2.2", "prisma-soft-delete-middleware": "^1.3.1", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", - "v8-sandbox": "^3.2.10", - "yaml": "^2.5.0" + "yaml": "^2.6.0" }, "devDependencies": { - "@chax-at/transactional-prisma-testing": "^1.1.0", - "@commitlint/cli": "^19.2.0", - "@commitlint/config-angular": "^19.1.0", - "@nestjs/cli": "^10.0.0", - "@nestjs/schematics": "^10.0.0", - "@nestjs/testing": "^10.0.0", + "@chax-at/transactional-prisma-testing": "^1.2.0", + "@commitlint/cli": "^19.5.0", + "@commitlint/config-angular": "^19.5.0", + "@nestjs/cli": "^10.4.5", + "@nestjs/schematics": "^10.1.4", + "@nestjs/testing": "^10.4.4", "@pond918/prisma-generator-nestjs-dto": "^1.17.513", "@types/bcrypt": "^5.0.2", "@types/dot": "^1.1.7", - "@types/express": "^4.17.17", - "@types/jest": "^29.5.2", + "@types/jest": "^29.5.13", "@types/ms": "^0.7.34", - "@types/node": "^20.3.1", + "@types/node": "^22.7.5", "@types/passport-jwt": "^4.0.1", "@types/passport-local": "^1.0.38", - "@types/supertest": "^6.0.0", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "commitizen": "^4.3.0", + "@types/supertest": "^6.0.2", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", + "commitizen": "^4.3.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.42.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.0", - "husky": "^9.0.11", - "jest": "^29.5.0", - "pactum": "^3.6.3", - "pactum-matchers": "^1.1.6", - "prettier": "^3.0.0", - "prisma": "^5.18.0", + "eslint": "^9.12.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "husky": "^9.1.6", + "jest": "^29.7.0", + "pactum": "^3.7.1", + "pactum-matchers": "^1.1.7", + "prettier": "^3.3.3", + "prisma": "^5.20.0", "source-map-support": "^0.5.21", "standard-version": "^9.5.0", "supertest": "^6.3.3", - "ts-jest": "^29.1.0", - "ts-loader": "^9.4.3", - "ts-node": "^10.9.1", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.1", + "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.6.3" }, "jest": { "moduleFileExtensions": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 734f12e..785de06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,14 +2,14 @@ lockfileVersion: '6.0' dependencies: '@apidevtools/json-schema-ref-parser': - specifier: ^11.5.4 - version: 11.5.4 + specifier: ^11.7.2 + version: 11.7.2 '@fastify/compress': - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^7.0.3 + version: 7.0.3 '@fastify/cookie': - specifier: ^9.3.1 - version: 9.3.1 + specifier: ^9.4.0 + version: 9.4.0 '@fastify/cors': specifier: ^9.0.1 version: 9.0.1 @@ -20,50 +20,50 @@ dependencies: specifier: 8.3.0 version: 8.3.0 '@fastify/static': - specifier: ^6.12.0 - version: 6.12.0 + specifier: ^7.0.4 + version: 7.0.4 '@nestjs-cls/transactional': - specifier: ^2.2.0 - version: 2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(nestjs-cls@4.2.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^2.4.2 + version: 2.4.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(nestjs-cls@4.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs-cls/transactional-adapter-prisma': specifier: ^1.2.4 - version: 1.2.4(@nestjs-cls/transactional@2.2.0)(@prisma/client@5.18.0)(nestjs-cls@4.2.0)(prisma@5.18.0) + version: 1.2.4(@nestjs-cls/transactional@2.4.2)(@prisma/client@5.20.0)(nestjs-cls@4.4.1)(prisma@5.20.0) '@nestjs/cache-manager': - specifier: ^2.2.0 - version: 2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(cache-manager@5.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^2.2.2 + version: 2.2.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(cache-manager@5.4.0)(rxjs@7.8.1) '@nestjs/common': - specifier: ^10.0.0 - version: 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^10.4.4 + version: 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/config': - specifier: ^3.1.1 - version: 3.1.1(@nestjs/common@10.0.0)(reflect-metadata@0.1.13) + specifier: ^3.2.3 + version: 3.2.3(@nestjs/common@10.4.4)(rxjs@7.8.1) '@nestjs/core': - specifier: ^10.0.0 - version: 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^10.4.4 + version: 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/event-emitter': - specifier: ^2.0.3 - version: 2.0.3(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13) + specifier: ^2.0.4 + version: 2.0.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4) '@nestjs/jwt': specifier: ^10.2.0 - version: 10.2.0(@nestjs/common@10.0.0) + version: 10.2.0(@nestjs/common@10.4.4) '@nestjs/passport': specifier: ^10.0.3 - version: 10.0.3(@nestjs/common@10.0.0)(passport@0.7.0) + version: 10.0.3(@nestjs/common@10.4.4)(passport@0.7.0) '@nestjs/platform-fastify': specifier: ^10.3.4 - version: 10.3.4(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0) + version: 10.3.4(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4) '@nestjs/swagger': - specifier: ^7.3.0 - version: 7.3.0(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13) + specifier: ^7.4.2 + version: 7.4.2(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) '@nodeteam/nestjs-prisma-pagination': specifier: ^1.0.6 - version: 1.0.6(@babel/core@7.23.9)(@nestjs/core@10.0.0)(@types/node@20.3.1)(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1)(ts-node@10.9.1) + version: 1.0.6(@babel/core@7.23.9)(@nestjs/core@10.4.4)(@types/node@22.7.5)(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)(ts-node@10.9.2) '@prisma/client': - specifier: 5.18.0 - version: 5.18.0(prisma@5.18.0) + specifier: 5.20.0 + version: 5.20.0(prisma@5.20.0) axios: - specifier: ^1.7.5 - version: 1.7.5(debug@2.6.9) + specifier: ^1.7.7 + version: 1.7.7(debug@2.6.9) bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -83,17 +83,17 @@ dependencies: specifier: 4.26.2 version: 4.26.2 fastify-ip: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.1.0 + version: 1.1.0 glob: - specifier: ^10.3.10 - version: 10.3.10 + specifier: ^10.4.5 + version: 10.4.5 http-status: specifier: ^1.7.4 version: 1.7.4 jsonrepair: - specifier: ^3.7.0 - version: 3.7.0 + specifier: ^3.8.1 + version: 3.8.1 module: specifier: ^1.2.5 version: 1.2.5 @@ -104,17 +104,17 @@ dependencies: specifier: 3.3.7 version: 3.3.7 nestjs-cls: - specifier: ^4.2.0 - version: 4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^4.4.1 + version: 4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) nestjs-oauth2: specifier: ^0.0.7 - version: 0.0.7(@nestjs/common@10.0.0)(rxjs@7.8.1) + version: 0.0.7(@nestjs/common@10.4.4)(rxjs@7.8.1) nestjs-pino: - specifier: ^4.0.0 - version: 4.0.0(@nestjs/common@10.0.0)(pino-http@9.0.0) + specifier: ^4.1.0 + version: 4.1.0(@nestjs/common@10.4.4)(pino-http@10.3.0) nestjs-prisma: specifier: ^0.23.0 - version: 0.23.0(@nestjs/common@10.0.0)(@prisma/client@5.18.0)(prisma@5.18.0) + version: 0.23.0(@nestjs/common@10.4.4)(@prisma/client@5.20.0)(prisma@5.20.0) passport-jwt: specifier: ^4.0.1 version: 4.0.1 @@ -122,49 +122,46 @@ dependencies: specifier: ^1.0.0 version: 1.0.0 pino: - specifier: ^8.18.0 - version: 8.18.0 + specifier: ^9.4.0 + version: 9.4.0 pino-http: - specifier: ^9.0.0 - version: 9.0.0 + specifier: ^10.3.0 + version: 10.3.0 pino-pretty: - specifier: ^10.3.1 - version: 10.3.1 + specifier: ^11.2.2 + version: 11.2.2 prisma-soft-delete-middleware: specifier: ^1.3.1 - version: 1.3.1(@prisma/client@5.18.0) + version: 1.3.1(@prisma/client@5.20.0) reflect-metadata: - specifier: ^0.1.13 - version: 0.1.13 + specifier: ^0.2.2 + version: 0.2.2 rxjs: specifier: ^7.8.1 version: 7.8.1 - v8-sandbox: - specifier: ^3.2.10 - version: 3.2.10(debug@2.6.9) yaml: - specifier: ^2.5.0 - version: 2.5.0 + specifier: ^2.6.0 + version: 2.6.0 devDependencies: '@chax-at/transactional-prisma-testing': - specifier: ^1.1.0 - version: 1.1.0(@prisma/client@5.18.0) + specifier: ^1.2.0 + version: 1.2.0(@prisma/client@5.20.0) '@commitlint/cli': - specifier: ^19.2.0 - version: 19.2.0(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^19.5.0 + version: 19.5.0(@types/node@22.7.5)(typescript@5.6.3) '@commitlint/config-angular': - specifier: ^19.1.0 - version: 19.1.0 + specifier: ^19.5.0 + version: 19.5.0 '@nestjs/cli': - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^10.4.5 + version: 10.4.5 '@nestjs/schematics': - specifier: ^10.0.0 - version: 10.0.0(chokidar@3.5.3)(typescript@5.1.3) + specifier: ^10.1.4 + version: 10.1.4(chokidar@3.6.0)(typescript@5.3.3) '@nestjs/testing': - specifier: ^10.0.0 - version: 10.0.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0) + specifier: ^10.4.4 + version: 10.4.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4) '@pond918/prisma-generator-nestjs-dto': specifier: ^1.17.513 version: 1.17.513 @@ -174,18 +171,15 @@ devDependencies: '@types/dot': specifier: ^1.1.7 version: 1.1.7 - '@types/express': - specifier: ^4.17.17 - version: 4.17.17 '@types/jest': - specifier: ^29.5.2 - version: 29.5.2 + specifier: ^29.5.13 + version: 29.5.13 '@types/ms': specifier: ^0.7.34 version: 0.7.34 '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^22.7.5 + version: 22.7.5 '@types/passport-jwt': specifier: ^4.0.1 version: 4.0.1 @@ -193,47 +187,47 @@ devDependencies: specifier: ^1.0.38 version: 1.0.38 '@types/supertest': - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^6.0.2 + version: 6.0.2 '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.42.0)(typescript@5.1.3) + specifier: ^8.8.1 + version: 8.8.1(@typescript-eslint/parser@8.8.1)(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.0.0(eslint@8.42.0)(typescript@5.1.3) + specifier: ^8.8.1 + version: 8.8.1(eslint@9.12.0)(typescript@5.6.3) commitizen: - specifier: ^4.3.0 - version: 4.3.0(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^4.3.1 + version: 4.3.1(@types/node@22.7.5)(typescript@5.6.3) cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@20.3.1)(typescript@5.1.3) + version: 3.3.0(@types/node@22.7.5)(typescript@5.6.3) eslint: - specifier: ^8.42.0 - version: 8.42.0 + specifier: ^9.12.0 + version: 9.12.0 eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.42.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@9.12.0) eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.42.0)(prettier@3.0.0) + specifier: ^5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3) husky: - specifier: ^9.0.11 - version: 9.0.11 + specifier: ^9.1.6 + version: 9.1.6 jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) pactum: - specifier: ^3.6.3 - version: 3.6.3 + specifier: ^3.7.1 + version: 3.7.1 pactum-matchers: - specifier: ^1.1.6 - version: 1.1.6 + specifier: ^1.1.7 + version: 1.1.7 prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.3.3 + version: 3.3.3 prisma: - specifier: ^5.18.0 - version: 5.18.0 + specifier: ^5.20.0 + version: 5.20.0 source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -244,20 +238,20 @@ devDependencies: specifier: ^6.3.3 version: 6.3.3 ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.1.3) + specifier: ^29.2.5 + version: 29.2.5(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.6.3) ts-loader: - specifier: ^9.4.3 - version: 9.4.3(typescript@5.1.3)(webpack@5.90.1) + specifier: ^9.5.1 + version: 9.5.1(typescript@5.6.3)(webpack@5.94.0) ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.7.5)(typescript@5.6.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.6.3 + version: 5.6.3 packages: @@ -290,9 +284,9 @@ packages: source-map: 0.7.3 dev: false - /@angular-devkit/core@16.1.0(chokidar@3.5.3): - resolution: {integrity: sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/core@17.3.8(chokidar@3.6.0): + resolution: {integrity: sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 peerDependenciesMeta: @@ -301,21 +295,22 @@ packages: dependencies: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) - chokidar: 3.5.3 - jsonc-parser: 3.2.0 + chokidar: 3.6.0 + jsonc-parser: 3.2.1 + picomatch: 4.0.1 rxjs: 7.8.1 source-map: 0.7.4 dev: true - /@angular-devkit/schematics-cli@16.1.0(chokidar@3.5.3): - resolution: {integrity: sha512-siBpRDmMMV7NB+NvaDHeJ4doHoSkFwIywwFj8GXnBCtobyxrBl1EyG1cKK+FHRydYtyYIk8FEoOpJA9oE9S2hg==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/schematics-cli@17.3.8(chokidar@3.6.0): + resolution: {integrity: sha512-TjmiwWJarX7oqvNiRAroQ5/LeKUatxBOCNEuKXO/PV8e7pn/Hr/BqfFm+UcYrQoFdZplmtNAfqmbqgVziKvCpA==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics': 16.1.0(chokidar@3.5.3) + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) ansi-colors: 4.1.3 - inquirer: 8.2.4 + inquirer: 9.2.15 symbol-observable: 4.0.0 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -335,21 +330,21 @@ packages: - chokidar dev: false - /@angular-devkit/schematics@16.1.0(chokidar@3.5.3): - resolution: {integrity: sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/schematics@17.3.8(chokidar@3.6.0): + resolution: {integrity: sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - jsonc-parser: 3.2.0 - magic-string: 0.30.0 + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + jsonc-parser: 3.2.1 + magic-string: 0.30.8 ora: 5.4.1 rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@apidevtools/json-schema-ref-parser@11.5.4: - resolution: {integrity: sha512-o2fsypTGU0WxRxbax8zQoHiIB4dyrkwYfcm8TxZ+bx9pCzcWZbQtiMqpgBvWA/nJ2TrGjK5adCLfTH8wUeU/Wg==} + /@apidevtools/json-schema-ref-parser@11.7.2: + resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} engines: {node: '>= 16'} dependencies: '@jsdevtools/ono': 7.1.3 @@ -654,13 +649,13 @@ packages: /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@chax-at/transactional-prisma-testing@1.1.0(@prisma/client@5.18.0): - resolution: {integrity: sha512-BT2KRg2mfHbjW3gb3u5RtXjwvodywA8uvOX5Szm2J6KotgYJ/vRnCJ8LKp+kb/dbHhnPIrOCTtj6AY1Xku8Wng==} + /@chax-at/transactional-prisma-testing@1.2.0(@prisma/client@5.20.0): + resolution: {integrity: sha512-4GIEeHUlqcpggfz4t+t3tQb44uc67YWIzXnkB0m0Cy3jPOex/5fRhezebtqIxJzS2k4XIGxeJDij/Ajp0Mwy/Q==} engines: {node: '>= 14'} peerDependencies: '@prisma/client': ^4.7.0 || 5 dependencies: - '@prisma/client': 5.18.0(prisma@5.18.0) + '@prisma/client': 5.20.0(prisma@5.20.0) dev: true /@colors/colors@1.5.0: @@ -670,48 +665,48 @@ packages: dev: true optional: true - /@commitlint/cli@19.2.0(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-8XnQDMyQR+1/ldbmIyhonvnDS2enEw48Wompo/967fsEvy9Vj5/JbDutzmSBKxANWDVeEbR9QQm0yHpw6ArrFw==} + /@commitlint/cli@19.5.0(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} engines: {node: '>=v18'} hasBin: true dependencies: - '@commitlint/format': 19.0.3 - '@commitlint/lint': 19.1.0 - '@commitlint/load': 19.2.0(@types/node@20.3.1)(typescript@5.1.3) - '@commitlint/read': 19.2.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.5.0 + '@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.3) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - typescript dev: true - /@commitlint/config-angular-type-enum@19.1.0: - resolution: {integrity: sha512-eLjt7vSArP62kpDmmIZNdIBjPzbqY8jss6mVOcSDm4t1KfDw4UmPrtPh/7zcIL3GI5uf/7W8d2s3K0qisf9C+g==} + /@commitlint/config-angular-type-enum@19.5.0: + resolution: {integrity: sha512-4/6xrkElCSBb7+6oZXlBJ/zytkxXgmTg5gk1Voj3GAWShTivtWrPtDYvHmF858WhA695YKgxMHEPNN74UFkK8w==} engines: {node: '>=v18'} dev: true - /@commitlint/config-angular@19.1.0: - resolution: {integrity: sha512-qZyG9FHjPoG+VaHxH1OruWI8cmWWRe00sAS73jXAhACimT74k4Dex5jI2cKFcXSH8Ebh1yGwxfjzSgup5O0ykA==} + /@commitlint/config-angular@19.5.0: + resolution: {integrity: sha512-EPQBuSK4uVNUj2HhWSJjmfHqgPpST//h07oIzcPK2FauFGGGX0Vt+kzNxnQRDEEUvSAHDRNTDWNaFv66Hlle6A==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-angular-type-enum': 19.1.0 + '@commitlint/config-angular-type-enum': 19.5.0 dev: true - /@commitlint/config-validator@19.0.3: - resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + /@commitlint/config-validator@19.5.0: + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 ajv: 8.12.0 dev: true - /@commitlint/ensure@19.0.3: - resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + /@commitlint/ensure@19.5.0: + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -719,48 +714,48 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule@19.0.0: - resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + /@commitlint/execute-rule@19.5.0: + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} engines: {node: '>=v18'} dev: true - /@commitlint/format@19.0.3: - resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==} + /@commitlint/format@19.5.0: + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 chalk: 5.3.0 dev: true - /@commitlint/is-ignored@19.0.3: - resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + /@commitlint/is-ignored@19.5.0: + resolution: {integrity: sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 - semver: 7.6.0 + '@commitlint/types': 19.5.0 + semver: 7.6.3 dev: true - /@commitlint/lint@19.1.0: - resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==} + /@commitlint/lint@19.5.0: + resolution: {integrity: sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 19.0.3 - '@commitlint/parse': 19.0.3 - '@commitlint/rules': 19.0.3 - '@commitlint/types': 19.0.3 + '@commitlint/is-ignored': 19.5.0 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.5.0 + '@commitlint/types': 19.5.0 dev: true - /@commitlint/load@19.2.0(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} + /@commitlint/load@19.5.0(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 19.0.3 - '@commitlint/execute-rule': 19.0.0 - '@commitlint/resolve-extends': 19.1.0 - '@commitlint/types': 19.0.3 + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.1.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.3.1)(cosmiconfig@9.0.0)(typescript@5.1.3) + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0)(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -769,68 +764,67 @@ packages: - typescript dev: true - /@commitlint/message@19.0.0: - resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + /@commitlint/message@19.5.0: + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} engines: {node: '>=v18'} dev: true - /@commitlint/parse@19.0.3: - resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + /@commitlint/parse@19.5.0: + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 dev: true - /@commitlint/read@19.2.0: - resolution: {integrity: sha512-HlGeEd/jyp2a5Fb9mvtsaDm5hFCmj80dJYjLQkpG3DzWneWBc37YU3kM8Za1D1HUazZaTkdsWq73M3XDE4CvCA==} + /@commitlint/read@19.5.0: + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} engines: {node: '>=v18'} dependencies: - '@commitlint/top-level': 19.0.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 git-raw-commits: 4.0.0 minimist: 1.2.8 + tinyexec: 0.3.0 dev: true - /@commitlint/resolve-extends@19.1.0: - resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + /@commitlint/resolve-extends@19.5.0: + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 19.0.3 - '@commitlint/types': 19.0.3 + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 global-directory: 4.0.1 import-meta-resolve: 4.0.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 dev: true - /@commitlint/rules@19.0.3: - resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} + /@commitlint/rules@19.5.0: + resolution: {integrity: sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw==} engines: {node: '>=v18'} dependencies: - '@commitlint/ensure': 19.0.3 - '@commitlint/message': 19.0.0 - '@commitlint/to-lines': 19.0.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 dev: true - /@commitlint/to-lines@19.0.0: - resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + /@commitlint/to-lines@19.5.0: + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} engines: {node: '>=v18'} dev: true - /@commitlint/top-level@19.0.0: - resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + /@commitlint/top-level@19.5.0: + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} engines: {node: '>=v18'} dependencies: find-up: 7.0.0 dev: true - /@commitlint/types@19.0.3: - resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + /@commitlint/types@19.5.0: + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} engines: {node: '>=v18'} dependencies: '@types/conventional-commits-parser': 5.0.0 @@ -843,13 +837,13 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.12.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.42.0 + eslint: 9.12.0 eslint-visitor-keys: 3.4.3 dev: true @@ -858,14 +852,35 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint-community/regexpp@4.11.1: + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/config-array@0.18.0: + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/core@0.6.0: + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/eslintrc@3.1.0: + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.2.0 + globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -875,9 +890,21 @@ packages: - supports-color dev: true - /@eslint/js@8.42.0: - resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.12.0: + resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/object-schema@2.1.4: + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/plugin-kit@0.2.0: + resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + levn: 0.4.1 dev: true /@exodus/schemasafe@1.3.0: @@ -902,21 +929,21 @@ packages: engines: {node: '>=14'} dev: false - /@fastify/compress@7.0.0: - resolution: {integrity: sha512-jo/NaBVHP1OXIf8Kmr3bZyYQB0gAIgcy5c8rRKTPjhklHO7lRs/6ZFckUVT0NtbKSvrTuIcmSkxYpjyv3FNHXA==} + /@fastify/compress@7.0.3: + resolution: {integrity: sha512-xa9fo5/DgK1s0bkS6xrYgNn8HmofO5tJvbCDk8QuXshSgLd2cFZANv1ox/Qv7zswS7JroHwTlCVv/XGTVO98tg==} dependencies: '@fastify/accept-negotiator': 1.1.0 fastify-plugin: 4.5.1 - into-stream: 6.0.0 mime-db: 1.52.0 minipass: 7.0.4 peek-stream: 1.1.3 pump: 3.0.0 pumpify: 2.0.1 + readable-stream: 4.5.2 dev: false - /@fastify/cookie@9.3.1: - resolution: {integrity: sha512-h1NAEhB266+ZbZ0e9qUE6NnNR07i7DnNXWG9VbbZ8uC6O/hxHpl+Zoe5sw1yfdZ2U6XhToUGDnzQtWJdCaPwfg==} + /@fastify/cookie@9.4.0: + resolution: {integrity: sha512-Th+pt3kEkh4MQD/Q2q1bMuJIB5NX/D5SwSpOKu3G/tjoGbwfpurIMJsWSPS0SJJ4eyjtmQ8OipDQspf8RbUOlg==} dependencies: cookie-signature: 1.2.1 fastify-plugin: 4.5.1 @@ -993,28 +1020,24 @@ packages: mime: 3.0.0 dev: false - /@fastify/static@6.12.0: - resolution: {integrity: sha512-KK1B84E6QD/FcQWxDI2aiUCwHxMJBI1KeCUzm1BwYpPY1b742+jeKruGHP2uOluuM6OkBPI8CIANrXcCRtC2oQ==} + /@fastify/static@7.0.4: + resolution: {integrity: sha512-p2uKtaf8BMOZWLs6wu+Ihg7bWNBdjNgCwDza4MJtTqg+5ovKmcbgbR9Xs5/smZ1YISfzKOCNYmZV8LaCj+eJ1Q==} dependencies: '@fastify/accept-negotiator': 1.1.0 '@fastify/send': 2.1.0 content-disposition: 0.5.4 fastify-plugin: 4.5.1 - glob: 8.1.0 - p-limit: 3.1.0 - dev: false - - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + fastq: 1.17.1 + glob: 10.4.5 dev: false - /@golevelup/nestjs-modules@0.6.1(@nestjs/common@10.0.0)(rxjs@7.8.1): + /@golevelup/nestjs-modules@0.6.1(@nestjs/common@10.4.4)(rxjs@7.8.1): resolution: {integrity: sha512-E0STg8In8fhIivnGDJAA70+XLPHzK5bMTkCnif9FbZ8waTYDQ3T/QQL0h73k+CUFeznn1hmuEW14sNaE+8cd7w==} peerDependencies: '@nestjs/common': ^9.x rxjs: ^7.x dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) lodash: 4.17.21 rxjs: 7.8.1 dev: false @@ -1027,15 +1050,17 @@ packages: through2: 2.0.5 dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + /@humanfs/core@0.19.0: + resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + engines: {node: '>=18.18.0'} + dev: true + + /@humanfs/node@0.16.5: + resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + engines: {node: '>=18.18.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/core': 0.19.0 + '@humanwhocodes/retry': 0.3.1 dev: true /@humanwhocodes/module-importer@1.0.1: @@ -1043,8 +1068,9 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/retry@0.3.1: + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} dev: true /@hutson/parse-repository-url@3.0.2: @@ -1062,7 +1088,6 @@ packages: strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -1083,13 +1108,13 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - /@jest/core@29.7.0(ts-node@10.9.1): + /@jest/core@29.7.0(ts-node@10.9.2): resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1103,14 +1128,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1137,7 +1162,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-mock: 29.7.0 /@jest/expect-utils@29.7.0: @@ -1161,7 +1186,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1192,7 +1217,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.22 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -1274,7 +1299,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.3.1 + '@types/node': 22.7.5 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -1320,6 +1345,13 @@ packages: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: false + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + /@lukeed/csprng@1.1.0: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -1347,11 +1379,11 @@ packages: - supports-color dev: false - /@microsoft/tsdoc@0.14.2: - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + /@microsoft/tsdoc@0.15.0: + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} dev: false - /@nestjs-cls/transactional-adapter-prisma@1.2.4(@nestjs-cls/transactional@2.2.0)(@prisma/client@5.18.0)(nestjs-cls@4.2.0)(prisma@5.18.0): + /@nestjs-cls/transactional-adapter-prisma@1.2.4(@nestjs-cls/transactional@2.4.2)(@prisma/client@5.20.0)(nestjs-cls@4.4.1)(prisma@5.20.0): resolution: {integrity: sha512-W/Ej+T3QG81//d4YuXsuHnV9WFvWTQBQk1BSiowyq7d812lyr3zk8ZMwmAhB7JAY80cJMeBY6i3TBlP0QVIczQ==} engines: {node: '>=18'} peerDependencies: @@ -1360,51 +1392,49 @@ packages: nestjs-cls: ^4.4.1 prisma: '> 4 < 6' dependencies: - '@nestjs-cls/transactional': 2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(nestjs-cls@4.2.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@prisma/client': 5.18.0(prisma@5.18.0) - nestjs-cls: 4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - prisma: 5.18.0 + '@nestjs-cls/transactional': 2.4.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(nestjs-cls@4.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@prisma/client': 5.20.0(prisma@5.20.0) + nestjs-cls: 4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + prisma: 5.20.0 dev: false - /@nestjs-cls/transactional@2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(nestjs-cls@4.2.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-O3wWCiVjeOPLGPs/sPcAUhSe/xaNx8JuzBtGg4IqnVrZfbjDzeADtlHIO8YkYhHYAVbqvVtGFbfFjL5tDUGWsA==} + /@nestjs-cls/transactional@2.4.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(nestjs-cls@4.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-bQZ4Xo5BOPnmKcBk/Qsh/VX8kHr+fKTfJ6Fcxu/RGmxzSwjRVgShNu0E57V8CZkZJ6YuIKJoDQHAoIbeRIffbQ==} engines: {node: '>=16'} peerDependencies: '@nestjs/common': '> 7.0.0 < 11' '@nestjs/core': '> 7.0.0 < 11' - nestjs-cls: ^4.2.0 + nestjs-cls: ^4.4.1 reflect-metadata: '*' rxjs: '>= 7' dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - nestjs-cls: 4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - reflect-metadata: 0.1.13 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + nestjs-cls: 4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + reflect-metadata: 0.2.2 rxjs: 7.8.1 dev: false - /@nestjs/cache-manager@2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(cache-manager@5.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-hAcX1f5moiK7B8KnPZVfV/up4nrZnaeN6w0o3M+UzNJNlw6bsIH6bn7jpGqzySAWPD9iYE/rg5IxTe1vSWyWZg==} + /@nestjs/cache-manager@2.2.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(cache-manager@5.4.0)(rxjs@7.8.1): + resolution: {integrity: sha512-+n7rpU1QABeW2WV17Dl1vZCG3vWjJU1MaamWgZvbGxYE9EeCM0lVLfw3z7acgDTNwOy+K68xuQPoIMxD0bhjlA==} peerDependencies: '@nestjs/common': ^9.0.0 || ^10.0.0 '@nestjs/core': ^9.0.0 || ^10.0.0 cache-manager: <=5 - reflect-metadata: ^0.1.12 rxjs: ^7.0.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) cache-manager: 5.4.0 - reflect-metadata: 0.1.13 rxjs: 7.8.1 dev: false - /@nestjs/cli@10.0.0: - resolution: {integrity: sha512-14pju3ejAAUpFe1iK99v/b7Bw96phBMV58GXTSm3TcdgaI4O7UTLXTbMiUNyU+LGr/1CPIfThcWqFyKhDIC9VQ==} - engines: {node: '>= 16'} + /@nestjs/cli@10.4.5: + resolution: {integrity: sha512-FP7Rh13u8aJbHe+zZ7hM0CC4785g9Pw4lz4r2TTgRtf0zTxSWMkJaPEwyjX8SK9oWK2GsYxl+fKpwVZNbmnj9A==} + engines: {node: '>= 16.14'} hasBin: true peerDependencies: - '@swc/cli': ^0.1.62 + '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 '@swc/core': ^1.3.62 peerDependenciesMeta: '@swc/cli': @@ -1412,27 +1442,24 @@ packages: '@swc/core': optional: true dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics-cli': 16.1.0(chokidar@3.5.3) - '@nestjs/schematics': 10.0.0(chokidar@3.5.3)(typescript@5.1.3) + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics-cli': 17.3.8(chokidar@3.6.0) + '@nestjs/schematics': 10.1.4(chokidar@3.6.0)(typescript@5.3.3) chalk: 4.1.2 - chokidar: 3.5.3 - cli-table3: 0.6.3 + chokidar: 3.6.0 + cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.1.3)(webpack@5.87.0) - inquirer: 8.2.5 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.94.0) + glob: 10.4.2 + inquirer: 8.2.6 node-emoji: 1.11.0 ora: 5.4.1 - os-name: 4.0.1 - rimraf: 4.4.1 - shelljs: 0.8.5 - source-map-support: 0.5.21 tree-kill: 1.2.2 tsconfig-paths: 4.2.0 - tsconfig-paths-webpack-plugin: 4.0.1 - typescript: 5.1.3 - webpack: 5.87.0 + tsconfig-paths-webpack-plugin: 4.1.0 + typescript: 5.3.3 + webpack: 5.94.0 webpack-node-externals: 3.0.0 transitivePeerDependencies: - esbuild @@ -1440,12 +1467,12 @@ packages: - webpack-cli dev: true - /@nestjs/common@10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-Fa2GDQJrO5TTTcpISWfm0pdPS62V+8YbxeG5CA01zMUI+dCO3v3oFf+BSjqCGUUo7GDNzDsjAejwGXuqA54RPw==} + /@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-0j2/zqRw9nvHV1GKTktER8B/hIC/Z8CYFjN/ZqUuvwayCH+jZZBhCR2oRyuvLTXdnlSmtCAg2xvQ0ULqQvzqhA==} peerDependencies: class-transformer: '*' class-validator: '*' - reflect-metadata: ^0.1.12 + reflect-metadata: ^0.1.12 || ^0.2.0 rxjs: ^7.1.0 peerDependenciesMeta: class-transformer: @@ -1456,12 +1483,12 @@ packages: class-transformer: 0.5.1 class-validator: 0.14.1 iterare: 1.2.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.2.2 rxjs: 7.8.1 - tslib: 2.5.3 + tslib: 2.7.0 uid: 2.0.2 - /@nestjs/common@9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1): + /@nestjs/common@9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): resolution: {integrity: sha512-RUcVAQsEF4WPrmzFXEOUfZnPwrLTe1UVlzXTlSyfqfqbdWDPKDGlIPVelBLfc5/+RRUQ0I5iE4+CQvpCmkqldw==} peerDependencies: cache-manager: <=5 @@ -1481,35 +1508,34 @@ packages: class-transformer: 0.5.1 class-validator: 0.14.1 iterare: 1.2.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.2.2 rxjs: 7.8.1 tslib: 2.5.0 uid: 2.0.2 dev: false - /@nestjs/config@3.1.1(@nestjs/common@10.0.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==} + /@nestjs/config@3.2.3(@nestjs/common@10.4.4)(rxjs@7.8.1): + resolution: {integrity: sha512-p6yv/CvoBewJ72mBq4NXgOAi2rSQNWx3a+IMJLVKS2uiwFCOQQuiIatGwq6MRjXV3Jr+B41iUO8FIf4xBrZ4/w==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - reflect-metadata: ^0.1.13 + rxjs: ^7.1.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - dotenv: 16.3.1 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + dotenv: 16.4.5 dotenv-expand: 10.0.0 lodash: 4.17.21 - reflect-metadata: 0.1.13 - uuid: 9.0.0 + rxjs: 7.8.1 dev: false - /@nestjs/core@10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-HFTdj4vsF+2qOaq97ZPRDle6Q/KyL5lmMah0/ZR0ie+e1/tnlvmlqw589xFACTemLJFFOjZMy763v+icO9u72w==} + /@nestjs/core@10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-y9tjmAzU6LTh1cC/lWrRsCcOd80khSR0qAHAqwY2svbW+AhsR/XCzgpZrAAKJrm/dDfjLCZKyxJSayeirGcW5Q==} requiresBuild: true peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/microservices': ^10.0.0 '@nestjs/platform-express': ^10.0.0 '@nestjs/websockets': ^10.0.0 - reflect-metadata: ^0.1.12 + reflect-metadata: ^0.1.12 || ^0.2.0 rxjs: ^7.1.0 peerDependenciesMeta: '@nestjs/microservices': @@ -1519,42 +1545,40 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 + path-to-regexp: 3.3.0 + reflect-metadata: 0.2.2 rxjs: 7.8.1 - tslib: 2.5.3 + tslib: 2.7.0 uid: 2.0.2 transitivePeerDependencies: - encoding - /@nestjs/event-emitter@2.0.3(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-Pt7KAERrgK0OjvarSI3wfVhwZ8X1iLq1lXuodyRe+Zx3aLLP7fraFUHirASbFkB6KIQ1Zj+gZ1g8a9eu4GfFhw==} + /@nestjs/event-emitter@2.0.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4): + resolution: {integrity: sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 - reflect-metadata: ^0.1.12 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) eventemitter2: 6.4.9 - reflect-metadata: 0.1.13 dev: false - /@nestjs/jwt@10.2.0(@nestjs/common@10.0.0): + /@nestjs/jwt@10.2.0(@nestjs/common@10.4.4): resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@types/jsonwebtoken': 9.0.5 jsonwebtoken: 9.0.2 dev: false - /@nestjs/mapped-types@2.0.5(@nestjs/common@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@2.0.5(@nestjs/common@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2): resolution: {integrity: sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -1567,23 +1591,23 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) class-transformer: 0.5.1 class-validator: 0.14.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.2.2 dev: false - /@nestjs/passport@10.0.3(@nestjs/common@10.0.0)(passport@0.7.0): + /@nestjs/passport@10.0.3(@nestjs/common@10.4.4)(passport@0.7.0): resolution: {integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) passport: 0.7.0 dev: false - /@nestjs/platform-fastify@10.3.4(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0): + /@nestjs/platform-fastify@10.3.4(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4): resolution: {integrity: sha512-rYoAdJ1ybBXPwO+KutWJ4siaqGDdMzwXS4ggJ5soQgD4maN2p1rvKE31MzERd1MqYXWprFIESFHuxkiHMZV6kg==} peerDependencies: '@fastify/static': ^6.0.0 || ^7.0.0 @@ -1599,9 +1623,9 @@ packages: '@fastify/cors': 9.0.1 '@fastify/formbody': 7.4.0 '@fastify/middie': 8.3.0 - '@fastify/static': 6.12.0 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@fastify/static': 7.0.4 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) fastify: 4.26.2 light-my-request: 5.12.0 path-to-regexp: 3.2.0 @@ -1610,23 +1634,23 @@ packages: - supports-color dev: false - /@nestjs/schematics@10.0.0(chokidar@3.5.3)(typescript@5.1.3): - resolution: {integrity: sha512-gfUy/N1m1paN33BXq4d7HoCM+zM4rFxYjqAb8jkrBfBHiwyEhHHozfX/aRy/kOnAcy/VP8v4Zs4HKKrbRRlHnw==} + /@nestjs/schematics@10.1.4(chokidar@3.6.0)(typescript@5.3.3): + resolution: {integrity: sha512-QpY8ez9cTvXXPr3/KBrtSgXQHMSV6BkOUYy2c2TTe6cBqriEdGnCYqGl8cnfrQl3632q3lveQPaZ/c127dHsEw==} peerDependencies: typescript: '>=4.8.2' dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics': 16.1.0(chokidar@3.5.3) + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) comment-json: 4.2.3 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 pluralize: 8.0.0 - typescript: 5.1.3 + typescript: 5.3.3 transitivePeerDependencies: - chokidar dev: true - /@nestjs/swagger@7.3.0(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-zLkfKZ+ioYsIZ3dfv7Bj8YHnZMNAGWFUmx2ZDuLp/fBE4P8BSjB7hldzDueFXsmwaPL90v7lgyd82P+s7KME1Q==} + /@nestjs/swagger@7.4.2(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2): + resolution: {integrity: sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ==} peerDependencies: '@fastify/static': ^6.0.0 || ^7.0.0 '@nestjs/common': ^9.0.0 || ^10.0.0 @@ -1642,22 +1666,22 @@ packages: class-validator: optional: true dependencies: - '@fastify/static': 6.12.0 - '@microsoft/tsdoc': 0.14.2 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/mapped-types': 2.0.5(@nestjs/common@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13) + '@fastify/static': 7.0.4 + '@microsoft/tsdoc': 0.15.0 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/mapped-types': 2.0.5(@nestjs/common@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) class-transformer: 0.5.1 class-validator: 0.14.1 js-yaml: 4.1.0 lodash: 4.17.21 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 - swagger-ui-dist: 5.11.2 + path-to-regexp: 3.3.0 + reflect-metadata: 0.2.2 + swagger-ui-dist: 5.17.14 dev: false - /@nestjs/testing@10.0.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0): - resolution: {integrity: sha512-U5q3+svkddpdSk51ZFCEnFpQuWxAwE4ahsX77FrqqCAYidr7HUtL/BHYOVzI5H9vUH6BvJxMbfo3tiUXQl/2aA==} + /@nestjs/testing@10.4.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4): + resolution: {integrity: sha512-qRGFj51A5RM7JqA8pcyEwSLA3Y0dle/PAZ8oxP0suimoCusRY3Tk7wYqutZdCNj1ATb678SDaUZDHk2pwSv9/g==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 @@ -1669,12 +1693,12 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - tslib: 2.5.3 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + tslib: 2.7.0 dev: true - /@nestjs/testing@9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.0.0): + /@nestjs/testing@9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.4.4): resolution: {integrity: sha512-xZWp363P4otcebg++gSjUcdCfTK0RorORzyFq3aLaSAQOlq8kxfFDRIKzEATR4aOUfqTMMsAA8lhnMJWf35N6A==} peerDependencies: '@nestjs/common': ^9.0.0 @@ -1687,8 +1711,8 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) tslib: 2.5.0 dev: false @@ -1713,12 +1737,12 @@ packages: fastq: 1.17.1 dev: true - /@nodeteam/nestjs-prisma-pagination@1.0.6(@babel/core@7.23.9)(@nestjs/core@10.0.0)(@types/node@20.3.1)(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1)(ts-node@10.9.1): + /@nodeteam/nestjs-prisma-pagination@1.0.6(@babel/core@7.23.9)(@nestjs/core@10.4.4)(@types/node@22.7.5)(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)(ts-node@10.9.2): resolution: {integrity: sha512-ZTTXIlbnphmtBt4xFlFfV7an5e2EvmC/P4nj7s0nbSgq8bYovjMAbGxlmBh/shxfVaQeYCl78SoSnYWOjIQMCA==} dependencies: - '@nestjs/common': 9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/testing': 9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.0.0) - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + '@nestjs/common': 9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/testing': 9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.4.4) + jest: 29.5.0(@types/node@22.7.5)(ts-node@10.9.2) ts-jest: 29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: @@ -1741,23 +1765,6 @@ packages: - ts-node dev: false - /@npmcli/fs@2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.0 - dev: false - - /@npmcli/move-file@2.0.1: - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: false - /@nuxtjs/opencollective@0.3.2: resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} @@ -1777,7 +1784,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true - dev: false optional: true /@pkgr/core@0.1.1: @@ -1807,8 +1813,8 @@ packages: - supports-color dev: true - /@prisma/client@5.18.0(prisma@5.18.0): - resolution: {integrity: sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw==} + /@prisma/client@5.20.0(prisma@5.20.0): + resolution: {integrity: sha512-CLv55ZuMuUawMsxoqxGtLT3bEZoa2W8L3Qnp6rDIFWy+ZBrUcOFKdoeGPSnbBqxc3SkdxJrF+D1veN/WNynZYA==} engines: {node: '>=16.13'} requiresBuild: true peerDependencies: @@ -1817,7 +1823,7 @@ packages: prisma: optional: true dependencies: - prisma: 5.18.0 + prisma: 5.20.0 /@prisma/debug@4.16.2: resolution: {integrity: sha512-7L7WbG0qNNZYgLpsVB8rCHCXEyHFyIycRlRDNwkVfjQmACC2OW6AWCYCbfdjQhkF/t7+S3njj8wAWAocSs+Brw==} @@ -1829,27 +1835,27 @@ packages: - supports-color dev: true - /@prisma/debug@5.18.0: - resolution: {integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==} + /@prisma/debug@5.20.0: + resolution: {integrity: sha512-oCx79MJ4HSujokA8S1g0xgZUGybD4SyIOydoHMngFYiwEwYDQ5tBQkK5XoEHuwOYDKUOKRn/J0MEymckc4IgsQ==} - /@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169: - resolution: {integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==} + /@prisma/engines-version@5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284: + resolution: {integrity: sha512-Lg8AS5lpi0auZe2Mn4gjuCg081UZf88k3cn0RCwHgR+6cyHHpttPZBElJTHf83ZGsRNAmVCZCfUGA57WB4u4JA==} - /@prisma/engines@5.18.0: - resolution: {integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==} + /@prisma/engines@5.20.0: + resolution: {integrity: sha512-DtqkP+hcZvPEbj8t8dK5df2b7d3B8GNauKqaddRRqQBBlgkbdhJkxhoJTrOowlS3vaRt2iMCkU0+CSNn0KhqAQ==} requiresBuild: true dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/fetch-engine': 5.18.0 - '@prisma/get-platform': 5.18.0 + '@prisma/debug': 5.20.0 + '@prisma/engines-version': 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284 + '@prisma/fetch-engine': 5.20.0 + '@prisma/get-platform': 5.20.0 - /@prisma/fetch-engine@5.18.0: - resolution: {integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==} + /@prisma/fetch-engine@5.20.0: + resolution: {integrity: sha512-JVcaPXC940wOGpCOwuqQRTz6I9SaBK0c1BAyC1pcz9xBi+dzFgUu3G/p9GV1FhFs9OKpfSpIhQfUJE9y00zhqw==} dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/get-platform': 5.18.0 + '@prisma/debug': 5.20.0 + '@prisma/engines-version': 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284 + '@prisma/get-platform': 5.20.0 /@prisma/generator-helper@4.16.2: resolution: {integrity: sha512-bMOH7y73Ui7gpQrioFeavMQA+Tf8ksaVf8Nhs9rQNzuSg8SSV6E9baczob0L5KGZTSgYoqnrRxuo03kVJYrnIg==} @@ -1862,10 +1868,10 @@ packages: - supports-color dev: true - /@prisma/get-platform@5.18.0: - resolution: {integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==} + /@prisma/get-platform@5.20.0: + resolution: {integrity: sha512-8/+CehTZZNzJlvuryRgc77hZCWrUDYd/PmlZ7p2yNXtmf2Una4BWnTbak3us6WVdqoz5wmptk6IhsXdG2v5fmA==} dependencies: - '@prisma/debug': 5.18.0 + '@prisma/debug': 5.20.0 /@schematics/angular@13.3.11: resolution: {integrity: sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==} @@ -1891,11 +1897,6 @@ packages: dependencies: '@sinonjs/commons': 3.0.1 - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -1936,26 +1937,26 @@ packages: /@types/bcrypt@5.0.2: resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/conventional-commits-parser@5.0.0: resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/cookiejar@2.1.5: @@ -1965,7 +1966,7 @@ packages: /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/debug@4.1.8: @@ -1978,28 +1979,14 @@ packages: resolution: {integrity: sha512-RhMcnI18Y+401Nceh2pW5gTGgsdfZdvg9g0P/5HIBJ0jmZEv5KlkYvfQiHhw4/Vnb8NdePi/4UCs92ITExLxuQ==} dev: true - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - dependencies: - '@types/eslint': 8.56.2 - '@types/estree': 1.0.5 - dev: true - - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: true - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} dev: true /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -2017,7 +2004,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -2036,8 +2023,8 @@ packages: dependencies: '@types/istanbul-lib-report': 3.0.3 - /@types/jest@29.5.2: - resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} + /@types/jest@29.5.13: + resolution: {integrity: sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 @@ -2049,7 +2036,7 @@ packages: /@types/jsonwebtoken@9.0.5: resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 /@types/methods@1.1.4: resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} @@ -2071,17 +2058,15 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: true - /@types/node@20.3.1: - resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} + /@types/node@22.7.5: + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + dependencies: + undici-types: 6.19.8 /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true - /@types/parse-json@4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: true - /@types/passport-jwt@4.0.1: resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==} dependencies: @@ -2118,15 +2103,11 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - dev: true - /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/serve-static@1.15.5: @@ -2134,7 +2115,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/stack-utils@2.0.3: @@ -2145,13 +2126,12 @@ packages: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true - /@types/supertest@6.0.0: - resolution: {integrity: sha512-j3/Z2avY+H3yn+xp/ef//QyqqE+dg3rWh14Ewi/QZs6uVK+oOs7lFRXtjp2YHAqHJZ4OFGNmCxZO5vd7AuG/Dg==} + /@types/supertest@6.0.2: + resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==} dependencies: - '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 '@types/superagent': 8.1.3 dev: true @@ -2167,142 +2147,134 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1)(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/type-utils': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - '@typescript-eslint/utils': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4 - eslint: 8.42.0 - grapheme-splitter: 1.0.4 + '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 + eslint: 9.12.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.1.3) - typescript: 5.1.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.0.0(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 debug: 4.3.4 - eslint: 8.42.0 - typescript: 5.1.3 + eslint: 9.12.0 + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.0.0: - resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@8.8.1: + resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 dev: true - /@typescript-eslint/type-utils@6.0.0(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.3) - '@typescript-eslint/utils': 6.0.0(eslint@8.42.0)(typescript@5.1.3) + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) debug: 4.3.4 - eslint: 8.42.0 - ts-api-utils: 1.2.1(typescript@5.1.3) - typescript: 5.1.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color dev: true - /@typescript-eslint/types@6.0.0: - resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@8.8.1: + resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.3): - resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3): + resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 debug: 4.3.4 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 - semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.1.3) - typescript: 5.1.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.0.0(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.3) - eslint: 8.42.0 - eslint-scope: 5.1.1 - semver: 7.6.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + eslint: 9.12.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.0.0: - resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@8.8.1: + resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/types': 8.8.1 eslint-visitor-keys: 3.4.3 dev: true - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -2316,8 +2288,8 @@ packages: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} dev: true - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} dev: true /@webassemblyjs/helper-numbers@1.11.6: @@ -2332,13 +2304,13 @@ packages: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} dev: true - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 dev: true /@webassemblyjs/ieee754@1.11.6: @@ -2357,42 +2329,42 @@ packages: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} dev: true - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 dev: true - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 dev: true - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 dev: true - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 @@ -2400,10 +2372,10 @@ packages: '@webassemblyjs/utf8': 1.11.6 dev: true - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 dev: true @@ -2438,20 +2410,20 @@ packages: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + /acorn-import-attributes@1.9.5(acorn@8.11.3): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: acorn: 8.11.3 dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.12.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.3 + acorn: 8.12.1 dev: true /acorn-walk@8.3.2: @@ -2469,6 +2441,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} dev: true @@ -2482,21 +2460,6 @@ packages: - supports-color dev: false - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - dependencies: - humanize-ms: 1.2.1 - dev: false - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: false - /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2575,7 +2538,6 @@ packages: /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: false /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} @@ -2601,7 +2563,6 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: false /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -2626,14 +2587,6 @@ packages: readable-stream: 3.6.2 dev: false - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: false - /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -2665,11 +2618,6 @@ packages: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - /array-unique@0.2.1: resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} engines: {node: '>=0.10.0'} @@ -2686,7 +2634,7 @@ packages: /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: false + dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -2718,8 +2666,8 @@ packages: - supports-color dev: false - /axios@1.7.5(debug@2.6.9): - resolution: {integrity: sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==} + /axios@1.7.7(debug@2.6.9): + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} dependencies: follow-redirects: 1.15.6(debug@2.6.9) form-data: 4.0.0 @@ -2818,12 +2766,6 @@ packages: engines: {node: '>=8'} dev: true - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - dependencies: - file-uri-to-path: 1.0.0 - dev: false - /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -2898,32 +2840,6 @@ packages: ieee754: 1.2.1 dev: false - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.0 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - dev: false - /cache-manager@5.4.0: resolution: {integrity: sha512-FS7o8vqJosnLpu9rh2gQTo8EOzCRJLF1BJ4XDEUDMqcfvs7SJZs5iuoFTXLauzQ3S5v8sBAST1pCwMaurpyi1A==} dependencies: @@ -2937,10 +2853,11 @@ packages: engines: {node: '>=6'} dev: true - /call-bind@1.0.6: - resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 @@ -2988,7 +2905,6 @@ packages: /centra@2.6.0: resolution: {integrity: sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dev: true /chalk@1.1.3: @@ -3030,8 +2946,8 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 @@ -3071,11 +2987,6 @@ packages: libphonenumber-js: 1.10.58 validator: 13.11.0 - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: false - /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -3086,8 +2997,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -3100,6 +3011,11 @@ packages: engines: {node: '>= 10'} dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + /cliui@3.2.0: resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} dependencies: @@ -3196,13 +3112,13 @@ packages: repeat-string: 1.6.1 dev: true - /commitizen@4.3.0(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} + /commitizen@4.3.1(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.3.1)(typescript@5.1.3) + cz-conventional-changelog: 3.3.0(@types/node@22.7.5)(typescript@5.6.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -3478,7 +3394,7 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - /cosmiconfig-typescript-loader@5.0.0(@types/node@20.3.1)(cosmiconfig@9.0.0)(typescript@5.1.3): + /cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0)(typescript@5.6.3): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} peerDependencies: @@ -3486,24 +3402,29 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' dependencies: - '@types/node': 20.3.1 - cosmiconfig: 9.0.0(typescript@5.1.3) + '@types/node': 22.7.5 + cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.0 - typescript: 5.1.3 + typescript: 5.6.3 dev: true - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + /cosmiconfig@8.3.6(typescript@5.3.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/parse-json': 4.0.2 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + typescript: 5.3.3 dev: true - /cosmiconfig@9.0.0(typescript@5.1.3): + /cosmiconfig@9.0.0(typescript@5.6.3): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -3516,10 +3437,10 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.1.3 + typescript: 5.6.3 dev: true - /create-jest@29.7.0(@types/node@20.3.1)(ts-node@10.9.1): + /create-jest@29.7.0(@types/node@22.7.5)(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3528,7 +3449,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3557,18 +3478,18 @@ packages: urix: 0.1.0 dev: false - /cz-conventional-changelog@3.3.0(@types/node@20.3.1)(typescript@5.1.3): + /cz-conventional-changelog@3.3.0(@types/node@22.7.5)(typescript@5.6.3): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@20.3.1)(typescript@5.1.3) + commitizen: 4.3.1(@types/node@22.7.5)(typescript@5.6.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.2.0(@types/node@20.3.1)(typescript@5.1.3) + '@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - '@types/node' - typescript @@ -3732,20 +3653,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -3764,8 +3671,8 @@ packages: engines: {node: '>=12'} dev: false - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} dev: false @@ -3797,7 +3704,6 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} @@ -3805,6 +3711,14 @@ packages: safe-buffer: 5.2.1 dev: false + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.9.2 + dev: true + /electron-to-chromium@1.4.659: resolution: {integrity: sha512-sRJ3nV3HowrYpBtPF9bASQV7OW49IgZC01Xiq43WfSE3RTCkK0/JidoCmR73Hyc1mN+l/H4Yqx0eNiomvExFZg==} @@ -3817,20 +3731,12 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false - - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - dev: false - optional: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: false /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} @@ -3840,19 +3746,31 @@ packages: tapable: 2.2.1 dev: true + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -3883,17 +3801,17 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.42.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + /eslint-config-prettier@9.1.0(eslint@9.12.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.42.0 + eslint: 9.12.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.42.0)(prettier@3.0.0): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3): + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -3906,11 +3824,11 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.42.0 - eslint-config-prettier: 9.0.0(eslint@8.42.0) - prettier: 3.0.0 + eslint: 9.12.0 + eslint-config-prettier: 9.1.0(eslint@9.12.0) + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 + synckit: 0.9.2 dev: true /eslint-scope@5.1.1: @@ -3921,9 +3839,9 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -3934,61 +3852,67 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.42.0: - resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.12.0: + resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.42.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.12.0 + '@eslint/plugin-kit': 0.2.0 + '@humanfs/node': 0.16.5 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.1 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.3 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.1.0 dev: true /esprima@4.0.1: @@ -4038,21 +3962,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -4067,21 +3976,6 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -4117,10 +4011,6 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: false - /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -4152,8 +4042,8 @@ packages: resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} dev: false - /fast-copy@3.0.1: - resolution: {integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==} + /fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} dev: false /fast-decode-uri-component@1.0.1: @@ -4215,8 +4105,8 @@ packages: resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==} dev: false - /fastify-ip@1.0.0: - resolution: {integrity: sha512-ht6hS48UDmdHd9jARn2BphJUgw5u/nm8ItO9EceM2uSVhlusrkF07CfNvpuJHxFX8Nx+Eik/VJz0QzxOn3KMJA==} + /fastify-ip@1.1.0: + resolution: {integrity: sha512-23M1Jbw5ftu1uMeVYsyqUfKs85SsfvopJZufdSinzbrYYQtD4V7TWn1Mc6IliQXHk0mdiLeKxYH4F3OZlxG5Ow==} engines: {node: '>=18.x'} dependencies: fastify-plugin: 4.5.1 @@ -4266,16 +4156,18 @@ packages: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 dev: true - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true /filename-regex@2.0.1: resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} @@ -4380,13 +4272,12 @@ packages: engines: {node: '>=0.10.0'} dev: false - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: flatted: 3.2.9 keyv: 4.5.4 - rimraf: 3.0.2 dev: true /flatted@3.2.9: @@ -4423,10 +4314,9 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - dev: false - /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.1.3)(webpack@5.87.0): - resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.94.0): + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: typescript: '>3.6.0' @@ -4434,18 +4324,18 @@ packages: dependencies: '@babel/code-frame': 7.23.5 chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 7.1.0 + chokidar: 3.6.0 + cosmiconfig: 8.3.6(typescript@5.3.3) deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.6.0 + semver: 7.6.3 tapable: 2.2.1 - typescript: 5.1.3 - webpack: 5.87.0 + typescript: 5.3.3 + webpack: 5.94.0 dev: true /form-data-lite@1.0.3: @@ -4478,13 +4368,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: false - /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -4542,20 +4425,6 @@ packages: wide-align: 1.1.5 dev: false - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4590,22 +4459,10 @@ packages: yargs: 16.2.0 dev: true - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true - /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -4704,20 +4561,34 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} + /glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: true + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 dev: false /glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: inflight: 1.0.6 inherits: 2.0.4 @@ -4728,6 +4599,7 @@ packages: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4736,27 +4608,6 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: false - - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.10.1 - dev: true - /global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -4788,23 +4639,9 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} dev: true /gopd@1.0.1: @@ -4816,10 +4653,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -4941,10 +4774,6 @@ packages: /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -4956,17 +4785,6 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - /http-status@1.7.4: resolution: {integrity: sha512-c2qSwNtTlHVYAhMj9JpGdyo0No/+DiKXCJ9pHtZ2Yf3QmPnBIytKSRT7BuyIiQ7icXLynavGmxUqkOjSrAuMuA==} engines: {node: '>= 0.4.0'} @@ -4982,28 +4800,12 @@ packages: - supports-color dev: false - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true - /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true - - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: false - - /husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + /husky@9.1.6: + resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} engines: {node: '>=18'} hasBin: true dev: true @@ -5015,14 +4817,6 @@ packages: safer-buffer: 2.1.2 dev: true - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - optional: true - /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5058,13 +4852,11 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: false + dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -5081,8 +4873,8 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + /inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -5102,8 +4894,8 @@ packages: wrap-ansi: 7.0.0 dev: true - /inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -5120,35 +4912,35 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 6.2.0 dev: true - /interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - dev: true - - /into-stream@6.0.0: - resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} - engines: {node: '>=10'} + /inquirer@9.2.15: + resolution: {integrity: sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==} + engines: {node: '>=18'} dependencies: - from2: 2.3.0 - p-is-promise: 3.0.0 - dev: false + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true /invert-kv@1.0.0: resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} engines: {node: '>=0.10.0'} dev: false - /ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - dev: false - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5239,10 +5031,6 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: false - /is-number@2.1.0: resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} engines: {node: '>=0.10.0'} @@ -5264,11 +5052,6 @@ packages: engines: {node: '>=8'} dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -5293,11 +5076,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} @@ -5370,7 +5148,7 @@ packages: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -5403,14 +5181,23 @@ packages: resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} engines: {node: '>=6'} - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - dev: false + + /jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true /jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} @@ -5428,7 +5215,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -5448,7 +5235,7 @@ packages: - babel-plugin-macros - supports-color - /jest-cli@29.7.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest-cli@29.7.0(@types/node@22.7.5)(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5458,14 +5245,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + create-jest: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5475,7 +5262,7 @@ packages: - supports-color - ts-node - /jest-config@29.7.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest-config@29.7.0(@types/node@22.7.5)(ts-node@10.9.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5490,7 +5277,7 @@ packages: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 @@ -5510,7 +5297,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.3) + ts-node: 10.9.2(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -5547,7 +5334,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5561,7 +5348,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.3.1 + '@types/node': 22.7.5 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5608,7 +5395,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-util: 29.7.0 /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -5658,7 +5445,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5688,7 +5475,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -5729,7 +5516,7 @@ packages: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -5738,7 +5525,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5761,7 +5548,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5772,7 +5559,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -5781,12 +5568,12 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest@29.5.0(@types/node@22.7.5)(ts-node@10.9.2): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5796,15 +5583,37 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: false + + /jest@29.7.0(@types/node@22.7.5)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node + dev: true /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} @@ -5832,10 +5641,6 @@ packages: dependencies: argparse: 2.0.1 - /jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - dev: false - /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -5885,8 +5690,12 @@ packages: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} dev: false - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} dev: true /jsonfile@6.1.0: @@ -5902,8 +5711,8 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsonrepair@3.7.0: - resolution: {integrity: sha512-TwE50n4P4gdVfMQF2q+X+IGy4ntFfcuHHE8zjRyBcdtrRK0ORZsjOZD6zmdylk4p277nQBAlHgsEPWtMIQk4LQ==} + /jsonrepair@3.8.1: + resolution: {integrity: sha512-5wnjaO53EJOhfLFY92nvBz2B9gqF9ql/D4HKUb1WOSBaqtVcAifFfmurblnhCJn/ySqKFA8U3n7nhGMAu/hEjQ==} hasBin: true dev: false @@ -6233,24 +6042,14 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: false - - /macos-release@2.5.1: - resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} - engines: {node: '>=6'} - dev: true - /magic-string@0.25.7: resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} dependencies: sourcemap-codec: 1.4.8 dev: false - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -6266,36 +6065,11 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.0 + semver: 7.6.3 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - agentkeepalive: 4.5.0 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: @@ -6434,11 +6208,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -6452,23 +6221,15 @@ packages: /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: false /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -6486,56 +6247,12 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: false - - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: true - /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -6543,6 +6260,11 @@ packages: /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} @@ -6604,9 +6326,10 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nan@2.19.0: - resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} - dev: false + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} @@ -6614,24 +6337,15 @@ packages: hasBin: true dev: false - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false - /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /nestjs-cls@4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-sdvdhBmM9eb9d1URtcK7642S3ufD9ZWaKRt4Ouf1gIGmd73YniiKCxxOFwChRqDU+sr7hwxT560JaA27R/7RJQ==} + /nestjs-cls@4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-4yhldwm/cJ02lQ8ZAdM8KQ7gMfjAc1z3fo5QAQgXNyN4N6X5So9BCwv+BTLRugDCkELUo3qtzQHnKhGYL/ftPg==} engines: {node: '>=16'} peerDependencies: '@nestjs/common': '> 7.0.0 < 11' @@ -6639,37 +6353,37 @@ packages: reflect-metadata: '*' rxjs: '>= 7' dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - reflect-metadata: 0.1.13 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + reflect-metadata: 0.2.2 rxjs: 7.8.1 dev: false - /nestjs-oauth2@0.0.7(@nestjs/common@10.0.0)(rxjs@7.8.1): + /nestjs-oauth2@0.0.7(@nestjs/common@10.4.4)(rxjs@7.8.1): resolution: {integrity: sha512-P4HfJziGsMl4+aTclr9vkqfbI84odja1kOjKZw095A+b4ksVczOC4J/AH4BydsIAPVsj/5RJj4aGFoWV90Bu1w==} peerDependencies: '@nestjs/common': ^9.0.0 rxjs: ^7.x dependencies: - '@golevelup/nestjs-modules': 0.6.1(@nestjs/common@10.0.0)(rxjs@7.8.1) - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@golevelup/nestjs-modules': 0.6.1(@nestjs/common@10.4.4)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) oauth: 0.10.0 rxjs: 7.8.1 dev: false - /nestjs-pino@4.0.0(@nestjs/common@10.0.0)(pino-http@9.0.0): - resolution: {integrity: sha512-XhCg/R+l3w0BFP6MHyR6lU/BHVEV0tV9z24G0vuA9FD3sv+TQNvnO9uVsF1l/oVspgGfQ9Qulmb2UbsfYlI0+g==} + /nestjs-pino@4.1.0(@nestjs/common@10.4.4)(pino-http@10.3.0): + resolution: {integrity: sha512-I6zcddauD2TNMRbsraEIxNUvHcz0El5QRUYH5eY1+pBzj7R17U+Yoyypoc+akVdSLWJ1r0kDYAZPy2mlhXv6vw==} engines: {node: '>= 14'} requiresBuild: true peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - pino-http: ^6.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + pino-http: ^6.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - pino-http: 9.0.0 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + pino-http: 10.3.0 dev: false - /nestjs-prisma@0.23.0(@nestjs/common@10.0.0)(@prisma/client@5.18.0)(prisma@5.18.0): + /nestjs-prisma@0.23.0(@nestjs/common@10.4.4)(@prisma/client@5.20.0)(prisma@5.20.0): resolution: {integrity: sha512-0pIMDasayP+vMFSztcs85zu4WSPTKM85F8vIrqn7GsUBboEcKhI8eCeVghhNyKDGzEBaNAYNJlo2MAWdNuN7Tw==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -6678,10 +6392,10 @@ packages: dependencies: '@angular-devkit/core': 13.3.11 '@angular-devkit/schematics': 13.3.11 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@prisma/client': 5.18.0(prisma@5.18.0) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@prisma/client': 5.20.0(prisma@5.20.0) '@schematics/angular': 13.3.11 - prisma: 5.18.0 + prisma: 5.20.0 transitivePeerDependencies: - chokidar dev: false @@ -6711,27 +6425,6 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.6.0 - tar: 6.2.0 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -6746,14 +6439,6 @@ packages: abbrev: 1.1.1 dev: false - /nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: false - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -6768,7 +6453,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-license: 3.0.4 dev: true @@ -6789,13 +6474,6 @@ packages: dependencies: path-key: 3.1.1 - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: @@ -6805,16 +6483,6 @@ packages: set-blocking: 2.0.0 dev: false - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: false - /number-is-nan@1.0.1: resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} engines: {node: '>=0.10.0'} @@ -6866,13 +6534,6 @@ packages: dependencies: mimic-fn: 2.1.0 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - /openapi-fuzzer-core@1.0.6: resolution: {integrity: sha512-FJNJIfgUFuv4NmVGq9MYdoKra2GrkDy2uhIjE2YGlw30UA1glf4SXLMhI4UwdcJ8jisKdIxi7lXrfej8GvNW5w==} dependencies: @@ -6924,24 +6585,11 @@ packages: lcid: 1.0.0 dev: false - /os-name@4.0.1: - resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} - engines: {node: '>=10'} - dependencies: - macos-release: 2.5.1 - windows-release: 4.0.0 - dev: true - /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - dev: false - /p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} @@ -7002,13 +6650,6 @@ packages: p-limit: 4.0.0 dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} @@ -7018,12 +6659,15 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /pactum-matchers@1.1.6: - resolution: {integrity: sha512-55io32NeOKbLpHKKPzYDOr+N2dseTzMbj1Gj1y+zvOkKK6NDf5BT5pxglfqLN/ra3ig5zvbrKFUqZIWjAWboog==} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + /pactum-matchers@1.1.7: + resolution: {integrity: sha512-RqwewcUje6vhcYQGbPfdSXkcp/Vtwn4WmmTWLSmqp0CGxBroCEqRg3JMIjkjQTZCd2VmG+tTcQw+n4P/iuqv3Q==} dev: true - /pactum@3.6.3: - resolution: {integrity: sha512-iAizqD9sgJsVVKm0sBzDm2ZjqBMJBr/ZTbKOYawfT014EsoSIzuHIsolpslRKsHlru6MFwlg530XrEpaBmElrA==} + /pactum@3.7.1: + resolution: {integrity: sha512-r+R1dMy2MfRCQpAHohMyICusiMz14t0E+bhnLDScl2x4lXJKQAvQUGV/WWKUUxN2DS0Jdm0PUj6KjblfcSk1GA==} engines: {node: '>=10'} dependencies: '@exodus/schemasafe': 1.3.0 @@ -7033,7 +6677,7 @@ packages: klona: 2.0.6 lightcookie: 1.0.25 openapi-fuzzer-core: 1.0.6 - pactum-matchers: 1.1.6 + pactum-matchers: 1.1.7 parse-graphql: 1.0.0 phin: 3.7.0 polka: 0.5.2 @@ -7150,23 +6794,22 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.2.0 - minipass: 7.0.4 + minipass: 7.1.2 /path-to-regexp@3.2.0: resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + dev: false + + /path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} @@ -7220,6 +6863,11 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /picomatch@4.0.1: + resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} + engines: {node: '>=12'} + dev: true + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -7248,22 +6896,29 @@ packages: split2: 4.2.0 dev: false - /pino-http@9.0.0: - resolution: {integrity: sha512-Q9QDNEz0vQmbJtMFjOVr2c9yL92vHudjmr3s3m6J1hbw3DBGFZJm3TIj9TWyynZ4GEsEA9SOtni4heRUr6lNOg==} + /pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + dev: false + + /pino-http@10.3.0: + resolution: {integrity: sha512-kaHQqt1i5S9LXWmyuw6aPPqYW/TjoDPizPs4PnDW4hSpajz2Uo/oisNliLf7We1xzpiLacdntmw8yaZiEkppQQ==} dependencies: get-caller-file: 2.0.5 - pino: 8.18.0 - pino-std-serializers: 6.2.2 - process-warning: 3.0.0 + pino: 9.4.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.0 dev: false - /pino-pretty@10.3.1: - resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + /pino-pretty@11.2.2: + resolution: {integrity: sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==} hasBin: true dependencies: colorette: 2.0.20 dateformat: 4.6.3 - fast-copy: 3.0.1 + fast-copy: 3.0.2 fast-safe-stringify: 2.1.1 help-me: 5.0.0 joycon: 3.1.1 @@ -7273,7 +6928,7 @@ packages: pump: 3.0.0 readable-stream: 4.5.2 secure-json-parse: 2.7.0 - sonic-boom: 3.8.0 + sonic-boom: 4.1.0 strip-json-comments: 3.1.1 dev: false @@ -7281,6 +6936,10 @@ packages: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} dev: false + /pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + dev: false + /pino@8.18.0: resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==} hasBin: true @@ -7298,6 +6957,23 @@ packages: thread-stream: 2.4.1 dev: false + /pino@9.4.0: + resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.3.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 4.1.0 + thread-stream: 3.1.0 + dev: false + /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -7358,8 +7034,8 @@ packages: hasBin: true dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true dev: true @@ -7372,32 +7048,34 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /prisma-nested-middleware@4.0.0(@prisma/client@5.18.0): + /prisma-nested-middleware@4.0.0(@prisma/client@5.20.0): resolution: {integrity: sha512-WSx0nl7KNXEzGaNC87fuDBOdAjj3V6um/JoQUo24PaMzMy8tvOYfb2Mw25OZhnrMXNTBhqgk4rJTUW3CVcDsHQ==} peerDependencies: '@prisma/client': '*' dependencies: '@open-draft/deferred-promise': 2.2.0 - '@prisma/client': 5.18.0(prisma@5.18.0) + '@prisma/client': 5.20.0(prisma@5.20.0) lodash: 4.17.21 dev: false - /prisma-soft-delete-middleware@1.3.1(@prisma/client@5.18.0): + /prisma-soft-delete-middleware@1.3.1(@prisma/client@5.20.0): resolution: {integrity: sha512-oQ2Ba8wb23ho6PqMXkOSTQTXNKouLmZuILYDHrnKk1Ui3cGIXuj9zNWyJkoaTcWHznsiAaoP1Oy8ytDhwQNQqA==} peerDependencies: '@prisma/client': '*' dependencies: - '@prisma/client': 5.18.0(prisma@5.18.0) - prisma-nested-middleware: 4.0.0(@prisma/client@5.18.0) + '@prisma/client': 5.20.0(prisma@5.20.0) + prisma-nested-middleware: 4.0.0(@prisma/client@5.20.0) dev: false - /prisma@5.18.0: - resolution: {integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==} + /prisma@5.20.0: + resolution: {integrity: sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig==} engines: {node: '>=16.13'} hasBin: true requiresBuild: true dependencies: - '@prisma/engines': 5.18.0 + '@prisma/engines': 5.20.0 + optionalDependencies: + fsevents: 2.3.3 /process-nextick-args@1.0.7: resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} @@ -7410,6 +7088,10 @@ packages: resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} dev: false + /process-warning@4.0.0: + resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} + dev: false + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -7420,23 +7102,6 @@ packages: engines: {node: '>=16'} dev: false - /promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: false - - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -7461,6 +7126,7 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: false /pumpify@2.0.1: resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} @@ -7635,13 +7301,6 @@ packages: engines: {node: '>= 12.13.0'} dev: false - /rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.8 - dev: true - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -7650,8 +7309,8 @@ packages: strip-indent: 3.0.0 dev: true - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + /reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} /regex-cache@0.4.4: resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==} @@ -7742,11 +7401,6 @@ packages: engines: {node: '>=4'} dev: false - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: false - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -7760,20 +7414,18 @@ packages: hasBin: true dependencies: glob: 7.2.3 - - /rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 9.3.5 - dev: true + dev: false /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} dev: true + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -7811,6 +7463,7 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} @@ -7840,6 +7493,11 @@ packages: dependencies: lru-cache: 6.0.0 + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + /serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: @@ -7880,21 +7538,11 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - dev: true - /side-channel@1.0.5: resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 @@ -7914,32 +7562,14 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false - - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - dev: false - - /socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + /sonic-boom@3.8.0: + resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 + atomic-sleep: 1.0.0 dev: false - /sonic-boom@3.8.0: - resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} + /sonic-boom@4.1.0: + resolution: {integrity: sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==} dependencies: atomic-sleep: 1.0.0 dev: false @@ -8029,17 +7659,6 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - dev: false - - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - dev: false - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -8112,7 +7731,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: false /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -8151,7 +7769,6 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: false /strip-bom-stream@1.0.0: resolution: {integrity: sha512-7jfJB9YpI2Z0aH3wu10ZqitvYJaE0s5IzFuWE+0pbb4Q/armTloEUShymkDO47YSLnjAW52mlXT//hs9wXNNJQ==} @@ -8181,11 +7798,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -8252,8 +7864,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swagger-ui-dist@5.11.2: - resolution: {integrity: sha512-jQG0cRgJNMZ7aCoiFofnoojeSaa/+KgWaDlfgs8QN+BXoGMpxeMVY5OEnjq4OlNvF3yjftO8c9GRAgcHlO+u7A==} + /swagger-ui-dist@5.17.14: + resolution: {integrity: sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==} dev: false /symbol-observable@4.0.0: @@ -8265,12 +7877,12 @@ packages: resolution: {integrity: sha512-IUW+ek7apEaW5bFhS6WpYoNtVpNTlNoqB/PH7YiMWQTxSPeXCzG4PILVakwXivJt3ZXWeO1fIJnUd/L9A/VeGA==} dev: false - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + /synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.7.0 dev: true /tapable@2.2.1: @@ -8289,7 +7901,7 @@ packages: mkdirp: 1.0.4 yallist: 4.0.0 - /terser-webpack-plugin@5.3.10(webpack@5.87.0): + /terser-webpack-plugin@5.3.10(webpack@5.94.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -8310,31 +7922,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.87.0 - dev: true - - /terser-webpack-plugin@5.3.10(webpack@5.90.1): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.22 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.27.0 - webpack: 5.90.1 + webpack: 5.94.0 dev: true /terser@5.27.0: @@ -8343,7 +7931,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -8376,6 +7964,12 @@ packages: real-require: 0.2.0 dev: false + /thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + dependencies: + real-require: 0.2.0 + dev: false + /through2-filter@2.0.0: resolution: {integrity: sha512-miwWajb1B80NvIVKXFPN/o7+vJc4jYUvnZCwvhicRAoTxdD9wbcjri70j+BenCrN/JXEPKDjhpw4iY7yiNsCGg==} dependencies: @@ -8420,6 +8014,10 @@ packages: os-homedir: 1.0.2 dev: false + /tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + dev: true + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -8477,13 +8075,13 @@ packages: matchit: 1.1.0 dev: true - /ts-api-utils@1.2.1(typescript@5.1.3): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + /ts-api-utils@1.3.0(typescript@5.6.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.3 + typescript: 5.6.3 dev: true /ts-jest@29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.0.4): @@ -8510,22 +8108,23 @@ packages: '@babel/core': 7.23.9 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest: 29.5.0(@types/node@22.7.5)(ts-node@10.9.2) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.0 + semver: 7.6.3 typescript: 5.0.4 yargs-parser: 21.1.1 dev: false - /ts-jest@29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.1.3): - resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /ts-jest@29.2.5(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.6.3): + resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 '@jest/types': ^29.0.0 babel-jest: ^29.0.0 esbuild: '*' @@ -8534,6 +8133,8 @@ packages: peerDependenciesMeta: '@babel/core': optional: true + '@jest/transform': + optional: true '@jest/types': optional: true babel-jest: @@ -8543,19 +8144,20 @@ packages: dependencies: '@babel/core': 7.23.9 bs-logger: 0.2.6 + ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.0 - typescript: 5.1.3 + semver: 7.6.3 + typescript: 5.6.3 yargs-parser: 21.1.1 dev: true - /ts-loader@9.4.3(typescript@5.1.3)(webpack@5.90.1): - resolution: {integrity: sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==} + /ts-loader@9.5.1(typescript@5.6.3)(webpack@5.94.0): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' @@ -8565,12 +8167,13 @@ packages: enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.6.0 - typescript: 5.1.3 - webpack: 5.90.1 + source-map: 0.7.4 + typescript: 5.6.3 + webpack: 5.94.0 dev: true - /ts-node@10.9.1(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-node@10.9.2(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -8588,14 +8191,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.3.1 + '@types/node': 22.7.5 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.3 + typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -8603,8 +8206,8 @@ packages: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} dev: true - /tsconfig-paths-webpack-plugin@4.0.1: - resolution: {integrity: sha512-m5//KzLoKmqu2MVix+dgLKq70MnFi8YL8sdzQZ6DblmCdfuq/y3OqvJd5vMndg2KEVCOeNz8Es4WVZhYInteLw==} + /tsconfig-paths-webpack-plugin@4.1.0: + resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} engines: {node: '>=10.13.0'} dependencies: chalk: 4.1.2 @@ -8629,12 +8232,12 @@ packages: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false - /tslib@2.5.3: - resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -8651,11 +8254,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -8684,8 +8282,14 @@ packages: hasBin: true dev: false - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true @@ -8703,25 +8307,14 @@ packages: dependencies: '@lukeed/csprng': 1.1.0 + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + /unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} dev: true - /unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - unique-slug: 3.0.0 - dev: false - - /unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - dev: false - /unique-stream@2.3.1: resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} dependencies: @@ -8762,31 +8355,9 @@ packages: engines: {node: '>= 0.4.0'} dev: false - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - dev: false - /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /v8-sandbox@3.2.10(debug@2.6.9): - resolution: {integrity: sha512-BIIohkY8ULJ63o084YCPMVItEurrH8HIiPufbTtI6AD9HXNnC6QmJTvN97CpvakRkSk0isK4a4diSmwVG2pyFQ==} - requiresBuild: true - dependencies: - async: 3.2.5 - axios: 1.7.5(debug@2.6.9) - bindings: 1.5.0 - lodash: 4.17.21 - nan: 2.19.0 - node-gyp: 9.4.1 - signal-exit: 4.1.0 - transitivePeerDependencies: - - bluebird - - debug - - supports-color - dev: false - /v8-to-istanbul@9.2.0: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} @@ -8849,8 +8420,8 @@ packages: dependencies: makeerror: 1.0.12 - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -8875,48 +8446,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.87.0: - resolution: {integrity: sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.22.3 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.87.0) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - - /webpack@5.90.1: - resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} + /webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -8925,16 +8456,15 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) + acorn-import-attributes: 1.9.5(acorn@8.11.3) browserslist: 4.22.3 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.4.1 eslint-scope: 5.1.1 events: 3.3.0 @@ -8946,8 +8476,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.1) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.94.0) + watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -8987,13 +8517,6 @@ packages: hasBin: true dev: false - /windows-release@4.0.0: - resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} - engines: {node: '>=10'} - dependencies: - execa: 4.1.0 - dev: true - /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -9011,6 +8534,15 @@ packages: strip-ansi: 3.0.1 dev: false + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -9026,7 +8558,6 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -9056,13 +8587,8 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - - /yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + /yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} engines: {node: '>= 14'} hasBin: true dev: false From ee2368cb1afc6a03a6b37eb60dde53fad81152da Mon Sep 17 00:00:00 2001 From: dev-callgent Date: Sun, 13 Oct 2024 22:52:18 +0800 Subject: [PATCH 5/5] chore(deps): update multiple versions Signed-off-by: dev-callgent --- commitlint.config.js | 23 +++++- package.json | 6 ++ pnpm-lock.yaml | 163 +++++++++++++++++++++++++++++++------------ 3 files changed, 146 insertions(+), 46 deletions(-) diff --git a/commitlint.config.js b/commitlint.config.js index 69b18d9..22530cb 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1 +1,22 @@ -module.exports = { extends: ['@commitlint/config-angular'] }; +module.exports = { + extends: ['@commitlint/config-angular'], + rules: { + 'type-enum': [ + 2, + 'always', + [ + 'build', + 'ci', + 'docs', + 'feat', + 'fix', + 'perf', + 'refactor', + 'revert', + 'style', + 'test', + 'chore', + ], + ], + }, +}; diff --git a/package.json b/package.json index 2a48b03..a6632ae 100644 --- a/package.json +++ b/package.json @@ -56,12 +56,14 @@ "braces": "^3.0.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", + "concat-stream": "1.6.2", "dot": "^1.1.3", "fastify": "4.26.2", "fastify-ip": "^1.1.0", "glob": "^10.4.5", "http-status": "^1.7.4", "jsonrepair": "^3.8.1", + "micromatch": ">=4.0.8", "module": "^1.2.5", "ms": "^2.1.3", "nanoid": "3.3.7", @@ -71,6 +73,7 @@ "nestjs-prisma": "^0.23.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", + "phin": "^3.7.1", "pino": "^9.4.0", "pino-http": "^10.3.0", "pino-pretty": "^11.2.2", @@ -102,15 +105,18 @@ "eslint": "^9.12.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", + "find-my-way": ">=8.2.2", "husky": "^9.1.6", "jest": "^29.7.0", "pactum": "^3.7.1", "pactum-matchers": "^1.1.7", + "path-to-regexp": ">=6.3.0", "prettier": "^3.3.3", "prisma": "^5.20.0", "source-map-support": "^0.5.21", "standard-version": "^9.5.0", "supertest": "^6.3.3", + "tar": "7.4.3", "ts-jest": "^29.2.5", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 785de06..4a0527d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,6 +76,9 @@ dependencies: class-validator: specifier: ^0.14.1 version: 0.14.1 + concat-stream: + specifier: 1.6.2 + version: 1.6.2 dot: specifier: ^1.1.3 version: 1.1.3 @@ -94,6 +97,9 @@ dependencies: jsonrepair: specifier: ^3.8.1 version: 3.8.1 + micromatch: + specifier: '>=4.0.8' + version: 4.0.8 module: specifier: ^1.2.5 version: 1.2.5 @@ -121,6 +127,9 @@ dependencies: passport-local: specifier: ^1.0.0 version: 1.0.0 + phin: + specifier: ^3.7.1 + version: 3.7.1(debug@2.6.9) pino: specifier: ^9.4.0 version: 9.4.0 @@ -210,6 +219,9 @@ devDependencies: eslint-plugin-prettier: specifier: ^5.2.1 version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3) + find-my-way: + specifier: '>=8.2.2' + version: 8.2.2 husky: specifier: ^9.1.6 version: 9.1.6 @@ -218,10 +230,13 @@ devDependencies: version: 29.7.0(@types/node@22.7.5)(ts-node@10.9.2) pactum: specifier: ^3.7.1 - version: 3.7.1 + version: 3.7.1(debug@2.6.9) pactum-matchers: specifier: ^1.1.7 version: 1.1.7 + path-to-regexp: + specifier: '>=6.3.0' + version: 6.3.0 prettier: specifier: ^3.3.3 version: 3.3.3 @@ -237,6 +252,9 @@ devDependencies: supertest: specifier: ^6.3.3 version: 6.3.3 + tar: + specifier: 7.4.3 + version: 7.4.3 ts-jest: specifier: ^29.2.5 version: 29.2.5(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.6.3) @@ -995,7 +1013,7 @@ packages: dependencies: '@fastify/error': 3.4.1 fastify-plugin: 4.5.1 - path-to-regexp: 6.2.1 + path-to-regexp: 6.3.0 reusify: 1.0.4 dev: false @@ -1089,6 +1107,13 @@ packages: wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + /@isaacs/fs-minipass@4.0.1: + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + dependencies: + minipass: 7.1.2 + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1147,7 +1172,7 @@ packages: jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 @@ -1285,7 +1310,7 @@ packages: jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 jest-util: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 @@ -2903,9 +2928,12 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /centra@2.6.0: - resolution: {integrity: sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==} - dev: true + /centra@2.7.0(debug@2.6.9): + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + dependencies: + follow-redirects: 1.15.6(debug@2.6.9) + transitivePeerDependencies: + - debug /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -2965,6 +2993,11 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + /chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + dev: true + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -3159,6 +3192,16 @@ packages: typedarray: 0.0.7 dev: false + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + /concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} @@ -3532,7 +3575,6 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: false /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -4048,7 +4090,6 @@ packages: /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4065,7 +4106,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 dev: true /fast-json-stable-stringify@2.1.0: @@ -4091,7 +4132,6 @@ packages: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} dependencies: fast-decode-uri-component: 1.0.1 - dev: false /fast-redact@3.3.0: resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} @@ -4126,7 +4166,7 @@ packages: avvio: 8.3.0 fast-content-type-parse: 1.1.0 fast-json-stringify: 5.12.0 - find-my-way: 8.1.0 + find-my-way: 8.2.2 light-my-request: 5.12.0 pino: 8.18.0 process-warning: 3.0.0 @@ -4191,14 +4231,13 @@ packages: dependencies: to-regex-range: 5.0.1 - /find-my-way@8.1.0: - resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==} + /find-my-way@8.2.2: + resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==} engines: {node: '>=14'} dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 - safe-regex2: 2.0.0 - dev: false + safe-regex2: 3.1.0 /find-node-modules@2.1.3: resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} @@ -4263,7 +4302,7 @@ packages: dependencies: detect-file: 1.0.0 is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.8 resolve-dir: 1.0.1 dev: true @@ -4294,7 +4333,6 @@ packages: optional: true dependencies: debug: 2.6.9 - dev: false /for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} @@ -4584,7 +4622,6 @@ packages: minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - dev: false /glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} @@ -5292,7 +5329,7 @@ packages: jest-runner: 29.7.0 jest-util: 29.7.0 jest-validate: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 parse-json: 5.2.0 pretty-format: 29.7.0 slash: 3.0.0 @@ -5355,7 +5392,7 @@ packages: jest-regex-util: 29.6.3 jest-util: 29.7.0 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -5385,7 +5422,7 @@ packages: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -6171,8 +6208,8 @@ packages: regex-cache: 0.4.4 dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.3 @@ -6273,6 +6310,14 @@ packages: minipass: 3.3.6 yallist: 4.0.0 + /minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -6285,6 +6330,12 @@ packages: engines: {node: '>=10'} hasBin: true + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: true + /mnemonist@0.39.6: resolution: {integrity: sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==} dependencies: @@ -6313,7 +6364,6 @@ packages: /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -6666,7 +6716,7 @@ packages: resolution: {integrity: sha512-RqwewcUje6vhcYQGbPfdSXkcp/Vtwn4WmmTWLSmqp0CGxBroCEqRg3JMIjkjQTZCd2VmG+tTcQw+n4P/iuqv3Q==} dev: true - /pactum@3.7.1: + /pactum@3.7.1(debug@2.6.9): resolution: {integrity: sha512-r+R1dMy2MfRCQpAHohMyICusiMz14t0E+bhnLDScl2x4lXJKQAvQUGV/WWKUUxN2DS0Jdm0PUj6KjblfcSk1GA==} engines: {node: '>=10'} dependencies: @@ -6679,8 +6729,10 @@ packages: openapi-fuzzer-core: 1.0.6 pactum-matchers: 1.1.7 parse-graphql: 1.0.0 - phin: 3.7.0 + phin: 3.7.1(debug@2.6.9) polka: 0.5.2 + transitivePeerDependencies: + - debug dev: true /parent-module@1.0.1: @@ -6811,9 +6863,8 @@ packages: /path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - /path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: false + /path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} /path-type@1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} @@ -6848,13 +6899,13 @@ packages: through2: 2.0.5 dev: false - /phin@3.7.0: - resolution: {integrity: sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg==} + /phin@3.7.1(debug@2.6.9): + resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} engines: {node: '>= 8'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: - centra: 2.6.0 - dev: true + centra: 2.7.0(debug@2.6.9) + transitivePeerDependencies: + - debug /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -7396,10 +7447,9 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 - /ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} - dev: false + /ret@0.4.3: + resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} + engines: {node: '>=10'} /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -7411,11 +7461,19 @@ packages: /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 dev: false + /rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + dependencies: + glob: 10.4.5 + dev: true + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -7450,11 +7508,10 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + /safe-regex2@3.1.0: + resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} dependencies: - ret: 0.2.2 - dev: false + ret: 0.4.3 /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} @@ -7901,6 +7958,18 @@ packages: mkdirp: 1.0.4 yallist: 4.0.0 + /tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + dev: true + /terser-webpack-plugin@5.3.10(webpack@5.94.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -8165,7 +8234,7 @@ packages: dependencies: chalk: 4.1.2 enhanced-resolve: 5.15.0 - micromatch: 4.0.5 + micromatch: 4.0.8 semver: 7.6.0 source-map: 0.7.4 typescript: 5.6.3 @@ -8270,7 +8339,6 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true /typedarray@0.0.7: resolution: {integrity: sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==} @@ -8587,6 +8655,11 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + dev: true + /yaml@2.6.0: resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} engines: {node: '>= 14'}