From 62c34ba1029f8a1ad689956d77dbcbec29367897 Mon Sep 17 00:00:00 2001 From: anishghale007 Date: Mon, 19 May 2025 14:10:55 +0545 Subject: [PATCH 1/2] structured output for card gen added --- src/card_gen/generate_cards.ts | 7 +- src/schema/card_gen/card_gen_schema.ts | 129 +++++++++++++++++++++++++ src/services/open_ai_service.ts | 42 +++++--- src/utils/parse_openai_response.ts | 14 ++- 4 files changed, 174 insertions(+), 18 deletions(-) create mode 100644 src/schema/card_gen/card_gen_schema.ts diff --git a/src/card_gen/generate_cards.ts b/src/card_gen/generate_cards.ts index d752a65..097eb7b 100644 --- a/src/card_gen/generate_cards.ts +++ b/src/card_gen/generate_cards.ts @@ -1,5 +1,6 @@ import { ErrorLogger } from "../logger"; import { ParseCardResponse } from "../parse/parse_card_response"; +import { cardGenSchema } from "../schema/card_gen/card_gen_schema"; import { OpenAiService } from "../services/open_ai_service"; import { GeneratedCardResponseType } from "../types/raw_card_response_types/generated_card_response_type"; import { SourceTaxonomy } from "../types/source_taxonomy_type"; @@ -18,10 +19,14 @@ export class GenerateCards { n: number = 0 ) { try { + const schema = cardGenSchema; let response = await this.openAiService?.sendRequest( prompt, - parsedContent + parsedContent, + schema, + "test_cards" ); + var updatedNumber = n + 1; response.metadata = { req_time: response.generated_at ?? new Date(), diff --git a/src/schema/card_gen/card_gen_schema.ts b/src/schema/card_gen/card_gen_schema.ts new file mode 100644 index 0000000..da34ceb --- /dev/null +++ b/src/schema/card_gen/card_gen_schema.ts @@ -0,0 +1,129 @@ + const cardGenSchema = { + type: "function", + function: { + name: "generate_cards", + parameters: { + type: "object", + properties: { + test_cards: { + type: "array", + items: { + type: "object", + properties: { + type: { + type: "string", + enum: ["flash", "match", "mcq", "cloze"], + }, + card_content: { + anyOf: [ + // Flash Card + { + type: "object", + properties: { + front: { type: "string" }, + back: { type: "string" }, + explanation: { type: ["string", "null"] }, + }, + required: ["front", "back", "explanation"], + additionalProperties: false, + }, + // Match Card + { + type: "object", + properties: { + pairs: { + type: "array", + items: { + type: "object", + properties: { + left_item: { type: "string" }, + right_item: { type: "string" }, + }, + required: ["left_item", "right_item"], + additionalProperties: false, + }, + }, + }, + required: ["pairs"], + additionalProperties: false, + }, + // Cloze Card + { + type: "object", + properties: { + prompt: { type: "string" }, + correct_options: { + type: "array", + items: { type: "string" }, + }, + incorrect_options: { + type: "array", + items: { type: "string" }, + }, + explanation: { type: ["string", "null"] }, + }, + required: [ + "prompt", + "correct_options", + "incorrect_options", + "explanation", + ], + additionalProperties: false, + }, + // MCQ Card + { + type: "object", + properties: { + prompt: { type: "string" }, + explanation: { type: ["string", "null"] }, + choices: { + type: "array", + items: { + type: "object", + properties: { + choice: { type: "string" }, + is_correct: { type: "boolean" }, + }, + required: ["choice", "is_correct"], + additionalProperties: false, + }, + }, + }, + required: ["prompt", "choices", "explanation"], + additionalProperties: false, + }, + ], + }, + concepts: { + type: "array", + items: { type: "string" }, + }, + facts: { + type: "array", + items: { type: "string" }, + }, + bloom_level: { + type: "number", + enum: [1, 2, 3, 4, 5], + }, + }, + required: [ + "type", + "card_content", + "concepts", + "facts", + "bloom_level", + ], + additionalProperties: false, + }, + }, + }, + required: ["test_cards"], + additionalProperties: false, + }, + }, +}; + +export { cardGenSchema }; + + diff --git a/src/services/open_ai_service.ts b/src/services/open_ai_service.ts index dca33fe..de7d41d 100644 --- a/src/services/open_ai_service.ts +++ b/src/services/open_ai_service.ts @@ -17,7 +17,12 @@ export class OpenAiService { this.model = model; } - async sendRequest(prompt: string, content: string) { + async sendRequest( + prompt: string, + content: string, + schema?: any, + fieldName?: string + ) { try { let message = [ { @@ -29,25 +34,32 @@ export class OpenAiService { content: content, }, ]; + const url = openAiEndPoint(); - let response = await axios.post( - url, - { - model: this.model, - messages: message, - response_format: { type: "json_object" }, + + const requestBody: any = { + model: this.model, + messages: message, + response_format: { type: "json_object" }, + }; + + if (schema) { + requestBody.tools = [schema]; + } + + let response = await axios.post(url, requestBody, { + headers: { + Authorization: "Bearer " + this.api_key, + "Content-Type": ["application/json"], }, - { - headers: { - Authorization: "Bearer " + this.api_key, - "Content-Type": ["application/json"], - }, - } - ); + }); if (response.status == 200) { console.log("success"); - return parseOpenAiSuccessResponse(response.data) as any; + return parseOpenAiSuccessResponse( + response.data, + schema, + ) as any; } else { console.log("failed"); return response.statusText as any; diff --git a/src/utils/parse_openai_response.ts b/src/utils/parse_openai_response.ts index 557fbe4..6769f70 100644 --- a/src/utils/parse_openai_response.ts +++ b/src/utils/parse_openai_response.ts @@ -1,5 +1,15 @@ -export function parseOpenAiSuccessResponse(responseData: any) { - let choices = JSON.parse(responseData.choices[0].message.content); +export function parseOpenAiSuccessResponse( + responseData: any, + containsSchema: boolean = false +) { + let choices: any = []; + if (containsSchema) { + choices = JSON.parse( + responseData.choices[0].message.tool_calls[0].function.arguments + ); + } else { + choices = JSON.parse(responseData.choices[0].message.content); + } let usuage = responseData.usage; let createdTime = responseData.created; return { From b871252c1660adaa38a668e662fd1b8c4b6a43d8 Mon Sep 17 00:00:00 2001 From: anishghale007 Date: Mon, 26 May 2025 15:02:06 +0545 Subject: [PATCH 2/2] schema added for typology generation --- dist/card_gen/generate_cards.d.ts.map | 2 +- dist/card_gen/generate_cards.js | 4 +- dist/card_gen/generate_cards.js.map | 2 +- dist/constants/prompt_data.d.ts | 4 - dist/constants/prompt_data.js | 303 --- dist/constants/prompt_data.js.map | 1 - dist/constants/source_data.d.ts | 171 -- dist/constants/source_data.js | 974 -------- dist/constants/source_data.js.map | 1 - dist/helper/qdrant_db_methods.d.ts.map | 2 +- dist/parse/response_format_card.d.ts | 176 -- dist/parse/response_format_card.js | 372 --- dist/parse/response_format_card.js.map | 1 - dist/parse/response_format_typology.d.ts | 1 - dist/parse/response_format_typology.js | 47 - dist/parse/response_format_typology.js.map | 1 - dist/schema/card_gen/card_gen_schema.d.ts | 158 ++ dist/schema/card_gen/card_gen_schema.d.ts.map | 1 + dist/schema/card_gen/card_gen_schema.js | 130 + dist/schema/card_gen/card_gen_schema.js.map | 1 + .../typology_gen/typology_gen_schema.d.ts | 67 + .../typology_gen/typology_gen_schema.d.ts.map | 1 + .../typology_gen/typology_gen_schema.js | 54 + .../typology_gen/typology_gen_schema.js.map | 1 + dist/services/open_ai_service.d.ts | 2 +- dist/services/open_ai_service.d.ts.map | 2 +- dist/services/open_ai_service.js | 12 +- dist/services/open_ai_service.js.map | 2 +- dist/typology_gen/generate_typology.d.ts.map | 2 +- dist/typology_gen/generate_typology.js | 4 +- dist/typology_gen/generate_typology.js.map | 2 +- dist/utils/parse_openai_response.d.ts | 2 +- dist/utils/parse_openai_response.d.ts.map | 2 +- dist/utils/parse_openai_response.js | 10 +- dist/utils/parse_openai_response.js.map | 2 +- package-lock.json | 2207 +++++++++++++++-- package.json | 5 +- src/card_gen/generate_cards.ts | 1 - .../typology_gen/typology_gen_schema.ts | 51 + src/services/open_ai_service.ts | 1 - src/typology_gen/generate_typology.ts | 6 +- 41 files changed, 2552 insertions(+), 2236 deletions(-) delete mode 100644 dist/constants/prompt_data.d.ts delete mode 100644 dist/constants/prompt_data.js delete mode 100644 dist/constants/prompt_data.js.map delete mode 100644 dist/constants/source_data.d.ts delete mode 100644 dist/constants/source_data.js delete mode 100644 dist/constants/source_data.js.map delete mode 100644 dist/parse/response_format_card.d.ts delete mode 100644 dist/parse/response_format_card.js delete mode 100644 dist/parse/response_format_card.js.map delete mode 100644 dist/parse/response_format_typology.d.ts delete mode 100644 dist/parse/response_format_typology.js delete mode 100644 dist/parse/response_format_typology.js.map create mode 100644 dist/schema/card_gen/card_gen_schema.d.ts create mode 100644 dist/schema/card_gen/card_gen_schema.d.ts.map create mode 100644 dist/schema/card_gen/card_gen_schema.js create mode 100644 dist/schema/card_gen/card_gen_schema.js.map create mode 100644 dist/schema/typology_gen/typology_gen_schema.d.ts create mode 100644 dist/schema/typology_gen/typology_gen_schema.d.ts.map create mode 100644 dist/schema/typology_gen/typology_gen_schema.js create mode 100644 dist/schema/typology_gen/typology_gen_schema.js.map create mode 100644 src/schema/typology_gen/typology_gen_schema.ts diff --git a/dist/card_gen/generate_cards.d.ts.map b/dist/card_gen/generate_cards.d.ts.map index 6a42c9b..8169e13 100644 --- a/dist/card_gen/generate_cards.d.ts.map +++ b/dist/card_gen/generate_cards.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"generate_cards.d.ts","sourceRoot":"","sources":["../../src/card_gen/generate_cards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,aAAa;IACxB,aAAa,EAAE,aAAa,CAAC;gBACjB,aAAa,EAAE,aAAa;IAIlC,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,cAAc,EACxB,CAAC,GAAE,MAAU;CA8DhB"} \ No newline at end of file +{"version":3,"file":"generate_cards.d.ts","sourceRoot":"","sources":["../../src/card_gen/generate_cards.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,aAAa;IACxB,aAAa,EAAE,aAAa,CAAC;gBACjB,aAAa,EAAE,aAAa;IAIlC,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,cAAc,EACxB,CAAC,GAAE,MAAU;CAiEhB"} \ No newline at end of file diff --git a/dist/card_gen/generate_cards.js b/dist/card_gen/generate_cards.js index 0c7573f..5931426 100644 --- a/dist/card_gen/generate_cards.js +++ b/dist/card_gen/generate_cards.js @@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.GenerateCards = void 0; const logger_1 = require("../logger"); const parse_card_response_1 = require("../parse/parse_card_response"); +const card_gen_schema_1 = require("../schema/card_gen/card_gen_schema"); class GenerateCards { constructor(openAiService) { this.openAiService = openAiService; @@ -20,7 +21,8 @@ class GenerateCards { return __awaiter(this, arguments, void 0, function* (prompt, parsedContent, isGapFill, taxonomy, n = 0) { var _a, _b, _c, _d, _e, _f; try { - let response = yield ((_a = this.openAiService) === null || _a === void 0 ? void 0 : _a.sendRequest(prompt, parsedContent)); + const schema = card_gen_schema_1.cardGenSchema; + let response = yield ((_a = this.openAiService) === null || _a === void 0 ? void 0 : _a.sendRequest(prompt, parsedContent, schema)); var updatedNumber = n + 1; response.metadata = { req_time: (_b = response.generated_at) !== null && _b !== void 0 ? _b : new Date(), diff --git a/dist/card_gen/generate_cards.js.map b/dist/card_gen/generate_cards.js.map index ae043d0..320d472 100644 --- a/dist/card_gen/generate_cards.js.map +++ b/dist/card_gen/generate_cards.js.map @@ -1 +1 @@ -{"version":3,"file":"generate_cards.js","sourceRoot":"","sources":["../../src/card_gen/generate_cards.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAwC;AACxC,sEAAiE;AAKjE,MAAa,aAAa;IAExB,YAAY,aAA4B;QACtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEK,aAAa;6DACjB,MAAc,EACd,aAAqB,EACrB,SAAkB,EAClB,QAAwB,EACxB,IAAY,CAAC;;YAEb,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,WAAW,CAClD,MAAM,EACN,aAAa,CACd,CAAA,CAAC;gBACF,IAAI,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,GAAG;oBAClB,QAAQ,EAAE,MAAA,QAAQ,CAAC,YAAY,mCAAI,IAAI,IAAI,EAAE;oBAC7C,QAAQ,EAAE;wBACR,IAAI,EAAE,OAAO;wBACb,CAAC,EAAE,aAAa;wBAChB,WAAW,EAAE,CAAC;qBACf;oBACD,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,aAAa;oBAC9C,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,iBAAiB;oBAClD,qBAAqB,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,qBAAqB;oBACjE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;iBAChC,CAAC;gBAEF,IAAI,QAAQ,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC;oBAChC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;oBACvC,qCAAqC;oBACrC,MAAM,cAAc,GAA8B;wBAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,iBAAiB,EAAE;4BACjB,UAAU,EAAE,CAAC,MAAA,QAAQ,CAAC,iBAAiB,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,GAAG,CAC3D,CAAC,IAAS,EAAE,EAAE;;gCACZ,OAAO;oCACL,IAAI,EAAE,IAAI,CAAC,IAAI;oCACf,YAAY,EAAE,IAAI,CAAC,YAAY;oCAC/B,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE;oCAC7B,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE;oCACvB,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC;iCACnC,CAAC;4BACJ,CAAC,CACF;yBACF;wBACD,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;qBAClC,CAAC;oBACF,IAAI,SAAS,GAAG,IAAI,uCAAiB,EAAE,CAAC,KAAK,CAC3C,cAAc,EACd,SAAS,EACT,QAAQ,EACR,CAAC,CACF,CAAC;oBACF,OAAO,SAAS,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACpC,QAAQ,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;oBACjD,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,oBAAW,CAAC;oBACd,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,CAAC,CAAC,OAAO;iBAChB,CAAC,CAAC,GAAG,EAAE,CAAC;YACX,CAAC;QACH,CAAC;KAAA;CACF;AAzED,sCAyEC"} \ No newline at end of file +{"version":3,"file":"generate_cards.js","sourceRoot":"","sources":["../../src/card_gen/generate_cards.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAwC;AACxC,sEAAiE;AACjE,wEAAmE;AAKnE,MAAa,aAAa;IAExB,YAAY,aAA4B;QACtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEK,aAAa;6DACjB,MAAc,EACd,aAAqB,EACrB,SAAkB,EAClB,QAAwB,EACxB,IAAY,CAAC;;YAEb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,+BAAa,CAAC;gBAC7B,IAAI,QAAQ,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,WAAW,CAClD,MAAM,EACN,aAAa,EACb,MAAM,CACP,CAAA,CAAC;gBAEF,IAAI,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,GAAG;oBAClB,QAAQ,EAAE,MAAA,QAAQ,CAAC,YAAY,mCAAI,IAAI,IAAI,EAAE;oBAC7C,QAAQ,EAAE;wBACR,IAAI,EAAE,OAAO;wBACb,CAAC,EAAE,aAAa;wBAChB,WAAW,EAAE,CAAC;qBACf;oBACD,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,aAAa;oBAC9C,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,iBAAiB;oBAClD,qBAAqB,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,qBAAqB;oBACjE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;iBAChC,CAAC;gBAEF,IAAI,QAAQ,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC;oBAChC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;oBACvC,qCAAqC;oBACrC,MAAM,cAAc,GAA8B;wBAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,iBAAiB,EAAE;4BACjB,UAAU,EAAE,CAAC,MAAA,QAAQ,CAAC,iBAAiB,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,GAAG,CAC3D,CAAC,IAAS,EAAE,EAAE;;gCACZ,OAAO;oCACL,IAAI,EAAE,IAAI,CAAC,IAAI;oCACf,YAAY,EAAE,IAAI,CAAC,YAAY;oCAC/B,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE;oCAC7B,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE;oCACvB,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC;iCACnC,CAAC;4BACJ,CAAC,CACF;yBACF;wBACD,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;qBAClC,CAAC;oBACF,IAAI,SAAS,GAAG,IAAI,uCAAiB,EAAE,CAAC,KAAK,CAC3C,cAAc,EACd,SAAS,EACT,QAAQ,EACR,CAAC,CACF,CAAC;oBACF,OAAO,SAAS,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACpC,QAAQ,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;oBACjD,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,oBAAW,CAAC;oBACd,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,CAAC,CAAC,OAAO;iBAChB,CAAC,CAAC,GAAG,EAAE,CAAC;YACX,CAAC;QACH,CAAC;KAAA;CACF;AA5ED,sCA4EC"} \ No newline at end of file diff --git a/dist/constants/prompt_data.d.ts b/dist/constants/prompt_data.d.ts deleted file mode 100644 index d0b8b80..0000000 --- a/dist/constants/prompt_data.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function returnPromptData(): { - typology: string; - card_generation: string; -}; diff --git a/dist/constants/prompt_data.js b/dist/constants/prompt_data.js deleted file mode 100644 index c185a0f..0000000 --- a/dist/constants/prompt_data.js +++ /dev/null @@ -1,303 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.returnPromptData = returnPromptData; -const card_gen_prompt_1 = require("./prompts/card_gen_prompt"); -const typology_prompt_1 = require("./prompts/typology_prompt"); -const promptData = { - typology: { - role: ` - As a dedicated assistant at a learning company, your role involves analyzing educational content to categorize and summarize it. You will process content (in JSON format) that represents text and images from diverse sources such as PDFs, book chapters, videos, and websites. Follow these steps: - - 1. Classify the content into one to three predefined fields of knowledge. - 2. Extract key concepts within the content. - 3. Extract concrete facts that are relevant to the subject and referenced in the content. - 4. Decide whether the identified concepts and facts should be used to generate learning materials like flashcards based on their educational value. - 5. If the generate_cards is true then summarize the content using a series of summary cards. - - Please format your findings in this JSON schema: - { - "field": ["primary_field", "secondary_field", "tertiary_field"], - "concepts": ["concept1", "concept2", "concept3", "..."], - "facts": ["fact1", "fact2", "fact3", "..."], - "generate_cards": { - "state": true or false, - "false_reason": "reason for marking the source as false. Leave empty for true." - }, - "summary_cards": ["summary_card1", "summary_card2", "summary_card3", "..."] - } - - - Further instruction on how to perform these tasks are below. - `, - fields: ` - Every source must be placed under a field. This is the broadest category of knowledge. A source should belong to at least one and at most 3 fields. Only include fields that a source is strongly associated with. The field names in your response must exactly match the names of 18 fields listed below. - - 1. Sciences: Focus on Biology, Chemistry, Physics, Astronomy, Mathematics, and Computer Science. - 2. Technology & Engineering: Emphasize Information Technology, Engineering disciplines, AI, and Robotics. - 3. Humanities & Cultural Studies: Highlight History, Literature, Languages, Arts, Philosophy, and Anthropological Studies. - 4. Social Sciences & Global Studies: Include Sociology, Psychology, Economics, Political Science, Anthropology, and International Relations. - 5. Business & Management: Encompass Entrepreneurship, Marketing, Finance, Leadership, and Ethics. - 6. Health & Medicine: Cover Medical Sciences, Public Health, Nutrition, Wellness, and Mental Health. - 7. Environmental Studies & Earth Sciences: Discuss Ecology, Climate Science, Geology, and Environmental Policy. - 8. Education, Learning & Personal Development: Talk about Educational Theories, Teaching Methods, and Personal Skills. - 9. Creative & Performing Arts: Include Visual Arts, Music, Theater, Dance, and Design Principles. - 10. Law, Governance & Ethics: Focus on Legal Studies, Public Administration, Policy Analysis, and Ethical Decision-Making. - 11. Recreation, Lifestyle & Practical Skills: Highlight Hobbies, Sports, Travel, Lifestyle Choices, and Practical Skills. - 12. Technology & Media Literacy: Discuss Digital Literacy, Media Studies, and the Impact of Digital Media. - 13. Philosophy & Critical Thinking: Emphasize Moral Philosophy, Ethical Frameworks, and Critical Thinking. - 14. Space & Astronomical Sciences: Focus on Space Exploration, Astronomy, and Astrophysics. - 15. Agriculture & Food Sciences: Discuss Sustainable Farming, Food Technology, and Nutrition. - 16. Trades & Craftsmanship: Cover Hands-on Skills in Trades and Crafts. - 17. Reference & Indexing: Include Summaries, Timelines, Directories, Glossaries, Bibliographies, and other Reference Material. - 18. Other: Use for content that doesn’t fit into the above categories. - `, - concepts: ` - Extract key concepts within the content after classifying the field. Please be as exhaustive as possible. - - Definition of a Concept: Concepts are fundamental ideas that form the basis of knowledge in any discipline. They help organize and explain information, making it accessible and relatable. - Inclusion Criteria: Include a concept only if it is discussed in detail, meaning it is explained thoroughly, tied to specific examples, or highlighted as a critical part of the subject matter. - List the concepts in the following JSON format: - - { - "concepts": - [ - "concept1", - "concept2", - "concept3", - "..." - ] - } - `, - facts: ` - After classifying the content and identifying key concepts, proceed to extract and list verifiable facts. - - Definition of a Fact: Ensure each fact is a standalone piece of information that is concrete and can be independently verified. - Selection Criteria: Choose facts based on their significance to the content's main themes or concepts, their educational value, or their foundational role in the subject. - Record the facts in the following JSON format: - - { - "facts": ["fact1", "fact2", "fact3", "..."] - } - `, - generate: ` - After analyzing the content, classifying its field, and identifying key concepts, and facts, assess whether the discovered elements warrant the creation of testing materials. Consider if these elements provide significant educational value to an average learner by enhancing understanding, offering practical applications, or supporting crucial educational goals. If you decide that testing cards don't need to be generated then please provide a reason in less than 90 characters. - - Value Assessment: Determine if the concepts and facts are essential for understanding the broader topic, are likely to be used in practical scenarios, or help in achieving educational benchmarks. - Criteria for Material Generation: Generate testing materials if the concepts and facts are central to the content, have broad applicability, and are likely to reinforce or expand the learner’s knowledge significantly. - Make your decision using this criterion and reflect it in the JSON format as follows: - - "generate_cards": - { state: true or false, - false_reason: "reason for marking the source as false. Leave empty for true." - } - `, - summarize: ` - After analyzing the content, identifying key concepts, and facts, summarize the material using a series of engaging and informative cards. These cards should capture the essence of the content while highlighting the critical concepts and facts that you previously identified. - - Inclusion Criteria: The generate_cards should be true. Return an empty array if the generate_cards is false. - Summarization Objective: Each card is a step in a journey through the content. The series should collectively summarize the source while emphasizing important learning points. - Character Limit: Maintain a limit of 320 characters per card to ensure each message is concise yet informative. - Engagement and Flow: Write in an engaging style that maintains the user’s interest. Arrange the cards in a logical order that reflects the flow of the original content. - Format your output in JSON as follows: - - { - "summary_cards": ["summary_card1", "summary_card2", "summary_card3", "..."] - } - `, - }, - card_generation: { - role: ` - As a dedicated assistant at a learning company, your role is to analyze educational content and create test cards that help learners understand and remember key concepts and facts. You will be provided with: - - 1. Title of the source - 2. Main headings - 3. The content - 4. The field of knowledge it belongs - 5. Key concepts in the source - 6. Important facts in the source. - 7. Summary of the content using cards - - Follow these steps: - - 1. Analyze the content to identify any key concepts missing from the provided list. - 2. Analyze the content to identify any important facts missing from the provided list. - 3. Generate test cards for each concept and fact, tethered to either the entire source or specific headings. - 4. Ensure all concepts and facts have at least one test card. - - Please format your response in the following format. - - "missing_concepts": ["concept1", "concept2", "concept3", "..."], - "missing_facts": ["fact1", "fact2", "fact3", "..."], - "test_cards": [ - { - "type": "flash" | "mcq" | "cloze" | "match", - "card_content": { "front": "...", "back": "..." | "prompt": "...", "choices": [ ... ] | "prompt": "...", "options": [ ... ] | "...": "...", "....": "..." }, - "card_reference": "source_title#heading", - "concepts": ["Concept1", "Concept2", "..."], - "facts": ["Fact1", "Fact2", "..."], - "bloom_level": <1-5> - } - ] - **Criteria** - • Atleast one test card must be generated. - • Each test card must include at least one concept or fact. - • Each test card must include bloom_level. - • Flashcards must not exceed 15% of the total number of cards. - • Each concept and fact must have at least one test card. - - Further instructions are provided below. - `, - concepts: ` - You are provided with a list of identified concepts. Review this list and the content to determine if any concepts are missing. - - 1. **Definition of a Concept**: Concepts are fundamental ideas that form the basis of knowledge in any discipline. They help organize and explain information, making it accessible and relatable. - 2. **Inclusion Criteria**: Include a concept only if it has not been previously included in the list provided to you. - - List the concepts in the following JSON format: - { - "missing_concepts": - [ - "concept1", - "concept2", - "concept3", - "..." - ] - } - `, - facts: ` - You are provided with a list of identified facts. Review this list and the content to determine if any facts are missing. - - 1. **Definition of a Fact**: Standalone information that is concrete and independently verifiable. - 2. **Selection Criteria**: Choose facts based on their significance to the content's main themes or concepts, their educational value, or their foundational role in the subject. Only inlcude those that have not present in the list provided to you. - - Record the facts in the following JSON format: - { - "missing_facts": ["fact1", "fact2", "fact3", "..."] - } - `, - card_gen: ` - After you have the complete list of concepts and facts, including any missing ones you identified, proceed to generate test cards for each. - - 1. Clarity: Ensure the test content is clear and unambiguous. - 2. Specificity: Be specific about what you are asking. Avoid vague or overly broad questions or prompts. - 3. Simplicity: Use simple and direct language. Avoid complex sentences or jargon unless testing understanding of that jargon. - 4. Relevance: Ensure the test content is directly related to the key concepts or facts you want to test. - - Include the following property for each card: - - bloom_level: Indicate the level of Bloom’s Taxonomy the card corresponds to (from level 1 to level 5). Ensure that you produce a balanced number of cards across all levels, focusing on levels 1 through 5. Aim for a diverse range of cognitive challenges. - - Make sure to include this field in each card. - Ensure that you produce at least one card for each concept and fact. Do not skip any concepts or facts, and be thorough in your coverage. Cards should span across different levels of Bloom’s Taxonomy, from level 1 (Remembering) to level 5 (Evaluating), but exclude level 6 (Creating). - - Test cards must be one of the following types: - - 1. Flashcards: Have a front and back. - - json: - { - "type": "flash", - "card_content": { - "front": "", - "back": "" - }, - "card_reference": "source_title#heading", - "concepts": ["Concept1", "Concept2", "..."], - "facts": ["Fact1", "Fact2", "..."], - "bloom_level": <1-5> - } - - - Each side must not exceed 300 characters. - 2. Multiple Choice Questions (MCQ): Provide multiple choices to pick from. One or more should be correct. - - json: - { - "type": "mcq", - "card_content": { - "prompt": "", - "choices": [ - {"choice": "choice 1", "is_correct": true or false}, - {"choice": "choice 2", "is_correct": true or false}, - "... up to 8 choices" - ] - }, - "card_reference": "source_title#heading", - "concepts": ["Concept1", "Concept2", "..."], - "facts": ["Fact1", "Fact2", "..."], - "bloom_level": <1-5> - } - - • Minimum choices required: 2 - • Maximum choices allowed: 8 - • Minimum correct choices required: 1 - • Maximum character length for the prompt: 320 - • Maximum character length for each choice: 42 - - 3. Cloze: A test card where a portion of text is masked for the learner to identify from the provided options. Use double curly braces {{c: cloze_text}} to indicate a cloze, where n is the index number of the cloze (starting from 0) and cloze_text is the word or phrase being clozed. - - json - { - "type": "cloze", - "card_content": { - "prompt": "Accidentals in music denote {{c0:notes}} that do not belong to the {{c1:scale}} or {{c2:mode}} indicated by the key signature.", - "options": [ - {"option": "notes", "cloze": "c0"}, - {"option": "scale", "cloze": "c1"}, - {"option": "mode", "cloze": "c2"}, - {"option": "chords", "cloze": "null"}, - "... up to 8 choices" - ] - }, - "card_reference": "source_title#heading", - "concepts": ["Concept1", "Concept2", "..."], - "facts": ["Fact1", "Fact2", "..."], - "bloom_level": <1-5> - } - - • Minimum choices required: 2 - • Maximum choices allowed: 8 - • Minimum correct choices required: 1 - • Maximum character length for the prompt: 320 - • Maximum character length for an individual cloze: 90 - - 4. Match: Pairing items. - - json - { - "type": "match", - "card_content": { - "left_choice 1": "right_choice 1", - "left_choice 2": "right_choice 2", - "... up to 8 total pairs" - }, - "card_reference": "source_title#heading", - "concepts": ["Concept1", "Concept2", "..."], - "facts": ["Fact1", "Fact2", "..."], - "bloom_level": <1-5> - } - - • Maximum character length for each item in a pair: 42 - `, - reference: `Each test card needs a reference. A reference can either be the entire source or a specific heading in the source. Whenever possible, pick a main heading to direct the user to the most relevant part of the source material. The reference schema is as follows: source_title#main_heading, where #main_heading is optional.`, - checkcoverage: `Once you are done generating the test cards. Go back and evaulate the full list of concepts and fact that include any of the missing concepts or facts along with the list that was provided as the input. - - Are there any concept or fact that don't have a test card yet? If yes, go back and create one. - - Once you are done creating come back to this step again to check if you have full coverage of all the concepts and facts in the source. You can stop generating test questions once you achieve full coverage. - - Once you are done generating the test cards, review the full list of concepts and facts, including any missing ones you identified. - - 1. Ensure every concept and fact has at least one test card (if not more). - 2. If any concept or fact is missing a test card, create one for it. - 3. Repeat this step until all concepts and facts are covered. - - Only stop generating test questions once you believe there is sufficient testing material for learners to fully understand the concepts and remember the facts. The same concept or fact can have multiple test cards, so continue creating test cards until you are confident that there are enough for learners to fully grasp the source material.`, - }, -}; -function returnPromptData() { - return { - typology: (0, typology_prompt_1.returnTypologyPrompt)(), - card_generation: (0, card_gen_prompt_1.returnCardGenPrompt)(), - }; -} -//# sourceMappingURL=prompt_data.js.map \ No newline at end of file diff --git a/dist/constants/prompt_data.js.map b/dist/constants/prompt_data.js.map deleted file mode 100644 index 5834f94..0000000 --- a/dist/constants/prompt_data.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prompt_data.js","sourceRoot":"","sources":["../../src/constants/prompt_data.ts"],"names":[],"mappings":";;AAuSA,4CAKC;AA5SD,+DAAgE;AAChE,+DAAiE;AAEjE,MAAM,UAAU,GAAQ;IACtB,QAAQ,EAAE;QACR,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;SAuBD;QACL,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;SAqBH;QACL,QAAQ,EAAE;;;;;;;;;;;;;;;;SAgBL;QACL,KAAK,EAAE;;;;;;;;;;SAUF;QACL,QAAQ,EAAE;;;;;;;;;;;SAWL;QACL,SAAS,EAAE;;;;;;;;;;;;SAYN;KACN;IACD,eAAe,EAAE;QACf,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAwCD;QACL,QAAQ,EAAE;;;;;;;;;;;;;;;;SAgBL;QACL,KAAK,EAAE;;;;;;;;;;SAUF;QACL,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAsGL;QACL,SAAS,EAAE,gUAAgU;QAC3U,aAAa,EAAE;;;;;;;;;;;;0VAYuU;KACvV;CACF,CAAC;AAEF,SAAgB,gBAAgB;IAC9B,OAAO;QACL,QAAQ,EAAE,IAAA,sCAAoB,GAAE;QAChC,eAAe,EAAE,IAAA,qCAAmB,GAAE;KACvC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/constants/source_data.d.ts b/dist/constants/source_data.d.ts deleted file mode 100644 index 028e28b..0000000 --- a/dist/constants/source_data.d.ts +++ /dev/null @@ -1,171 +0,0 @@ -export declare function returnFields(): string[]; -export declare function returnSourceData(): { - type: string; - title: string; - headings: string[]; - content: ({ - block_type: string; - img_src: string; - img_caption: string; - content?: undefined; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: string; - img_src?: undefined; - img_caption?: undefined; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: string; - heading_level: number; - children: ({ - block_type: string; - img_src: string; - img_caption: string; - content?: undefined; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: string; - img_src?: undefined; - img_caption?: undefined; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: { - block_type: string; - list_type: string; - marker: string; - content: string; - }[]; - img_src?: undefined; - img_caption?: undefined; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: string; - heading_level: number; - children: { - block_type: string; - content: string; - heading_level: number; - children: { - block_type: string; - content: string; - }[]; - }[]; - img_src?: undefined; - img_caption?: undefined; - })[]; - img_src?: undefined; - img_caption?: undefined; - } | { - block_type: string; - content: string; - heading_level: number; - children: ({ - block_type: string; - content: string; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: { - block_type: string; - list_type: string; - marker: string; - content: string; - }[]; - heading_level?: undefined; - children?: undefined; - } | { - block_type: string; - content: string; - heading_level: number; - children: ({ - block_type: string; - img_src: string; - img_caption: string; - content?: undefined; - } | { - block_type: string; - content: string; - img_src?: undefined; - img_caption?: undefined; - })[]; - })[]; - img_src?: undefined; - img_caption?: undefined; - })[]; - fields: string[]; -}; -export declare function returnHeadings(): string[]; -export declare function returnCardResponse(): { - status_code: number; - metadata: {}; - usage_data: { - prompt_tokens: number; - completion_tokens: number; - total_tokens: number; - }; - generated_content: { - test_cards: ({ - type: string; - card_content: { - prompt: string; - choices: { - choice: string; - is_correct: boolean; - }[]; - options?: undefined; - }; - concepts: { - concept_text: string; - reference: string; - }[]; - facts: { - fact_text: string; - reference: string; - }[]; - bloom_level: number; - } | { - type: string; - card_content: { - prompt: string; - options: { - option: string; - cloze: string; - }[]; - choices?: undefined; - }; - concepts: { - concept_text: string; - reference: string; - }[]; - facts: { - fact_text: string; - reference: string; - }[]; - bloom_level: number; - } | { - type: string; - card_content: { - left_item: string; - right_item: string[]; - }[]; - concepts: { - concept_text: string; - reference: string; - }[]; - facts: never[]; - bloom_level: number; - })[]; - }; - generated_at: string; -}; diff --git a/dist/constants/source_data.js b/dist/constants/source_data.js deleted file mode 100644 index 3b40ba4..0000000 --- a/dist/constants/source_data.js +++ /dev/null @@ -1,974 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.returnFields = returnFields; -exports.returnSourceData = returnSourceData; -exports.returnHeadings = returnHeadings; -exports.returnCardResponse = returnCardResponse; -const sourceString = [ - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/F%C3%BCller-tinte_hg.jpg", - img_caption: "Bottles of ink from Germany", - }, - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/%D7%A7%D7%9C%D7%A3%2C_%D7%A0%D7%95%D7%A6%D7%94_%D7%95%D7%93%D7%99%D7%95.jpg", - img_caption: "Writing ink and a quill", - }, - { - block_type: "paragraph", - content: "**Ink** is a [[Gel|gel|0|wiki]], [[Sol_(colloid)|sol|1|wiki]], or [[Solution_(chemistry)|solution|2|wiki]] that contains at least one [[Colorant|colorant|3|wiki]], such as a [[Dye|dye|4|wiki]] or [[Pigment|pigment|5|wiki]], and is used to color a surface to produce an [[Image|image|6|wiki]], [[Writing|text|7|wiki]], or [[Design|design|8|wiki]]. Ink is used for [[Drawing|drawing|9|wiki]] or [[Writing|writing|10|wiki]] with a [[Pen|pen|11|wiki]], [[Brush|brush|12|wiki]], [[Reed_pen|reed pen|13|wiki]], or [[Quill|quill|14|wiki]]. Thicker inks, in paste form, are used extensively in [[Letterpress|letterpress|15|wiki]] and [[Lithographic|lithographic|16|wiki]] [[Printing|printing|17|wiki]].", - }, - { - block_type: "paragraph", - content: "Ink can be a complex medium, composed of [[Solvent|solvents|18|wiki]], pigments, [[Dye|dyes|19|wiki]], [[Resin|resins|20|wiki]], [[Lubricant|lubricants|21|wiki]], [[Solubilizer|solubilizers|22|wiki]], [[Surfactant|surfactants|23|wiki]], [[Suspended_solids|particulate matter|24|wiki]], [[Fluorescence|fluorescents|25|wiki]], and other materials. The components of inks serve many purposes; the ink's carrier, colorants, and other additives affect the flow and thickness of the ink and its dry appearance.", - }, - { - block_type: "heading", - content: "History", - heading_level: 1, - children: [ - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/Ganesha_ink.jpg", - img_caption: "Ink drawing of Ganesha under an umbrella (early 19th century). Ink, called masi, an admixture of several chemical components, has been used in India since at least the 4th century BC. The practice of writing with ink and a sharp pointed needle was common in early South India. Several Jain sutras in India were compiled in ink.", - }, - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/Oak_galls_and_iron(II)_sulfate_-_California_State_Archives.jpg", - img_caption: "Oak galls and iron(II) sulfate", - }, - { - block_type: "paragraph", - content: "Many ancient cultures around the world have independently discovered and formulated inks due to the need to write and draw. The recipes and techniques for the production of ink are derived from archaeological analyses or from written texts itself. The earliest inks from all civilizations are believed to have been made with *[[Lampblack|lampblack|26|wiki]]*, a kind of [[Soot|soot|27|wiki]], easily collected as a by-product of fire.", - }, - { - block_type: "paragraph", - content: "Ink was used in [[Ancient_Egypt|Ancient Egypt|28|wiki]] for writing and drawing on [[Papyrus|papyrus|29|wiki]] from at least the 26th century BC. Egyptian red and black inks included [[Iron|iron|30|wiki]] and [[Ocher|ocher|31|wiki]] as pigments, in addition to [[Phosphate|phosphate|32|wiki]], [[Sulfate|sulfate|33|wiki]], [[Chloride|chloride|34|wiki]], and [[Carboxylate|carboxylate|35|wiki]] ions, with [[Lead|lead|36|wiki]] also used as a drier.", - }, - { - block_type: "paragraph", - content: "The earliest Chinese inks may date to four millennia ago, to the [[List_of_Neolithic_cultures_of_China|Chinese Neolithic Period|37|wiki]]. These included plant, animal, and mineral inks, based on such materials as [[Graphite|graphite|38|wiki]]; these were ground with water and applied with [[Ink_brush|ink brushes|39|wiki]]. Direct evidence for the earliest Chinese inks, similar to modern [[Inkstick|inksticks|40|wiki]], is found around 256 BC, in the end of the [[Warring_States_period|Warring States period|41|wiki]]; being produced from soot and [[Animal_glue|animal glue|42|wiki]]. The preferred inks for drawing or painting on paper or silk are produced from the resin of the pine trees between 50 and 100 years old. The Chinese inkstick is produced with a fish glue, whereas Japanese glue (膠 *nikawa*) is from cow or stag.", - }, - { - block_type: "paragraph", - content: "[[India_ink|India ink|43|wiki]] was invented in China, though materials were often traded from India, hence the name. The traditional Chinese method of making the ink was to grind a mixture of hide glue, [[Carbon_black|carbon black|44|wiki]], lampblack, and [[Bone_char|bone black|45|wiki]] pigment with a [[Pestle_and_mortar|pestle and mortar|46|wiki]], then pour it into a ceramic dish to dry. To use the dry mixture, a wet brush would be applied until it reliquified. The manufacture of India ink was well-established by the [[Cao_Wei|Cao Wei|47|wiki]] dynasty (220–265 AD). Indian documents written in [[Kharosthi|Kharosthi|48|wiki]] with ink have been unearthed in [[Xinjiang|Xinjiang|49|wiki]]. The practice of writing with ink and a sharp pointed needle was common in early South India. Several [[Buddhism|Buddhist|50|wiki]] and Jain sutras in India were compiled in ink.", - }, - { - block_type: "paragraph", - content: '[[Cephalopod_ink|Cephalopod ink|51|wiki]], known as [[Sepia_(color)|sepia|52|wiki]], turns from dark blue-black to brown on drying, and was used as an ink in the Graeco-Roman period and subsequently. Black [[Atramentum|atramentum|53|wiki]] was also used in [[Ancient_Rome|ancient Rome|54|wiki]]; in an article for *[[The_Christian_Science_Monitor|The Christian Science Monitor|55|wiki]]*, Sharon J. Huntington describes these other historical inks: "About 1,600 years ago, a popular ink recipe was created. The recipe was used for centuries. Iron salts, such as ferrous sulfate (made by treating iron with sulfuric acid), were mixed with tannin from gallnuts (they grow on trees) and a thickener. When first put to paper, this ink is bluish-black. Over time it fades to a dull brown."', - }, - { - block_type: "paragraph", - content: '"Scribes in medieval Europe (about AD 800 to 1500) wrote principally on parchment or vellum. One 12th century ink recipe called for hawthorn branches to be cut in the spring and left to dry. Then the bark was pounded from the branches and soaked in water for eight days. The water was boiled until it thickened and turned black. Wine was added during boiling. The ink was poured into special bags and hung in the sun. Once dried, the mixture was mixed with wine and iron salt over a fire to make the final ink."', - }, - { - block_type: "paragraph", - content: "The reservoir pen, which may have been the first [[Fountain_pen|fountain pen|56|wiki]], dates back to 953, when [[Al_Muizz|Ma'ād al-Mu'izz|57|wiki]], the [[Caliph|caliph|58|wiki]] of Egypt, demanded a pen that would not stain his hands or clothes, and was provided with a pen that held ink in a reservoir.", - }, - { - block_type: "paragraph", - content: "In the 15th century, a new type of ink had to be developed in Europe for the [[Printing_press|printing press|59|wiki]] by [[Johannes_Gutenberg|Johannes Gutenberg|60|wiki]]. According to Martyn Lyons in his book *Books: A Living History*, Gutenberg's dye was indelible, oil-based, and made from the soot of lamps (lamp-black) mixed with [[Varnish|varnish|61|wiki]] and egg white. Two types of ink were prevalent at the time: the Greek and Roman writing ink (soot, glue, and water) and the 12th century variety composed of ferrous sulfate, gall, gum, and water. Neither of these handwriting inks could adhere to printing surfaces without creating blurs. Eventually an oily, [[Varnish|varnish|62|wiki]]-like ink made of soot, [[Turpentine|turpentine|63|wiki]], and walnut oil was created specifically for the printing press.", - }, - ], - }, - { - block_type: "heading", - content: "Types", - heading_level: 1, - children: [ - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/Tintenstrich-detail_2.jpg", - img_caption: "Magnified line drawn by a fountain pen.", - }, - { - block_type: "paragraph", - content: "", - }, - { - block_type: "paragraph", - content: "Ink formulas vary, but commonly involve two components:", - }, - { - block_type: "paragraph", - content: "Inks generally fall into four classes:", - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "Colorants", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "Vehicles (binders)", - }, - ], - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "Aqueous", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "Liquid", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "3.", - content: "Paste", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "4.", - content: "Powder", - }, - ], - }, - { - block_type: "heading", - content: "Colorants", - heading_level: 2, - children: [ - { - block_type: "heading", - content: "Pigments", - heading_level: 3, - children: [ - { - block_type: "paragraph", - content: "Pigment inks are used more frequently than dyes because they are more color-fast, but they are also more expensive, less consistent in color, and have less of a [[Gamut|color range|64|wiki]] than dyes. Pigments are solid, opaque particles suspended in ink to provide color. Pigment molecules typically link together in [[Crystal|crystalline|65|wiki]] structures that are 0.1–2 [[Micrometre|μm|66|wiki]] in size and comprise 5–30 percent of the ink volume. Qualities such as [[Hue|hue|67|wiki]], [[Saturation_(color_theory)|saturation|68|wiki]], and [[Lightness_(color)|lightness|69|wiki]] vary depending on the source and type of pigment.Solvent-based inks are widely used for high-speed printing and applications that require quick drying times. And the inclusion of TiO2 powder provides superior coverage and vibrant colors.", - }, - ], - }, - { - block_type: "heading", - content: "Dyes", - heading_level: 3, - children: [ - { - block_type: "paragraph", - content: "Dye-based inks are generally much stronger than pigment-based inks and can produce much more color of a given density per unit of mass. However, because dyes are dissolved in the liquid phase, they have a tendency to soak into paper, potentially allowing the ink to bleed at the edges of an image.", - }, - { - block_type: "paragraph", - content: "To circumvent this problem, dye-based inks are made with solvents that dry rapidly or are used with quick-drying methods of printing, such as blowing hot air on the fresh print. Other methods include harder [[Paper|paper|70|wiki]] [[Sizing|sizing|71|wiki]] and more specialized paper coatings. The latter is particularly suited to inks used in non-industrial settings (which must conform to tighter toxicity and emission controls), such as [[Inkjet_printer|inkjet printer|72|wiki]] inks. Another technique involves coating the paper with a charged coating. If the dye has the opposite charge, it is attracted to and retained by this coating, while the solvent soaks into the paper. [[Cellulose|Cellulose|73|wiki]], the wood-derived material most paper is made of, is naturally charged, and so a compound that complexes with both the dye and the paper's surface aids retention at the surface. Such a compound is commonly used in ink-jet printing inks.", - }, - { - block_type: "paragraph", - content: "An additional advantage of dye-based ink systems is that the dye [[Molecule|molecules|74|wiki]] can interact with other ink ingredients, potentially allowing greater benefit as compared to pigmented inks from [[Optical_brightener|optical brighteners|75|wiki]] and color-enhancing agents designed to increase the intensity and appearance of dyes.", - }, - { - block_type: "paragraph", - content: "Dye-based inks can be used for anti-counterfeit purposes and can be found in some gel inks, fountain pen inks, and inks used for paper currency. These inks react with cellulose to bring about a permanent color change. Dye based inks are used to color hair.", - }, - ], - }, - ], - }, - ], - }, - { - block_type: "heading", - content: "Health and environmental aspects", - heading_level: 1, - children: [ - { - block_type: "paragraph", - content: "There is a misconception that ink is non-toxic even if swallowed. Once ingested, ink can be hazardous to one's health. Certain inks, such as those used in digital printers, and even those found in a common pen can be harmful. Though ink does not easily cause death, repeated skin contact or ingestion can cause effects such as severe headaches, skin irritation, or nervous system damage. These effects can be caused by solvents, or by pigment ingredients such as *p*-Anisidine, which helps create some inks' color and shine.", - }, - { - block_type: "paragraph", - content: "Three main environmental issues with ink are:", - }, - { - block_type: "paragraph", - content: "Some regulatory bodies have set standards for the amount of heavy metals in ink. There is a trend toward [[Vegetable_oil|vegetable oils|76|wiki]] rather than [[Petroleum_oil|petroleum oils|77|wiki]] in recent years in response to a demand for better [[Sustainability|environmental sustainability|78|wiki]] performance.", - }, - { - block_type: "paragraph", - content: "Ink uses up non-renewable oils and metals, which has a negative impact on the environment.", - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "[[Heavy_metal_(chemistry)|Heavy metals|79|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "Non-renewable oils", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "3.", - content: "[[Volatile_organic_compound|Volatile organic compounds|80|wiki]]", - }, - ], - }, - { - block_type: "heading", - content: "Carbon", - heading_level: 2, - children: [ - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/Inkstick.jpg", - img_caption: "Chinese inkstick; carbon-based and made from soot and animal glue", - }, - { - block_type: "paragraph", - content: "Carbon inks were commonly made from lampblack or soot and a binding agent such as [[Gum_arabic|gum arabic|81|wiki]] or [[Animal_glue|animal glue|82|wiki]]. The binding agent keeps carbon particles in suspension and adhered to paper. Carbon particles do not fade over time even when bleached or when in sunlight. One benefit is that carbon ink does not harm paper. Over time, the ink is chemically stable and therefore does not threaten the paper's strength. Despite these benefits, carbon ink is not ideal for permanence and ease of preservation. Carbon ink tends to smudge in humid environments and can be washed off surfaces. The best method of preserving a document written in carbon ink is to store it in a dry environment (Barrow 1972).", - }, - { - block_type: "paragraph", - content: "Recently, carbon inks made from carbon nanotubes have been successfully created. They are similar in composition to traditional inks in that they use a polymer to suspend the carbon nanotubes. These inks can be used in inkjet printers and produce electrically conductive patterns.", - }, - ], - }, - { - block_type: "heading", - content: "Iron gall (common ink)", - heading_level: 2, - children: [ - { - block_type: "paragraph", - content: "Iron gall inks became prominent in the early 12th century; they were used for centuries and were widely thought to be the best type of ink. However, iron gall ink is corrosive and damages paper over time (Waters 1940). Items containing this ink can become brittle and the writing fades to brown. The original scores of [[Johann_Sebastian_Bach|Johann Sebastian Bach|83|wiki]] are threatened by the destructive properties of iron gall ink. The majority of his works are held by the German State Library, and about 25% of those are in advanced stages of decay (American Libraries 2000). The rate at which the writing fades is based on several factors, such as proportions of ink ingredients, amount deposited on the paper, and paper composition (Barrow 1972:16). Corrosion is caused by acid catalyzed hydrolysis and iron(II)-catalysed oxidation of cellulose (Rouchon-Quillet 2004:389).", - }, - { - block_type: "paragraph", - content: "Treatment is a controversial subject. No treatment undoes damage already caused by acidic ink. Deterioration can only be stopped or slowed. Some think it best not to treat the item at all for fear of the consequences. Others believe that non-aqueous procedures are the best solution. Yet others think an aqueous procedure may preserve items written with iron gall ink. Aqueous treatments include distilled water at different temperatures, calcium hydroxide, calcium bicarbonate, magnesium carbonate, magnesium bicarbonate, and calcium hyphenate. There are many possible side effects from these treatments. There can be mechanical damage, which further weakens the paper. Paper color or ink color may change, and ink may bleed. Other consequences of aqueous treatment are a change of ink texture or formation of plaque on the surface of the ink (Reibland & de Groot 1999).", - }, - { - block_type: "paragraph", - content: "Iron gall inks require storage in a stable environment, because fluctuating [[Relative_humidity|relative humidity|84|wiki]] increases the rate that formic acid, acetic acid, and furan derivatives form in the material the ink was used on. Sulfuric acid acts as a catalyst to cellulose hydrolysis, and iron (II) sulfate acts as a catalyst to cellulose oxidation. These chemical reactions physically weaken the paper, causing [[Brittle_Books_Program|brittleness|85|wiki]].", - }, - ], - }, - ], - }, - { - block_type: "heading", - content: "Indelible ink", - heading_level: 1, - children: [ - { - block_type: "image", - img_src: "https://wikipedia.org/wiki/Special:Redirect/file/Un_%C3%A9lecteur_avec_l'_encre_ind%C3%A9l%C3%A9bile_au_pouce%2C_apr%C3%A8s_son_vote_dans_un_centre_dans_la_commune_de_la_Tshopo_%C3%A0_Kisangani_(6418380139).jpg", - img_caption: "A voter's thumb stained with indelible ink", - }, - { - block_type: "paragraph", - content: "", - }, - { - block_type: "paragraph", - content: '*Indelible* means "un-removable". Some types of indelible ink have a very short shelf life because of the quickly evaporating solvents used. India, Mexico, Indonesia, Malaysia and other developing countries have used indelible ink in the form of [[Electoral_stain|electoral stain|86|wiki]] to prevent [[Electoral_fraud|electoral fraud|87|wiki]]. Election ink based on [[Silver_nitrate|silver nitrate|88|wiki]] was first applied in the [[1962_Indian_general_election|1962 Indian general election|89|wiki]], after being developed at the [[National_Physical_Laboratory_of_India|National Physical Laboratory of India|90|wiki]].', - }, - { - block_type: "paragraph", - content: 'The election commission in India has used indelible ink for many elections. Indonesia used it in its election in 2014. In Mali, the ink is applied to the fingernail. Indelible ink itself is not infallible as it can be used to commit electoral [[Fraud|fraud|91|wiki]] by marking opponent party members before they have chances to cast their votes. There are also reports of "indelible" ink washing off voters\' fingers in Afghanistan.', - }, - ], - }, - { - block_type: "heading", - content: "See also", - heading_level: 1, - children: [ - { - block_type: "paragraph", - content: "", - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "[[Blue_Wool_Scale|Blue Wool Scale|92|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "[[De-inked_pulp|De-inked pulp|93|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "3.", - content: "[[Election_ink|Election ink|94|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "4.", - content: "[[Fountain_pen_ink|Fountain pen ink|95|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "5.", - content: "[[Gel_pen|Gel pen|96|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "6.", - content: "[[Ink_eraser|Ink eraser|97|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "7.", - content: "[[Inkjet_printing|Inkjet printing|98|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "8.", - content: "[[Ecofont|Ecofont|99|wiki]], an inksaving typeface", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "9.", - content: "[[Invisible_ink|Invisible ink|100|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "10.", - content: "[[Lightfastness|Lightfastness|101|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "11.", - content: "[[Pharmaceutical_ink|Pharmaceutical ink|102|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "12.", - content: "[[Preservation_(library_and_archival_science)|Preservation (library and archival science)|103|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "13.", - content: "[[Preservation_of_illuminated_manuscripts|Preservation of illuminated manuscripts|104|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "14.", - content: "[[Soy_ink|Soy ink|105|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "15.", - content: "[[Squid_ink|Squid ink|106|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "16.", - content: "[[Stark's_ink|Stark's ink|107|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "17.", - content: "[[Tattoo_ink|Tattoo ink|108|wiki]]", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "18.", - content: "[[Toner_(printing)|Toner (printing)|109|wiki]]", - }, - ], - }, - ], - }, - { - block_type: "heading", - content: "References", - heading_level: 1, - children: [], - }, - { - block_type: "heading", - content: "Sources", - heading_level: 1, - children: [ - { - block_type: "paragraph", - content: "", - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: 'Ainsworth, Mitchell, C., "Inks and Their Composition and Manufacture", Charles Griffin and Company Ltd, 1904.', - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "Banerji, Sures Chandra (1989). *A Companion to Sanskrit Literature*. Motilal Banarsidass. ISBN 81-208-0063-X.", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "3.", - content: 'Martín-Gil J., Ramos-Sánchez MC, Martín-Gil FJ and José-Yacamán M. "Chemical composition of a fountain pen ink". *Journal of Chemical Education*, 2006, 83, 1476–78.', - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "4.", - content: "Sircar, D. C. (1996).*Indian epigraphy*. Motilal Banarsidass. ISBN 81-208-1166-6.", - }, - ], - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: 'Martín-Gil J., Ramos-Sánchez MC, Martín-Gil FJ and José-Yacamán M. "Chemical composition of a fountain pen ink". *Journal of Chemical Education*, 2006, 83, 1476–78.', - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "Sircar, D. C. (1996).*Indian epigraphy*. Motilal Banarsidass. ISBN 81-208-1166-6.", - }, - ], - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "Sircar, D. C. (1996).*Indian epigraphy*. Motilal Banarsidass. ISBN 81-208-1166-6.", - }, - ], - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "Sircar, D. C. (1996).*Indian epigraphy*. Motilal Banarsidass. ISBN 81-208-1166-6.", - }, - ], - }, - ], - }, - { - block_type: "heading", - content: "Further reading", - heading_level: 1, - children: [ - { - block_type: "paragraph", - content: "", - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "Cueppers, Christoph (1989). \"On the Manufacture of Ink.\" *Ancient Nepal – Journal of the Department of Archaeology*, Number 113, August–September 1989, pp. 1–7. [The Tibetan text and translation of a section of the work called, *Bzo gnas nyer mkho'i za ma tog* by 'Jam-mgon 'Ju Mi-pham-rgya-mtsho (1846–1912) describing various traditional Tibetan techniques of making inks from different sources of soot, and from earth, [[Puffball|puffballs|110|wiki]], dung, *ser-sha* – a yellow fungus, and the fruit of *tsi dra ka* (*Ricinus communis*).]", - }, - ], - }, - ], - }, - { - block_type: "heading", - content: "External links", - heading_level: 1, - children: [ - { - block_type: "paragraph", - content: "", - }, - { - block_type: "list", - content: [ - { - block_type: "list_item", - list_type: "ordered", - marker: "1.", - content: "Forty Centuries of Ink (David N. Carvalho); A detailed online textbook (archived 8 June 2003)", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "2.", - content: "Roman ink article by Alexander Allen In Smith's Dictionary Greek and Roman Antiquities (1875), in LacusCurtius", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "3.", - content: "Ancient and Modern Ink Recipes (David N. Carvalho)", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "4.", - content: "[Gorgeous Portrayal Of How Ink Is Made](http://www.huffingtonpost.com/2010/10/01/gorgeous-portrayal-of-how_n_747665.html?view=print) – video at *[[The_Huffington_Post|The Huffington Post|111|wiki]]*", - }, - { - block_type: "list_item", - list_type: "ordered", - marker: "5.", - content: '["A Light Note on the Science of Writing and Inks"](http://www.wdl.org/en/item/3176) is a manuscript, in Arabic, from 1852. It discusses the process of making inks.', - }, - ], - }, - ], - }, -]; -const headings = [ - "History", - "Types", - "Health and environmental aspects", - "Indelible ink", - "See also", - "References", - "Sources", - "Further reading", - "External links", -]; -function returnFields() { - return [ - "Sciences", - "Technology & Engineering", - "Humanities & Cultural Studies", - "Social Sciences & Global Studies", - "Business & Management", - "Health & Medicine", - "Environmental Studies & Earth Sciences", - "Education, Learning & Personal Development", - "Creative & Performing Arts", - "Law, Governance & Ethics", - "Recreation, Lifestyle & Practical Skills", - "Technology & Media Literacy", - "Philosophy & Critical Thinking", - "Space & Astronomical Sciences", - "Agriculture & Food Sciences", - "Trades & Craftsmanship", - "Reference & Indexing", - "Other", - ]; -} -const sourceContent = { - type: "source", - title: "Ink", - headings: headings, - content: sourceString, - fields: returnFields(), - // taxonomy: null, -}; -function returnSourceData() { - return sourceContent; -} -function returnHeadings() { - return headings; -} -function returnCardResponse() { - return cardResponse; -} -let cardResponse = { - status_code: 200, - metadata: {}, - usage_data: { - prompt_tokens: 23234, - completion_tokens: 2796, - total_tokens: 26030, - }, - generated_content: { - test_cards: [ - { - type: "mcq", - card_content: { - prompt: "Which term is used to refer to the largest branch of Islam, followed by 85-90% of Muslims worldwide?", - choices: [ - { choice: "Sunni Islam", is_correct: true }, - { choice: "Shia Islam", is_correct: false }, - { choice: "Kharijites", is_correct: false }, - { choice: "Ibadi", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Definition of Sunni Islam", - reference: "Sunni Islam#Terminology", - }, - ], - facts: [ - { - fact_text: "85-90% of Muslims are Sunni.", - reference: "Sunni Islam#Terminology", - }, - ], - bloom_level: 1, - }, - { - type: "mcq", - card_content: { - prompt: "Who were the first four caliphs recognized by Sunnis?", - choices: [ - { choice: "Abu Bakr, Umar, Uthman, Ali", is_correct: true }, - { choice: "Ali, Hasan, Husayn, Yazid", is_correct: false }, - { choice: "Umar, Uthman, Muawiya, Yazid", is_correct: false }, - { choice: "Hasan, Husayn, Abu Bakr, Umar", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "History of Sunni beliefs", - reference: "Sunni Islam#History", - }, - ], - facts: [ - { - fact_text: "The first four caliphs are Abu Bakr, Umar, Uthman, Ali.", - reference: "Sunni Islam#History", - }, - ], - bloom_level: 1, - }, - { - type: "cloze", - card_content: { - prompt: "The six _____ of imān are key beliefs in Sunni Islam.", - options: [ - { option: "pillars", cloze: "c0" }, - { option: "caliphs", cloze: "null" }, - { option: "sections", cloze: "null" }, - { option: "rules", cloze: "null" }, - ], - }, - concepts: [ - { - concept_text: "Principal articles of Sunni faith", - reference: "Sunni Islam#Pillars of iman", - }, - ], - facts: [ - { - fact_text: "The six pillars of imān are key beliefs in Sunni Islam.", - reference: "Sunni Islam#Pillars of iman", - }, - ], - bloom_level: 1, - }, - { - type: "mcq", - card_content: { - prompt: "Which institution is considered a leading Sunni university?", - choices: [ - { choice: "Azhar University", is_correct: true }, - { choice: "Harvard University", is_correct: false }, - { choice: "Oxford University", is_correct: false }, - { choice: "Yale University", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Sunni organizations and institutions", - reference: "Sunni Islam#Sunni State institutions", - }, - ], - facts: [ - { - fact_text: "Azhar University is a leading Sunni institution.", - reference: "Sunni Islam#Sunni State institutions", - }, - ], - bloom_level: 1, - }, - { - type: "mcq", - card_content: { - prompt: "What is a fundamental self-image of Sunni Muslims concerning their religious identity?", - choices: [ - { choice: "They are the saved sect", is_correct: true }, - { choice: "They are the oppressed sect", is_correct: false }, - { choice: "They are the innovators", is_correct: false }, - { choice: "They are the deviants", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Identity as the 'saved sect'", - reference: "Sunni Islam#Self-image of the Sunnis", - }, - ], - facts: [ - { - fact_text: "Sunnis view themselves as the saved sect.", - reference: "Sunni Islam#Self-image of the Sunnis", - }, - ], - bloom_level: 1, - }, - { - type: "mcq", - card_content: { - prompt: "What major rivalry exists within Sunni Islam?", - choices: [ - { choice: "Between Ashʿarīya and Salafīya", is_correct: true }, - { choice: "Between Sufis and Wahhabis", is_correct: false }, - { choice: "Between Hanafis and Malikis", is_correct: false }, - { choice: "Between Shafi'is and Hanbalis", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Rivalry between Sunni theological schools", - reference: "Sunni Islam#Rivalry between Ashʿarīya and Salafīya and the 2016 Sunni conferences", - }, - ], - facts: [], - bloom_level: 1, - }, - { - type: "cloze", - card_content: { - prompt: "Sunni Islam centers around four {{c0: legal schools}}.", - options: [ - { option: "legal schools", cloze: "c0" }, - { option: "pillars of faith", cloze: "null" }, - { option: "caliphs", cloze: "null" }, - { option: "sects", cloze: "null" }, - ], - }, - concepts: [ - { - concept_text: "Sunni jurisprudence and its sources", - reference: "Sunni Islam#Jurisprudence", - }, - ], - facts: [ - { - fact_text: "Sunni Islam centers around four legal schools.", - reference: "Sunni Islam#Jurisprudence", - }, - ], - bloom_level: 1, - }, - { - type: "match", - card_content: [ - { left_item: "Ash'ari", right_item: ["Stresses divine revelation"] }, - { - left_item: "Maturidi", - right_item: ["Emphasizes reason with revelation"], - }, - { - left_item: "Athari", - right_item: ["Strict textualism in interpretation"], - }, - ], - concepts: [ - { - concept_text: "Rivalry between Sunni theological schools", - reference: "Sunni Islam#Rivalry between Ashʿarīya and Salafīya and the 2016 Sunni conferences", - }, - ], - facts: [], - bloom_level: 2, - }, - { - type: "mcq", - card_content: { - prompt: "Which of the following is NOT one of the six principal articles of faith in Sunni Islam?", - choices: [ - { choice: "Belief in the Prophets of God", is_correct: false }, - { choice: "Belief in Angels", is_correct: false }, - { choice: "Belief in Trinity", is_correct: true }, - { choice: "Belief in Resurrection after Death", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Principal articles of Sunni faith", - reference: "Sunni Islam#Pillars of iman", - }, - ], - facts: [], - bloom_level: 2, - }, - { - type: "cloze", - card_content: { - prompt: "A well-known Hadith says that the Muslim Umma will split into 73 sects, only one of which will be {{c0: saved}}.", - options: [ - { option: "saved", cloze: "c0" }, - { option: "punished", cloze: "null" }, - { option: "enriched", cloze: "null" }, - { option: "condemned", cloze: "null" }, - ], - }, - concepts: [ - { - concept_text: "Identity as the 'saved sect'", - reference: "Sunni Islam#Self-image of the Sunnis", - }, - ], - facts: [], - bloom_level: 2, - }, - { - type: "mcq", - card_content: { - prompt: "What does 'jama' in the phrase 'ahl as-sunna wal-jama' signify?", - choices: [ - { choice: "Community", is_correct: true }, - { choice: "Unity", is_correct: false }, - { choice: "Faith", is_correct: false }, - { choice: "Law", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Definition of Sunni Islam", - reference: "Sunni Islam#Terminology", - }, - ], - facts: [], - bloom_level: 1, - }, - { - type: "mcq", - card_content: { - prompt: "Which of the following sources forms the basis for Sunni jurisprudence?", - choices: [ - { choice: "The Quran and Hadith", is_correct: true }, - { choice: "Solely Quran", is_correct: false }, - { choice: "Only the Hadith", is_correct: false }, - { choice: "The Quran and Sira", is_correct: false }, - ], - }, - concepts: [ - { - concept_text: "Sunni jurisprudence and its sources", - reference: "Sunni Islam#Jurisprudence", - }, - ], - facts: [], - bloom_level: 2, - }, - { - type: "cloze", - card_content: { - prompt: "Sunni Muslims accept the {{c0: hadith}} collections of Bukhari and Muslim as the most authentic.", - options: [ - { option: "hadith", cloze: "c0" }, - { option: "Qur'an", cloze: "null" }, - { option: "tafsir", cloze: "null" }, - { option: "fatwa", cloze: "null" }, - ], - }, - concepts: [ - { - concept_text: "Sunni view of hadith", - reference: "Sunni Islam#Sunni view of hadith", - }, - ], - facts: [], - bloom_level: 1, - }, - { - type: "cloze", - card_content: { - prompt: "Sunni jurisprudence is derived from the Quran, hadith, {{c0: juristic consensus}}, and analogical reasoning.", - options: [ - { option: "juristic consensus", cloze: "c0" }, - { option: "personal opinion", cloze: "null" }, - { option: "cultural practice", cloze: "null" }, - { option: "political authority", cloze: "null" }, - ], - }, - concepts: [ - { - concept_text: "Sunni jurisprudence and its sources", - reference: "Sunni Islam#Jurisprudence", - }, - ], - facts: [], - bloom_level: 3, - }, - { - type: "cloze", - card_content: { - prompt: "One of the most important teaching institutions of Sunni Islam worldwide is the {{c0: Azhar}} in Egypt.", - options: [ - { option: "Azhar", cloze: "c0" }, - { option: "Al-Haram", cloze: "null" }, - { option: "Al-Aqsa", cloze: "null" }, - { option: "Blue Mosque", cloze: "null" }, - ], - }, - concepts: [ - { - concept_text: "Sunni organizations and institutions", - reference: "Sunni Islam#Sunni State institutions", - }, - ], - facts: [ - { - fact_text: "Azhar University is a leading Sunni institution.", - reference: "Sunni Islam#Sunni State institutions", - }, - ], - bloom_level: 2, - }, - ], - }, - generated_at: "2024-09-11T08:26:12.000Z", -}; -//# sourceMappingURL=source_data.js.map \ No newline at end of file diff --git a/dist/constants/source_data.js.map b/dist/constants/source_data.js.map deleted file mode 100644 index 3c27276..0000000 --- a/dist/constants/source_data.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"source_data.js","sourceRoot":"","sources":["../../src/constants/source_data.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/helper/qdrant_db_methods.d.ts.map b/dist/helper/qdrant_db_methods.d.ts.map index 18d4e38..fc7e3d0 100644 --- a/dist/helper/qdrant_db_methods.d.ts.map +++ b/dist/helper/qdrant_db_methods.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"qdrant_db_methods.d.ts","sourceRoot":"","sources":["../../src/helper/qdrant_db_methods.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,gBAAgB,GAAU,gBAAgB,MAAM,kBAOrD,CAAC;AAEF,QAAA,MAAM,aAAa;;;;EAGlB,CAAC;AAEF,QAAA,MAAM,wBAAwB,GAC5B,gBAAgB,MAAM,EACtB,YAAY;IACV,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,EAAE,EACH,WAAW,MAAM;;;;;eAoDoq7G,CAAC;;;cAA0H,CAAC;;;;;;iBAA+tE,CAAC;mBAAuF,CAAC;;IAjC1mgH,CAAC;AAEF,QAAA,MAAM,yBAAyB,GAC7B,gBAAgB,MAAM,EACtB,YAAY;IACV,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,EAAE,kBAcJ,CAAC;AAEF,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,wBAAwB,IAAI,kBAAkB,GAC/C,CAAC"} \ No newline at end of file +{"version":3,"file":"qdrant_db_methods.d.ts","sourceRoot":"","sources":["../../src/helper/qdrant_db_methods.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,gBAAgB,GAAU,gBAAgB,MAAM,kBAOrD,CAAC;AAEF,QAAA,MAAM,aAAa;;;;EAGlB,CAAC;AAEF,QAAA,MAAM,wBAAwB,GAC5B,gBAAgB,MAAM,EACtB,YAAY;IACV,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,EAAE,EACH,WAAW,MAAM;;;;;eAoDul7G,CAAC;;;cAA0H,CAAC;;;;;;iBAA+tE,CAAC;mBAAuF,CAAC;;IAjC7hgH,CAAC;AAEF,QAAA,MAAM,yBAAyB,GAC7B,gBAAgB,MAAM,EACtB,YAAY;IACV,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,EAAE,kBAcJ,CAAC;AAEF,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,wBAAwB,IAAI,kBAAkB,GAC/C,CAAC"} \ No newline at end of file diff --git a/dist/parse/response_format_card.d.ts b/dist/parse/response_format_card.d.ts deleted file mode 100644 index 24aa3d6..0000000 --- a/dist/parse/response_format_card.d.ts +++ /dev/null @@ -1,176 +0,0 @@ -declare const responseData: { - flash_cards: { - question: string; - answer: string; - heading: string; - }[]; - mcqs: { - question: string; - answers: { - answer: string; - is_correct: boolean; - }[]; - heading: string; - }[]; - cloze_cards: { - question: string; - options: ({ - option: string; - cloze: string; - } | { - option: string; - cloze: null; - })[]; - }[]; -}; -declare const sourceResp: { - status_code: number; - usage_data: { - prompt_tokens: number; - completion_tokens: number; - total_tokens: number; - }; - generated_content: { - missing_concepts: string[]; - missing_facts: string[]; - test_cards: ({ - type: string; - card_content: { - front: string; - back: string; - prompt?: undefined; - choices?: undefined; - "right_choice 1"?: undefined; - "right_choice 2"?: undefined; - "right_choice 3"?: undefined; - "right_choice 4"?: undefined; - "right_choice 5"?: undefined; - "right_choice 6"?: undefined; - "right_choice 7"?: undefined; - "right_choice 8"?: undefined; - Electrometallurgy?: undefined; - Electroplating?: undefined; - "Electrochemical machining"?: undefined; - Electrochemistry?: undefined; - Electrocatalysis?: undefined; - Electrorefining?: undefined; - options?: undefined; - }; - card_reference: string; - concepts: string[]; - facts: string[]; - } | { - type: string; - card_content: { - prompt: string; - choices: { - choice: string; - is_correct: boolean; - }[]; - front?: undefined; - back?: undefined; - "right_choice 1"?: undefined; - "right_choice 2"?: undefined; - "right_choice 3"?: undefined; - "right_choice 4"?: undefined; - "right_choice 5"?: undefined; - "right_choice 6"?: undefined; - "right_choice 7"?: undefined; - "right_choice 8"?: undefined; - Electrometallurgy?: undefined; - Electroplating?: undefined; - "Electrochemical machining"?: undefined; - Electrochemistry?: undefined; - Electrocatalysis?: undefined; - Electrorefining?: undefined; - options?: undefined; - }; - card_reference: string; - concepts: string[]; - facts: string[]; - } | { - type: string; - card_content: { - "right_choice 1": string; - "right_choice 2": string; - "right_choice 3": string; - "right_choice 4": string; - "right_choice 5": string; - "right_choice 6": string; - "right_choice 7": string; - "right_choice 8": string; - Electrometallurgy: string; - Electroplating: string; - "Electrochemical machining": string; - Electrochemistry: string; - Electrocatalysis: string; - Electrorefining: string; - front?: undefined; - back?: undefined; - prompt?: undefined; - choices?: undefined; - options?: undefined; - }; - card_reference: string; - concepts: string[]; - facts: string[]; - } | { - type: string; - card_content: { - prompt: string; - options: { - option: string; - cloze: string; - }[]; - front?: undefined; - back?: undefined; - choices?: undefined; - "right_choice 1"?: undefined; - "right_choice 2"?: undefined; - "right_choice 3"?: undefined; - "right_choice 4"?: undefined; - "right_choice 5"?: undefined; - "right_choice 6"?: undefined; - "right_choice 7"?: undefined; - "right_choice 8"?: undefined; - Electrometallurgy?: undefined; - Electroplating?: undefined; - "Electrochemical machining"?: undefined; - Electrochemistry?: undefined; - Electrocatalysis?: undefined; - Electrorefining?: undefined; - }; - card_reference: string; - concepts: string[]; - facts: never[]; - } | { - type: string; - card_content: { - "right_choice 1": string; - "right_choice 2": string; - "right_choice 3": string; - "right_choice 4": string; - "right_choice 5": string; - front?: undefined; - back?: undefined; - prompt?: undefined; - choices?: undefined; - "right_choice 6"?: undefined; - "right_choice 7"?: undefined; - "right_choice 8"?: undefined; - Electrometallurgy?: undefined; - Electroplating?: undefined; - "Electrochemical machining"?: undefined; - Electrochemistry?: undefined; - Electrocatalysis?: undefined; - Electrorefining?: undefined; - options?: undefined; - }; - card_reference: string; - concepts: string[]; - facts: never[]; - })[]; - }; - generated_at: number; - type: string; -}; diff --git a/dist/parse/response_format_card.js b/dist/parse/response_format_card.js deleted file mode 100644 index f51e97b..0000000 --- a/dist/parse/response_format_card.js +++ /dev/null @@ -1,372 +0,0 @@ -"use strict"; -const responseData = { - flash_cards: [ - { - question: "What is the primary function of the 'Electrolysis'?", - answer: "Electrolysis is the passing of a direct electric current through an electrolyte producing chemical reactions at the electrodes and decomposition of the materials.", - heading: "Overview", - }, - { - question: "What did Michael Faraday discover while studying the process of electrolysis under Humphry Davy?", - answer: "Michael Faraday discovered two laws of electrolysis.", - heading: "History", - }, - { - question: "What can electrolysis be used for in the manufacturing sector?", - answer: "Electrolysis can be used for electroplating and electrochemical machining.", - heading: "Manufacturing processes", - }, - { - question: "In the context of electrolysis, what does the term 'Decomposition potential' refer to?", - answer: "Decomposition potential or decomposition voltage refers to the minimum voltage between anode and cathode of an electrolytic cell needed for electrolysis to occur.", - heading: "Decomposition potential", - }, - ], - mcqs: [ - { - question: "What is the primary purpose of 'Electrometallurgy'?", - answers: [ - { - answer: "Production of aluminium", - is_correct: true, - }, - { - answer: "Chlorine production", - is_correct: false, - }, - { - answer: "Purifying copper", - is_correct: false, - }, - { - answer: "Rust removal", - is_correct: false, - }, - { - answer: "Hydrogen production", - is_correct: false, - }, - ], - heading: "Industrial uses", - }, - { - question: "What can electrolysis be used for in the context of batteries?", - answers: [ - { - answer: "Spontaneous redox reactions", - is_correct: true, - }, - { - answer: "Energy-releasing reactions", - is_correct: false, - }, - { - answer: "Disinfectant production", - is_correct: false, - }, - { - answer: "Fuel production", - is_correct: false, - }, - { - answer: "Gas diffusion in reactors", - is_correct: false, - }, - ], - heading: "Related processes", - }, - ], - cloze_cards: [ - { - question: "Electrolysis is the passing of a {{c0:direct electric current}} through an {{c1:electrolyte}} producing {{c2:chemical reactions}} at the {{c3:electrodes}} and {{c4:decomposition}} of the materials.", - options: [ - { - option: "direct electric current", - cloze: "c0", - }, - { - option: "electrolyte", - cloze: "c1", - }, - { - option: "chemical reactions", - cloze: "c2", - }, - { - option: "electrodes", - cloze: "c3", - }, - { - option: "decomposition", - cloze: "c4", - }, - { - option: "metallic objects", - cloze: null, - }, - ], - }, - { - question: "In electrolysis, the decomposition potential or decomposition voltage refers to the minimum voltage between {{c0:anode}} and {{c1:cathode}} of an electrolytic cell needed for electrolysis to occur.", - options: [ - { - option: "anode", - cloze: "c0", - }, - { - option: "cathode", - cloze: "c1", - }, - { - option: "electrolyte", - cloze: null, - }, - { - option: "chemical reactions", - cloze: null, - }, - { - option: "oxygen", - cloze: null, - }, - { - option: "hydrogen", - cloze: null, - }, - ], - }, - ], -}; -const sourceResp = { - status_code: 200, - usage_data: { - prompt_tokens: 9781, - completion_tokens: 1915, - total_tokens: 11696, - }, - generated_content: { - missing_concepts: [ - "Faraday's laws of electrolysis", - "Humphry Davy", - "Electrolytic cell", - "Decomposition potential", - "Oxidation", - "Reduction", - "Electrolysis of seawater", - "Electrometallurgy", - "Electroplating", - "Electrochemical machining", - "Electrochemistry", - "Electrocatalysis", - "Electrorefining", - "Electrolysis of carbon dioxide", - "Energy changes during electrolysis", - "Electrocrystallization", - "Electrolysis of Iron Ore", - ], - missing_facts: [ - "Michael Faraday introduced the term 'electrolysis' in 1834", - "The first demonstration of key electrolysis concepts was by William Nicholson and Anthony Carlisle in the early nineteenth century", - "Humphry Davy discovered several alkali and alkaline earth metals by electrolysis", - "Electrolysis played a key role in isolating and identifying new elements like lithium, chlorine, and fluorine", - "The Hall–Héroult process led to a significant drop in the price of aluminum", - "Hydrogen and oxygen are produced in a 2:1 ratio by the electrolysis of water", - "The electrolysis of seawater can result in the production of alkali hydroxides", - "Electrometallurgy is used in the production of various metals", - "Electroplating involves the deposition of a thin metal film onto a substrate material", - "Electrochemical machining is used for deburring or etching metal surfaces", - "Electrocatalysis involves the acceleration of electrochemical reactions", - "Electrorefining is used to obtain pure metals from impure ones", - "The electrolysis of carbon dioxide can produce methane, ethylene, or ethanol", - "Energy changes during electrolysis involve the addition of electrical energy, equal to the change in Gibbs free energy plus system losses", - "Electrocrystallization is a method for obtaining conductive crystals using electrolysis", - "Electrolysis of Iron Ore can eventually result in the reduction of emissions from steel production", - ], - test_cards: [ - { - type: "flash", - card_content: { - front: "Who introduced the term 'electrolysis' and in which year?", - back: "Michael Faraday introduced the term 'electrolysis' in 1834", - }, - card_reference: "Electrolysis#Etymology", - concepts: [], - facts: ["Michael Faraday introduced the term 'electrolysis' in 1834"], - }, - { - type: "flash", - card_content: { - front: "What was the significance of the Hall–Héroult process?", - back: "The Hall–Héroult process led to a significant drop in the price of aluminum", - }, - card_reference: "Electrolysis#Industrial uses", - concepts: ["Hall–Héroult process"], - facts: [ - "The Hall–Héroult process led to a significant drop in the price of aluminum", - ], - }, - { - type: "mcq", - card_content: { - prompt: "What does the electrolysis of water produce?", - choices: [ - { - choice: "Oxygen and carbon dioxide", - is_correct: false, - }, - { - choice: "Hydrogen and oxygen", - is_correct: true, - }, - { - choice: "Nitrogen and helium", - is_correct: false, - }, - ], - }, - card_reference: "Electrolysis#Process of electrolysis", - concepts: ["Electrometallurgy"], - facts: [ - "Hydrogen and oxygen are produced in a 2:1 ratio by the electrolysis of water", - ], - }, - { - type: "cloze", - card_content: { - prompt: "Electrolysis is the passing of a direct electric current through an {{c0:electrolyte}} producing chemical reactions at the electrodes and decomposition of the materials.", - options: [ - { - option: "electrolyte", - cloze: "c0", - }, - { - option: "anode", - cloze: "null", - }, - { - option: "cathode", - cloze: "null", - }, - ], - }, - card_reference: "Electrolysis#Overview", - concepts: [], - facts: [], - }, - { - type: "match", - card_content: { - "right_choice 1": "Electrometallurgy", - "right_choice 2": "Electroplating", - "right_choice 3": "Electrochemical machining", - "right_choice 4": "Electrochemistry", - "right_choice 5": "Electrocatalysis", - "right_choice 6": "Electrorefining", - "right_choice 7": "Electrolysis of carbon dioxide", - "right_choice 8": "Energy changes during electrolysis", - Electrometallurgy: "The process of producing metals using electricity", - Electroplating: "Deposition of thin metal film onto a substrate material", - "Electrochemical machining": "Deburring or etching metal surfaces", - Electrochemistry: "Study of the interchange of chemical and electrical energy", - Electrocatalysis: "Acceleration of electrochemical reactions", - Electrorefining: "Obtaining pure metals from impure ones", - }, - card_reference: "Electrolysis#Industrial uses", - concepts: [ - "Electrometallurgy", - "Electroplating", - "Electrochemical machining", - "Electrochemistry", - "Electrocatalysis", - "Electrorefining", - "Electrolysis of carbon dioxide", - "Energy changes during electrolysis", - ], - facts: [ - "Electrometallurgy is used in the production of various metals", - "Electroplating involves the deposition of a thin metal film onto a substrate material", - "Electrochemical machining is used for deburring or etching metal surfaces", - "Electrochemistry is the study of the interchange of chemical and electrical energy", - "Electrocatalysis involves the acceleration of electrochemical reactions", - "Electrorefining is used to obtain pure metals from impure ones", - "The electrolysis of carbon dioxide can produce methane, ethylene, or ethanol", - "Energy changes during electrolysis involve the addition of electrical energy, equal to the change in Gibbs free energy plus system losses", - ], - }, - { - type: "mcq", - card_content: { - prompt: "What is a key application of electrolysis?", - choices: [ - { - choice: "Production of metal from ore", - is_correct: false, - }, - { - choice: "Pulsing current results", - is_correct: false, - }, - { - choice: "Generating electrical potential", - is_correct: false, - }, - { - choice: "Production of chlorine and sodium hydroxide", - is_correct: true, - }, - ], - }, - card_reference: "Electrolysis#Industrial uses", - concepts: ["Electrochemistry", "Electrocatalysis", "Electrorefining"], - facts: [ - "Production of chlorine and sodium hydroxide, called the Chloralkali process", - ], - }, - { - type: "cloze", - card_content: { - prompt: "Oxidation of ions or neutral molecules occurs at the {{c0:anode}}. Reduction of ions or neutral molecules occurs at the {{c1:cathode}}.", - options: [ - { - option: "anode", - cloze: "c0", - }, - { - option: "cathode", - cloze: "c1", - }, - { - option: "electrolyte", - cloze: "null", - }, - ], - }, - card_reference: "Electrolysis#Oxidation and reduction at the electrodes", - concepts: ["Oxidation", "Reduction"], - facts: [], - }, - { - type: "match", - card_content: { - "right_choice 1": "Electrolysis", - "right_choice 2": "Electrocrystallization", - "right_choice 3": "Electrolysis of Iron Ore", - "right_choice 4": "Electrolysis of seawater", - "right_choice 5": "Electrometallurgy", - }, - card_reference: "Electrolysis#Research trends", - concepts: [ - "Electrolysis", - "Electrocrystallization", - "Electrolysis of Iron Ore", - "Electrolysis of seawater", - "Electrometallurgy", - ], - facts: [], - }, - ], - }, - generated_at: 1718625081, - type: "card_gen", -}; -//# sourceMappingURL=response_format_card.js.map \ No newline at end of file diff --git a/dist/parse/response_format_card.js.map b/dist/parse/response_format_card.js.map deleted file mode 100644 index 80ced85..0000000 --- a/dist/parse/response_format_card.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response_format_card.js","sourceRoot":"","sources":["../../src/parse/response_format_card.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/parse/response_format_typology.d.ts b/dist/parse/response_format_typology.d.ts deleted file mode 100644 index 2f06a24..0000000 --- a/dist/parse/response_format_typology.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function returnTypologyData(): any; diff --git a/dist/parse/response_format_typology.js b/dist/parse/response_format_typology.js deleted file mode 100644 index de9eb6f..0000000 --- a/dist/parse/response_format_typology.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.returnTypologyData = returnTypologyData; -const typologyResponse = { - usage_data: { - prompt_tokens: 11611, - completion_tokens: 441, - total_tokens: 12052, - }, - generated_content: { - field: [ - "Sciences", - "Technology & Engineering", - "Education, Learning & Personal Development", - ], - concepts: [ - "Electrolysis", - "Faraday's Laws of Electrolysis", - "Electrolytic Cell", - "Decomposition Potential", - "Oxidation and Reduction at the Electrodes", - "Electrolysis of Water", - "Electrolysis of Carbon Dioxide", - "Electrocrystallization", - ], - facts: [ - "Electrolysis is the passing of a direct electric current through an electrolyte producing chemical reactions at the electrodes and decomposition of the materials.", - "In electrolysis, the quantity of the products is proportional to the current, and when two or more electrolytic cells are connected in series to the same power source, the products produced in the cells are proportional to their equivalent weight.", - "The main components required to achieve electrolysis are an electrolyte, electrodes, and an external power source.", - "Faraday's laws of electrolysis detail the amount of the products of electrolysis is related to the number of electrons in the reaction at the electrodes.", - "Decomposition potential or decomposition voltage refers to the minimum voltage between anode and cathode of an electrolytic cell that is needed for electrolysis to occur.", - "The electrochemical reduction of carbon dioxide can produce value-added chemicals such as methane, ethylene, and ethanol.", - ], - generate_cards: true, - summary_cards: [ - "Electrolysis is the process of passing direct electric current through an electrolyte, resulting in chemical reactions and the decomposition of materials.", - "Faraday's laws of electrolysis determine the relationship between the amounts of products generated and the electrons involved in the reaction at the electrodes.", - "Decomposition potential is the minimum voltage required between anode and cathode for electrolysis to occur.", - "The electrochemical reduction of carbon dioxide is a potential method for producing valuable chemicals such as methane, ethylene, and ethanol.", - ], - }, - generated_at: "Tue, 20 Jan 1970 21:17:46 GMT", -}; -function returnTypologyData() { - return typologyResponse; -} -//# sourceMappingURL=response_format_typology.js.map \ No newline at end of file diff --git a/dist/parse/response_format_typology.js.map b/dist/parse/response_format_typology.js.map deleted file mode 100644 index 2fb4318..0000000 --- a/dist/parse/response_format_typology.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response_format_typology.js","sourceRoot":"","sources":["../../src/parse/response_format_typology.ts"],"names":[],"mappings":";;AAyCA,gDAEC;AA3CD,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE;QACV,aAAa,EAAE,KAAK;QACpB,iBAAiB,EAAE,GAAG;QACtB,YAAY,EAAE,KAAK;KACpB;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE;YACL,UAAU;YACV,0BAA0B;YAC1B,4CAA4C;SAC7C;QACD,QAAQ,EAAE;YACR,cAAc;YACd,gCAAgC;YAChC,mBAAmB;YACnB,yBAAyB;YACzB,2CAA2C;YAC3C,uBAAuB;YACvB,gCAAgC;YAChC,wBAAwB;SACzB;QACD,KAAK,EAAE;YACL,oKAAoK;YACpK,yPAAyP;YACzP,oHAAoH;YACpH,2JAA2J;YAC3J,4KAA4K;YAC5K,2HAA2H;SAC5H;QACD,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE;YACb,4JAA4J;YAC5J,mKAAmK;YACnK,8GAA8G;YAC9G,gJAAgJ;SACjJ;KACF;IACD,YAAY,EAAE,+BAA+B;CAC9C,CAAC;AAEF,SAAgB,kBAAkB;IAChC,OAAO,gBAAuB,CAAC;AACjC,CAAC"} \ No newline at end of file diff --git a/dist/schema/card_gen/card_gen_schema.d.ts b/dist/schema/card_gen/card_gen_schema.d.ts new file mode 100644 index 0000000..665ed6a --- /dev/null +++ b/dist/schema/card_gen/card_gen_schema.d.ts @@ -0,0 +1,158 @@ +declare const cardGenSchema: { + type: string; + function: { + name: string; + parameters: { + type: string; + properties: { + test_cards: { + type: string; + items: { + type: string; + properties: { + type: { + type: string; + enum: string[]; + }; + card_content: { + anyOf: ({ + type: string; + properties: { + front: { + type: string; + }; + back: { + type: string; + }; + explanation: { + type: string[]; + }; + pairs?: undefined; + prompt?: undefined; + correct_options?: undefined; + incorrect_options?: undefined; + choices?: undefined; + }; + required: string[]; + additionalProperties: boolean; + } | { + type: string; + properties: { + pairs: { + type: string; + items: { + type: string; + properties: { + left_item: { + type: string; + }; + right_item: { + type: string; + }; + }; + required: string[]; + additionalProperties: boolean; + }; + }; + front?: undefined; + back?: undefined; + explanation?: undefined; + prompt?: undefined; + correct_options?: undefined; + incorrect_options?: undefined; + choices?: undefined; + }; + required: string[]; + additionalProperties: boolean; + } | { + type: string; + properties: { + prompt: { + type: string; + }; + correct_options: { + type: string; + items: { + type: string; + }; + }; + incorrect_options: { + type: string; + items: { + type: string; + }; + }; + explanation: { + type: string[]; + }; + front?: undefined; + back?: undefined; + pairs?: undefined; + choices?: undefined; + }; + required: string[]; + additionalProperties: boolean; + } | { + type: string; + properties: { + prompt: { + type: string; + }; + explanation: { + type: string[]; + }; + choices: { + type: string; + items: { + type: string; + properties: { + choice: { + type: string; + }; + is_correct: { + type: string; + }; + }; + required: string[]; + additionalProperties: boolean; + }; + }; + front?: undefined; + back?: undefined; + pairs?: undefined; + correct_options?: undefined; + incorrect_options?: undefined; + }; + required: string[]; + additionalProperties: boolean; + })[]; + }; + concepts: { + type: string; + items: { + type: string; + }; + }; + facts: { + type: string; + items: { + type: string; + }; + }; + bloom_level: { + type: string; + enum: number[]; + }; + }; + required: string[]; + additionalProperties: boolean; + }; + }; + }; + required: string[]; + additionalProperties: boolean; + }; + }; +}; +export { cardGenSchema }; +//# sourceMappingURL=card_gen_schema.d.ts.map \ No newline at end of file diff --git a/dist/schema/card_gen/card_gen_schema.d.ts.map b/dist/schema/card_gen/card_gen_schema.d.ts.map new file mode 100644 index 0000000..41a8403 --- /dev/null +++ b/dist/schema/card_gen/card_gen_schema.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"card_gen_schema.d.ts","sourceRoot":"","sources":["../../../src/schema/card_gen/card_gen_schema.ts"],"names":[],"mappings":"AAAC,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HnB,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/schema/card_gen/card_gen_schema.js b/dist/schema/card_gen/card_gen_schema.js new file mode 100644 index 0000000..131bb4e --- /dev/null +++ b/dist/schema/card_gen/card_gen_schema.js @@ -0,0 +1,130 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cardGenSchema = void 0; +const cardGenSchema = { + type: "function", + function: { + name: "generate_cards", + parameters: { + type: "object", + properties: { + test_cards: { + type: "array", + items: { + type: "object", + properties: { + type: { + type: "string", + enum: ["flash", "match", "mcq", "cloze"], + }, + card_content: { + anyOf: [ + // Flash Card + { + type: "object", + properties: { + front: { type: "string" }, + back: { type: "string" }, + explanation: { type: ["string", "null"] }, + }, + required: ["front", "back", "explanation"], + additionalProperties: false, + }, + // Match Card + { + type: "object", + properties: { + pairs: { + type: "array", + items: { + type: "object", + properties: { + left_item: { type: "string" }, + right_item: { type: "string" }, + }, + required: ["left_item", "right_item"], + additionalProperties: false, + }, + }, + }, + required: ["pairs"], + additionalProperties: false, + }, + // Cloze Card + { + type: "object", + properties: { + prompt: { type: "string" }, + correct_options: { + type: "array", + items: { type: "string" }, + }, + incorrect_options: { + type: "array", + items: { type: "string" }, + }, + explanation: { type: ["string", "null"] }, + }, + required: [ + "prompt", + "correct_options", + "incorrect_options", + "explanation", + ], + additionalProperties: false, + }, + // MCQ Card + { + type: "object", + properties: { + prompt: { type: "string" }, + explanation: { type: ["string", "null"] }, + choices: { + type: "array", + items: { + type: "object", + properties: { + choice: { type: "string" }, + is_correct: { type: "boolean" }, + }, + required: ["choice", "is_correct"], + additionalProperties: false, + }, + }, + }, + required: ["prompt", "choices", "explanation"], + additionalProperties: false, + }, + ], + }, + concepts: { + type: "array", + items: { type: "string" }, + }, + facts: { + type: "array", + items: { type: "string" }, + }, + bloom_level: { + type: "number", + enum: [1, 2, 3, 4, 5], + }, + }, + required: [ + "type", + "card_content", + "concepts", + "facts", + "bloom_level", + ], + additionalProperties: false, + }, + }, + }, + required: ["test_cards"], + additionalProperties: false, + }, + }, +}; +exports.cardGenSchema = cardGenSchema; +//# sourceMappingURL=card_gen_schema.js.map \ No newline at end of file diff --git a/dist/schema/card_gen/card_gen_schema.js.map b/dist/schema/card_gen/card_gen_schema.js.map new file mode 100644 index 0000000..abdfd00 --- /dev/null +++ b/dist/schema/card_gen/card_gen_schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"card_gen_schema.js","sourceRoot":"","sources":["../../../src/schema/card_gen/card_gen_schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/schema/typology_gen/typology_gen_schema.d.ts b/dist/schema/typology_gen/typology_gen_schema.d.ts new file mode 100644 index 0000000..e911764 --- /dev/null +++ b/dist/schema/typology_gen/typology_gen_schema.d.ts @@ -0,0 +1,67 @@ +export declare const typologySchema: { + type: string; + function: { + name: string; + parameters: { + type: string; + properties: { + field: { + type: string; + items: { + type: string; + }; + }; + concepts: { + type: string; + items: { + type: string; + properties: { + concept_text: { + type: string; + }; + reference: { + type: string; + }; + }; + required: string[]; + }; + }; + facts: { + type: string; + items: { + type: string; + properties: { + fact_text: { + type: string; + }; + reference: { + type: string; + }; + }; + required: string[]; + }; + }; + generate_cards: { + type: string; + properties: { + state: { + type: string; + }; + reason: { + type: string; + }; + }; + required: string[]; + }; + summary_cards: { + type: string; + items: { + type: string; + }; + }; + }; + required: string[]; + }; + }; +}; +//# sourceMappingURL=typology_gen_schema.d.ts.map \ No newline at end of file diff --git a/dist/schema/typology_gen/typology_gen_schema.d.ts.map b/dist/schema/typology_gen/typology_gen_schema.d.ts.map new file mode 100644 index 0000000..3903020 --- /dev/null +++ b/dist/schema/typology_gen/typology_gen_schema.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"typology_gen_schema.d.ts","sourceRoot":"","sources":["../../../src/schema/typology_gen/typology_gen_schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDxB,CAAC"} \ No newline at end of file diff --git a/dist/schema/typology_gen/typology_gen_schema.js b/dist/schema/typology_gen/typology_gen_schema.js new file mode 100644 index 0000000..f706046 --- /dev/null +++ b/dist/schema/typology_gen/typology_gen_schema.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.typologySchema = void 0; +exports.typologySchema = { + type: "function", + function: { + name: "generate_typology", + parameters: { + type: "object", + properties: { + field: { + type: "array", + items: { type: "string" } + }, + concepts: { + type: "array", + items: { + type: "object", + properties: { + concept_text: { type: "string" }, + reference: { type: "string" } + }, + required: ["concept_text", "reference"] + } + }, + facts: { + type: "array", + items: { + type: "object", + properties: { + fact_text: { type: "string" }, + reference: { type: "string" } + }, + required: ["fact_text", "reference"] + } + }, + generate_cards: { + type: "object", + properties: { + state: { type: "boolean" }, + reason: { type: "string" } + }, + required: ["state", "reason"] + }, + summary_cards: { + type: "array", + items: { type: "string" } + } + }, + required: ["field", "concepts", "facts", "generate_cards", "summary_cards"] + } + } +}; +//# sourceMappingURL=typology_gen_schema.js.map \ No newline at end of file diff --git a/dist/schema/typology_gen/typology_gen_schema.js.map b/dist/schema/typology_gen/typology_gen_schema.js.map new file mode 100644 index 0000000..36e6781 --- /dev/null +++ b/dist/schema/typology_gen/typology_gen_schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"typology_gen_schema.js","sourceRoot":"","sources":["../../../src/schema/typology_gen/typology_gen_schema.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC1B,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAChC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC9B;wBACD,QAAQ,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;qBACxC;iBACF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC9B;wBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;qBACrC;iBACF;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;wBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC3B;oBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;iBAC9B;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,CAAC;SAC5E;KACF;CACF,CAAC"} \ No newline at end of file diff --git a/dist/services/open_ai_service.d.ts b/dist/services/open_ai_service.d.ts index a6b0c01..8a8462f 100644 --- a/dist/services/open_ai_service.d.ts +++ b/dist/services/open_ai_service.d.ts @@ -2,7 +2,7 @@ export declare class OpenAiService { api_key: string; model: string; constructor(apiKey: string, model: string); - sendRequest(prompt: string, content: string): Promise; + sendRequest(prompt: string, content: string, schema?: any): Promise; sendEmbeddingRequest(texts: string[]): Promise<{ status_code: number; data: any; diff --git a/dist/services/open_ai_service.d.ts.map b/dist/services/open_ai_service.d.ts.map index 129bb5b..eb92327 100644 --- a/dist/services/open_ai_service.d.ts.map +++ b/dist/services/open_ai_service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"open_ai_service.d.ts","sourceRoot":"","sources":["../../src/services/open_ai_service.ts"],"names":[],"mappings":"AAUA,qBAAa,aAAa;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;gBAET,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAwC3C,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE;;;;;;;;;CA4B3C"} \ No newline at end of file +{"version":3,"file":"open_ai_service.d.ts","sourceRoot":"","sources":["../../src/services/open_ai_service.ts"],"names":[],"mappings":"AAUA,qBAAa,aAAa;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;gBAET,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,WAAW,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,GAAG;IAgDR,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE;;;;;;;;;CA4B3C"} \ No newline at end of file diff --git a/dist/services/open_ai_service.js b/dist/services/open_ai_service.js index 48e4f62..5eedd14 100644 --- a/dist/services/open_ai_service.js +++ b/dist/services/open_ai_service.js @@ -21,7 +21,7 @@ class OpenAiService { this.api_key = apiKey; this.model = model; } - sendRequest(prompt, content) { + sendRequest(prompt, content, schema) { return __awaiter(this, void 0, void 0, function* () { try { let message = [ @@ -35,11 +35,15 @@ class OpenAiService { }, ]; const url = (0, api_constants_1.openAiEndPoint)(); - let response = yield axios_1.default.post(url, { + const requestBody = { model: this.model, messages: message, response_format: { type: "json_object" }, - }, { + }; + if (schema) { + requestBody.tools = [schema]; + } + let response = yield axios_1.default.post(url, requestBody, { headers: { Authorization: "Bearer " + this.api_key, "Content-Type": ["application/json"], @@ -47,7 +51,7 @@ class OpenAiService { }); if (response.status == 200) { console.log("success"); - return (0, parse_openai_response_1.parseOpenAiSuccessResponse)(response.data); + return (0, parse_openai_response_1.parseOpenAiSuccessResponse)(response.data, schema); } else { console.log("failed"); diff --git a/dist/services/open_ai_service.js.map b/dist/services/open_ai_service.js.map index a80f203..c6e9f99 100644 --- a/dist/services/open_ai_service.js.map +++ b/dist/services/open_ai_service.js.map @@ -1 +1 @@ -{"version":3,"file":"open_ai_service.js","sourceRoot":"","sources":["../../src/services/open_ai_service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,0EAGwC;AACxC,8DAGoC;AAEpC,MAAa,aAAa;IAIxB,YAAY,MAAc,EAAE,KAAa;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEK,WAAW,CAAC,MAAc,EAAE,OAAe;;YAC/C,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG;oBACZ;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,MAAM;qBAChB;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO;qBACjB;iBACF,CAAC;gBACF,MAAM,GAAG,GAAG,IAAA,8BAAc,GAAE,CAAC;gBAC7B,IAAI,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC7B,GAAG,EACH;oBACE,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,OAAO;oBACjB,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;iBACzC,EACD;oBACE,OAAO,EAAE;wBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,OAAO;wBACvC,cAAc,EAAE,CAAC,kBAAkB,CAAC;qBACrC;iBACF,CACF,CAAC;gBAEF,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACvB,OAAO,IAAA,kDAA0B,EAAC,QAAQ,CAAC,IAAI,CAAQ,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtB,OAAO,QAAQ,CAAC,UAAiB,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,IAAA,kDAA0B,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;KAAA;IAEK,oBAAoB,CAAC,KAAe;;;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAA,uCAAuB,GAAE,CAAC;gBACtC,IAAI,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC7B,GAAG,EACH;oBACE,KAAK,EAAE,wBAAwB;oBAC/B,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,GAAG;iBAChB,EACD;oBACE,OAAO,EAAE;wBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,OAAO;wBACvC,cAAc,EAAE,CAAC,kBAAkB,CAAC;qBACrC;iBACF,CACF,CAAC;gBACF,OAAO;oBACL,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,WAAW,EAAE,MAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,mCAAI,GAAG;oBACvC,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF;AA7ED,sCA6EC"} \ No newline at end of file +{"version":3,"file":"open_ai_service.js","sourceRoot":"","sources":["../../src/services/open_ai_service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,0EAGwC;AACxC,8DAGoC;AAEpC,MAAa,aAAa;IAIxB,YAAY,MAAc,EAAE,KAAa;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEK,WAAW,CACf,MAAc,EACd,OAAe,EACf,MAAY;;YAEZ,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG;oBACZ;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,MAAM;qBAChB;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO;qBACjB;iBACF,CAAC;gBAEF,MAAM,GAAG,GAAG,IAAA,8BAAc,GAAE,CAAC;gBAE7B,MAAM,WAAW,GAAQ;oBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,OAAO;oBACjB,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;iBACzC,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC;oBACX,WAAW,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAED,IAAI,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;oBAChD,OAAO,EAAE;wBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,OAAO;wBACvC,cAAc,EAAE,CAAC,kBAAkB,CAAC;qBACrC;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACvB,OAAO,IAAA,kDAA0B,EAC/B,QAAQ,CAAC,IAAI,EACb,MAAM,CACA,CAAC;gBACX,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtB,OAAO,QAAQ,CAAC,UAAiB,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,IAAA,kDAA0B,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;KAAA;IAEK,oBAAoB,CAAC,KAAe;;;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAA,uCAAuB,GAAE,CAAC;gBACtC,IAAI,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC7B,GAAG,EACH;oBACE,KAAK,EAAE,wBAAwB;oBAC/B,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,GAAG;iBAChB,EACD;oBACE,OAAO,EAAE;wBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,OAAO;wBACvC,cAAc,EAAE,CAAC,kBAAkB,CAAC;qBACrC;iBACF,CACF,CAAC;gBACF,OAAO;oBACL,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,WAAW,EAAE,MAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,mCAAI,GAAG;oBACvC,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF;AAxFD,sCAwFC"} \ No newline at end of file diff --git a/dist/typology_gen/generate_typology.d.ts.map b/dist/typology_gen/generate_typology.d.ts.map index 6ef2658..f72d757 100644 --- a/dist/typology_gen/generate_typology.d.ts.map +++ b/dist/typology_gen/generate_typology.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"generate_typology.d.ts","sourceRoot":"","sources":["../../src/typology_gen/generate_typology.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,gBAAgB;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAM;IACpB,OAAO,EAAE,MAAM,CAAM;IAC5B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE5B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;IAS1B,QAAQ;IAmCd,sBAAsB,CAAC,YAAY,EAAE,GAAG;;;;;;;;;;;IA6BxC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;;;;IAQ3B,sBAAsB,CAAC,YAAY,EAAE,GAAG;;;;CAQ/C"} \ No newline at end of file +{"version":3,"file":"generate_typology.d.ts","sourceRoot":"","sources":["../../src/typology_gen/generate_typology.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,gBAAgB;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAM;IACpB,OAAO,EAAE,MAAM,CAAM;IAC5B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE5B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;IAS1B,QAAQ;IAqCd,sBAAsB,CAAC,YAAY,EAAE,GAAG;;;;;;;;;;;IA6BxC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;;;;IAQ3B,sBAAsB,CAAC,YAAY,EAAE,GAAG;;;;CAQ/C"} \ No newline at end of file diff --git a/dist/typology_gen/generate_typology.js b/dist/typology_gen/generate_typology.js index c7a3b0b..bf4bf05 100644 --- a/dist/typology_gen/generate_typology.js +++ b/dist/typology_gen/generate_typology.js @@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge Object.defineProperty(exports, "__esModule", { value: true }); exports.GenerateTypology = void 0; const logger_1 = require("../logger"); +const typology_gen_schema_1 = require("../schema/typology_gen/typology_gen_schema"); class GenerateTypology { constructor(openAiService, prompt, content, expected_fields) { this.prompt = ""; @@ -24,7 +25,8 @@ class GenerateTypology { return __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d, _e; try { - const response = yield ((_a = this.openAiService) === null || _a === void 0 ? void 0 : _a.sendRequest(this.prompt, this.content)); + const schema = typology_gen_schema_1.typologySchema; + const response = yield ((_a = this.openAiService) === null || _a === void 0 ? void 0 : _a.sendRequest(this.prompt, this.content, schema)); response["request_type"] = { type: "breadth", n: 1, diff --git a/dist/typology_gen/generate_typology.js.map b/dist/typology_gen/generate_typology.js.map index cebfc7b..45ebf75 100644 --- a/dist/typology_gen/generate_typology.js.map +++ b/dist/typology_gen/generate_typology.js.map @@ -1 +1 @@ -{"version":3,"file":"generate_typology.js","sourceRoot":"","sources":["../../src/typology_gen/generate_typology.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"generate_typology.js","sourceRoot":"","sources":["../../src/typology_gen/generate_typology.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/parse_openai_response.d.ts b/dist/utils/parse_openai_response.d.ts index 67b1872..6c92193 100644 --- a/dist/utils/parse_openai_response.d.ts +++ b/dist/utils/parse_openai_response.d.ts @@ -1,4 +1,4 @@ -export declare function parseOpenAiSuccessResponse(responseData: any): { +export declare function parseOpenAiSuccessResponse(responseData: any, containsSchema?: boolean): { status_code: number; usage_data: any; generated_content: any; diff --git a/dist/utils/parse_openai_response.d.ts.map b/dist/utils/parse_openai_response.d.ts.map index f7c0451..b491146 100644 --- a/dist/utils/parse_openai_response.d.ts.map +++ b/dist/utils/parse_openai_response.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"parse_openai_response.d.ts","sourceRoot":"","sources":["../../src/utils/parse_openai_response.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,GAAG;;;;;EAU3D;AAED,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,GAAG;;;EAM5D"} \ No newline at end of file +{"version":3,"file":"parse_openai_response.d.ts","sourceRoot":"","sources":["../../src/utils/parse_openai_response.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,GAAG,EACjB,cAAc,GAAE,OAAe;;;;;EAkBhC;AAED,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,GAAG;;;EAM5D"} \ No newline at end of file diff --git a/dist/utils/parse_openai_response.js b/dist/utils/parse_openai_response.js index 051a17e..32823ba 100644 --- a/dist/utils/parse_openai_response.js +++ b/dist/utils/parse_openai_response.js @@ -2,8 +2,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.parseOpenAiSuccessResponse = parseOpenAiSuccessResponse; exports.parseOpenAiFailureResponse = parseOpenAiFailureResponse; -function parseOpenAiSuccessResponse(responseData) { - let choices = JSON.parse(responseData.choices[0].message.content); +function parseOpenAiSuccessResponse(responseData, containsSchema = false) { + let choices = []; + if (containsSchema) { + choices = JSON.parse(responseData.choices[0].message.tool_calls[0].function.arguments); + } + else { + choices = JSON.parse(responseData.choices[0].message.content); + } let usuage = responseData.usage; let createdTime = responseData.created; return { diff --git a/dist/utils/parse_openai_response.js.map b/dist/utils/parse_openai_response.js.map index 1bea573..4c211d4 100644 --- a/dist/utils/parse_openai_response.js.map +++ b/dist/utils/parse_openai_response.js.map @@ -1 +1 @@ -{"version":3,"file":"parse_openai_response.js","sourceRoot":"","sources":["../../src/utils/parse_openai_response.ts"],"names":[],"mappings":";;AAAA,gEAUC;AAED,gEAMC;AAlBD,SAAgB,0BAA0B,CAAC,YAAiB;IAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;IAChC,IAAI,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;IACvC,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,MAAM;QAClB,iBAAiB,EAAE,OAAO;QAC1B,YAAY,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CAAC,aAAkB;;IAC3D,mBAAmB;IACnB,OAAO;QACL,WAAW,EAAE,aAAa,CAAC,MAAM;QACjC,OAAO,EAAE,MAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,KAAK,0CAAE,IAAI;KACzC,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"parse_openai_response.js","sourceRoot":"","sources":["../../src/utils/parse_openai_response.ts"],"names":[],"mappings":";;AAAA,gEAoBC;AAED,gEAMC;AA5BD,SAAgB,0BAA0B,CACxC,YAAiB,EACjB,iBAA0B,KAAK;IAE/B,IAAI,OAAO,GAAQ,EAAE,CAAC;IACtB,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,KAAK,CAClB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CACjE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;IAChC,IAAI,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;IACvC,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,MAAM;QAClB,iBAAiB,EAAE,OAAO;QAC1B,YAAY,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CAAC,aAAkB;;IAC3D,mBAAmB;IACnB,OAAO;QACL,WAAW,EAAE,aAAa,CAAC,MAAM;QACjC,OAAO,EAAE,MAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,KAAK,0CAAE,IAAI;KACzC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index eeea826..088b468 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,23 @@ { "name": "only_ever_generator", - "version": "0.8.8", - "lockfileVersion": 3, + "version": "0.9.0", + "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "only_ever_generator", - "version": "0.8.8", + "version": "0.9.0", "license": "ISC", "dependencies": { "@qdrant/js-client-rest": "^1.14.0", "axios": "^1.9.0", - "n": "^10.1.0", "stable": "^0.1.8" }, "devDependencies": { + "@types/express": "^5.0.2", "@types/node": "^22.15.3", "dotenv": "^16.5.0", + "express": "^5.1.0", "nodemon": "^3.1.10", "ts-node": "^10.9.2", "typescript": "^5.8.3" @@ -27,7 +28,6 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -39,7 +39,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "license": "MIT", "engines": { "node": ">=14" } @@ -49,7 +48,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -58,15 +56,13 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -76,7 +72,6 @@ "version": "1.14.0", "resolved": "https://registry.npmjs.org/@qdrant/js-client-rest/-/js-client-rest-1.14.0.tgz", "integrity": "sha512-2sM2g17FSkN2sNCSeAfqxHRr+SPEVnUQLXBjVv/whm4YQ4JjZ53Jiy1iShk95G+xBf3hKBhJdj8itRnor03IYw==", - "license": "Apache-2.0", "dependencies": { "@qdrant/openapi-typescript-fetch": "1.2.6", "@sevinf/maybe": "0.5.0", @@ -94,7 +89,6 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/@qdrant/openapi-typescript-fetch/-/openapi-typescript-fetch-1.2.6.tgz", "integrity": "sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA==", - "license": "MIT", "engines": { "node": ">=18.0.0", "pnpm": ">=8" @@ -103,53 +97,167 @@ "node_modules/@sevinf/maybe": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@sevinf/maybe/-/maybe-0.5.0.tgz", - "integrity": "sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg==", - "license": "MIT" + "integrity": "sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg==" }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.2.tgz", + "integrity": "sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, "node_modules/@types/node": { - "version": "22.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", - "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", + "version": "22.15.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz", + "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -162,7 +270,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^8.11.0" }, @@ -175,7 +282,6 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -188,20 +294,17 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", - "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -212,15 +315,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -228,12 +329,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -244,7 +364,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -252,11 +371,19 @@ "node": ">=8" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -265,12 +392,27 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -294,7 +436,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -306,22 +447,58 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=6.6.0" + } }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -338,17 +515,24 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", "engines": { "node": ">=0.4.0" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -358,7 +542,6 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -370,7 +553,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -380,11 +562,25 @@ "node": ">= 0.4" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -393,7 +589,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -402,7 +597,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -414,7 +608,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -425,12 +618,89 @@ "node": ">= 0.4" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -438,6 +708,23 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dev": true, + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -448,7 +735,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -462,7 +748,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -473,25 +758,22 @@ "node": ">= 6" } }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, "engines": { "node": ">= 0.6" } }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/fsevents": { @@ -500,7 +782,6 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -513,7 +794,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -522,7 +802,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -546,7 +825,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -560,7 +838,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -572,7 +849,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -585,7 +861,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -594,7 +869,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -606,7 +880,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -621,7 +894,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -629,19 +901,60 @@ "node": ">= 0.4" } }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, - "license": "ISC" + "engines": { + "node": ">= 0.10" + } }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -654,7 +967,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -664,7 +976,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -677,33 +988,75 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -715,22 +1068,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" + "dev": true }, - "node_modules/n": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/n/-/n-10.1.0.tgz", - "integrity": "sha512-P6uzqlGmqh1eDiMjob/5QR3INWuYdaEJP+yb5tThxxQYdS2fxaRGzavNfR+1gVf8K4yIWeVdzi48hGKJLUHg2Q==", - "license": "MIT", - "os": [ - "!win32" - ], - "bin": { - "n": "bin/n" - }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, "engines": { - "node": "*" + "node": ">= 0.6" } }, "node_modules/nodemon": { @@ -738,7 +1084,6 @@ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": "^3.5.2", "debug": "^4", @@ -767,69 +1112,343 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "ee-first": "1.1.1" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.8" } }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { "node": ">=10" } }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dev": true, + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -841,15 +1460,22 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "license": "MIT" + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -862,7 +1488,6 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -870,12 +1495,20 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/touch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", "dev": true, - "license": "ISC", "bin": { "nodetouch": "bin/nodetouch.js" } @@ -885,7 +1518,6 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -924,12 +1556,45 @@ } } }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -942,14 +1607,12 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/undici": { "version": "5.28.5", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", - "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -961,25 +1624,1253 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 0.8" + } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } } + }, + "dependencies": { + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@qdrant/js-client-rest": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@qdrant/js-client-rest/-/js-client-rest-1.14.0.tgz", + "integrity": "sha512-2sM2g17FSkN2sNCSeAfqxHRr+SPEVnUQLXBjVv/whm4YQ4JjZ53Jiy1iShk95G+xBf3hKBhJdj8itRnor03IYw==", + "requires": { + "@qdrant/openapi-typescript-fetch": "1.2.6", + "@sevinf/maybe": "0.5.0", + "undici": "~5.28.5" + } + }, + "@qdrant/openapi-typescript-fetch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@qdrant/openapi-typescript-fetch/-/openapi-typescript-fetch-1.2.6.tgz", + "integrity": "sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA==" + }, + "@sevinf/maybe": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sevinf/maybe/-/maybe-0.5.0.tgz", + "integrity": "sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg==" + }, + "@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.2.tgz", + "integrity": "sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "@types/node": { + "version": "22.15.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz", + "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, + "@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "requires": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "requires": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "dependencies": { + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + } + } + }, + "acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true + }, + "acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "requires": { + "acorn": "^8.11.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, + "body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "requires": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true + }, + "cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, + "requires": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "dependencies": { + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + } + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dev": true, + "requires": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + } + }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, + "media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true + }, + "merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true + }, + "nodemon": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", + "dev": true, + "requires": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "requires": { + "side-channel": "^1.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "requires": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true + }, + "send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, + "requires": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "dependencies": { + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + } + } + }, + "serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dev": true, + "requires": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + } + }, + "simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true + }, + "ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "requires": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "dependencies": { + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + } + } + }, + "typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==" + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "undici": { + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "requires": { + "@fastify/busboy": "^2.0.0" + } + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } } } diff --git a/package.json b/package.json index 55fb026..c04bac2 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,10 @@ "license": "ISC", "description": "", "devDependencies": { - + "@types/express": "^5.0.2", "@types/node": "^22.15.3", "dotenv": "^16.5.0", - + "express": "^5.1.0", "nodemon": "^3.1.10", "ts-node": "^10.9.2", "typescript": "^5.8.3" @@ -25,7 +25,6 @@ "dependencies": { "@qdrant/js-client-rest": "^1.14.0", "axios": "^1.9.0", - "n": "^10.1.0", "stable": "^0.1.8" }, "eslintConfig": { diff --git a/src/card_gen/generate_cards.ts b/src/card_gen/generate_cards.ts index 097eb7b..729c9c2 100644 --- a/src/card_gen/generate_cards.ts +++ b/src/card_gen/generate_cards.ts @@ -24,7 +24,6 @@ export class GenerateCards { prompt, parsedContent, schema, - "test_cards" ); var updatedNumber = n + 1; diff --git a/src/schema/typology_gen/typology_gen_schema.ts b/src/schema/typology_gen/typology_gen_schema.ts new file mode 100644 index 0000000..d5fc7d7 --- /dev/null +++ b/src/schema/typology_gen/typology_gen_schema.ts @@ -0,0 +1,51 @@ +export const typologySchema = { + type: "function", + function: { + name: "generate_typology", + parameters: { + type: "object", + properties: { + field: { + type: "array", + items: { type: "string" } + }, + concepts: { + type: "array", + items: { + type: "object", + properties: { + concept_text: { type: "string" }, + reference: { type: "string" } + }, + required: ["concept_text", "reference"] + } + }, + facts: { + type: "array", + items: { + type: "object", + properties: { + fact_text: { type: "string" }, + reference: { type: "string" } + }, + required: ["fact_text", "reference"] + } + }, + generate_cards: { + type: "object", + properties: { + state: { type: "boolean" }, + reason: { type: "string" } + }, + required: ["state", "reason"] + }, + summary_cards: { + type: "array", + items: { type: "string" } + } + }, + required: ["field", "concepts", "facts", "generate_cards", "summary_cards"] + } + } + }; + \ No newline at end of file diff --git a/src/services/open_ai_service.ts b/src/services/open_ai_service.ts index de7d41d..301e5b9 100644 --- a/src/services/open_ai_service.ts +++ b/src/services/open_ai_service.ts @@ -21,7 +21,6 @@ export class OpenAiService { prompt: string, content: string, schema?: any, - fieldName?: string ) { try { let message = [ diff --git a/src/typology_gen/generate_typology.ts b/src/typology_gen/generate_typology.ts index 538c5a7..9771109 100644 --- a/src/typology_gen/generate_typology.ts +++ b/src/typology_gen/generate_typology.ts @@ -1,6 +1,6 @@ import { ErrorLogger } from "../logger"; import { OpenAiService } from "../services/open_ai_service"; - +import { typologySchema } from "../schema/typology_gen/typology_gen_schema"; export class GenerateTypology { public openAiService: OpenAiService; public prompt: string = ""; @@ -21,9 +21,11 @@ export class GenerateTypology { } async generate() { try { + const schema = typologySchema; const response = await this.openAiService?.sendRequest( this.prompt, - this.content + this.content, + schema ); response["request_type"] = { type: "breadth",