= form.querySelectorAll(query);\r\n\r\n const response = await getChatGPTResponse(config, question).catch(\r\n (error) => ({\r\n error,\r\n })\r\n );\r\n\r\n if (config.cursor)\r\n hiddenButton.style.cursor = config.infinite ? \"pointer\" : \"initial\";\r\n\r\n if (typeof response === \"object\" && \"error\" in response) {\r\n console.error(response.error);\r\n return;\r\n }\r\n\r\n if (config.logs) {\r\n Logs.question(question);\r\n Logs.response(response);\r\n }\r\n\r\n const handlers = [\r\n handleTextbox,\r\n handleNumber,\r\n handleSelect,\r\n handleRadioAndCheckbox,\r\n ];\r\n\r\n for (const handler of handlers) {\r\n if (handler(config, inputList, response)) return;\r\n }\r\n\r\n handleClipboard(config, response);\r\n}\r\n\r\nexport default reply;\r\n","import Config from \"../types/config\";\r\nimport titleIndications from \"../utils/title-indications\";\r\nimport reply from \"./reply\";\r\n\r\nconst pressedKeys: string[] = [];\r\nconst listeners: {\r\n element: HTMLElement;\r\n fn: (this: HTMLElement, ev: MouseEvent) => any;\r\n}[] = [];\r\n\r\n/**\r\n * Create a listener on the keyboard to inject the code\r\n * @param config\r\n */\r\nfunction codeListener(config: Config) {\r\n document.body.addEventListener(\"keydown\", function (event) {\r\n pressedKeys.push(event.key);\r\n if (pressedKeys.length > config.code.length) pressedKeys.shift();\r\n if (pressedKeys.join(\"\") === config.code) {\r\n pressedKeys.length = 0;\r\n setUpMoodleGpt(config);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Setup moodleGPT into the page (remove/injection)\r\n * @param config\r\n * @returns\r\n */\r\nfunction setUpMoodleGpt(config: Config) {\r\n //removing events\r\n if (listeners.length > 0) {\r\n for (const listener of listeners) {\r\n if (config.cursor) listener.element.style.cursor = \"initial\";\r\n listener.element.removeEventListener(\"click\", listener.fn);\r\n }\r\n if (config.title) titleIndications(\"Removed\");\r\n listeners.length = 0;\r\n return;\r\n }\r\n\r\n //injection\r\n const inputQuery = [\"checkbox\", \"radio\", \"text\", \"number\"]\r\n .map((e) => `input[type=\"${e}\"]`)\r\n .join(\",\");\r\n const query = inputQuery + \", textarea, select\";\r\n const forms = Array.from(document.querySelectorAll(\".formulation\"));\r\n\r\n for (const form of forms) {\r\n const hiddenButton: HTMLElement = form.querySelector(\".qtext\");\r\n\r\n if (config.cursor) hiddenButton.style.cursor = \"pointer\";\r\n const fn = reply.bind(null, config, hiddenButton, form, query);\r\n listeners.push({ element: hiddenButton, fn });\r\n hiddenButton.addEventListener(\"click\", fn, { once: !config.infinite });\r\n }\r\n\r\n if (config.title) titleIndications(\"Injected\");\r\n}\r\n\r\nexport default codeListener;\r\n","import codeListener from \"./core/code-listener\";\r\n\r\nchrome.storage.sync.get([\"moodleGPT\"]).then(function (storage) {\r\n const config = storage.moodleGPT;\r\n\r\n if (!config) throw new Error(\"Please configure MoodleGPT into the extension\");\r\n\r\n codeListener(config);\r\n});\r\n"],"names":[],"mappings":"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","x_google_ignoreList":[1]}
\ No newline at end of file
diff --git a/extension/popup/index.html b/extension/popup/index.html
index e186268..d4971c8 100644
--- a/extension/popup/index.html
+++ b/extension/popup/index.html
@@ -45,6 +45,10 @@
+
+
+
+
@@ -63,6 +67,10 @@
+
+
+
+
Message
diff --git a/extension/popup/index.js b/extension/popup/index.js
index 0366410..3a64487 100644
--- a/extension/popup/index.js
+++ b/extension/popup/index.js
@@ -9,6 +9,8 @@ const inputsCheckbox = [
"typing",
"mouseover",
"infinite",
+ "table",
+ "timeout",
];
function showMessage(messageTxt, valide) {
@@ -23,9 +25,10 @@ saveBtn.addEventListener("click", function () {
const [apiKey, code, langage, model] = inputsText.map((selector) =>
document.querySelector("#" + selector).value.trim()
);
- const [logs, title, cursor, typing, mouseover, infinite] = inputsCheckbox.map(
- (selector) => document.querySelector("#" + selector).checked
- );
+ const [logs, title, cursor, typing, mouseover, infinite, table, timeout] =
+ inputsCheckbox.map(
+ (selector) => document.querySelector("#" + selector).checked
+ );
if (!apiKey || !code) {
showMessage("Please comple all the form");
@@ -49,6 +52,8 @@ saveBtn.addEventListener("click", function () {
typing,
mouseover,
infinite,
+ table,
+ timeout,
},
});
diff --git a/src/core/get-response.ts b/src/core/get-response.ts
index 368d4f8..43decad 100644
--- a/src/core/get-response.ts
+++ b/src/core/get-response.ts
@@ -11,12 +11,15 @@ async function getChatGPTResponse(
config: Config,
question: string
): Promise {
+ const controller = new AbortController();
+ const timeoutControler = setTimeout(() => controller.abort(), 10000);
const req = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${config.apiKey}`,
},
+ signal: config.timeout ? controller.signal : null,
body: JSON.stringify({
model:
config.model && config.model !== "" ? config.model : "gpt-3.5-turbo",
@@ -27,6 +30,7 @@ async function getChatGPTResponse(
stop: null,
}),
});
+ clearTimeout(timeoutControler);
const rep = await req.json();
const response = rep.choices[0].message.content;
return normalizeText(response);
diff --git a/src/core/normalize-question.ts b/src/core/normalize-question.ts
index e214ac7..c6f9b41 100644
--- a/src/core/normalize-question.ts
+++ b/src/core/normalize-question.ts
@@ -1,5 +1,6 @@
import Config from "../types/config";
import normalizeText from "../utils/normalize-text";
+import htmlTableToString from "../utils/html-table-to-string";
/**
* Normalize the question and add sub informations
@@ -7,10 +8,20 @@ import normalizeText from "../utils/normalize-text";
* @param question
* @returns
*/
-function normalizeQuestion(langage: Config["langage"], question: string) {
+function normalizeQuestion(config: Config, questionContainer: HTMLElement) {
+ let question = questionContainer.textContent;
+
+ if (config.table) {
+ //make table more readable for chat-gpt
+ const tables = questionContainer.querySelectorAll("table");
+ for (const table of tables) {
+ question = question.replace(table.textContent, htmlTableToString(table));
+ }
+ }
+
const finalQuestion = `Give a short response as possible for this question, reply in ${
- langage && langage !== ""
- ? 'this langage "' + langage + '"'
+ config.langage && config.langage !== ""
+ ? 'this langage "' + config.langage + '"'
: "the following question langage"
} and only show the result:
${question}
diff --git a/src/core/reply.ts b/src/core/reply.ts
index 10ea803..a7e5ede 100644
--- a/src/core/reply.ts
+++ b/src/core/reply.ts
@@ -26,19 +26,28 @@ async function reply(
form.querySelector(".accesshide")?.remove();
- const question = normalizeQuestion(config.langage, form.textContent);
+ const question = normalizeQuestion(config, form);
const inputList: NodeListOf = form.querySelectorAll(query);
- const response = await getChatGPTResponse(config, question);
+ const response = await getChatGPTResponse(config, question).catch(
+ (error) => ({
+ error,
+ })
+ );
+
+ if (config.cursor)
+ hiddenButton.style.cursor = config.infinite ? "pointer" : "initial";
+
+ if (typeof response === "object" && "error" in response) {
+ console.error(response.error);
+ return;
+ }
if (config.logs) {
Logs.question(question);
Logs.response(response);
}
- if (config.cursor)
- hiddenButton.style.cursor = config.infinite ? "pointer" : "initial";
-
const handlers = [
handleTextbox,
handleNumber,
diff --git a/src/types/config.d.ts b/src/types/config.d.ts
index ad0b704..2f53194 100644
--- a/src/types/config.d.ts
+++ b/src/types/config.d.ts
@@ -9,6 +9,8 @@ type Config = {
cursor?: boolean;
logs?: boolean;
title?: boolean;
+ table?: boolean;
+ timeout?: boolean;
};
export default Config;
diff --git a/src/utils/html-table-to-string.ts b/src/utils/html-table-to-string.ts
new file mode 100644
index 0000000..367ef9a
--- /dev/null
+++ b/src/utils/html-table-to-string.ts
@@ -0,0 +1,38 @@
+/**
+ * Convert table to representating string table
+ * @param table
+ * @returns
+ */
+function htmlTableToString(table: HTMLTableElement) {
+ const tab: string[][] = [];
+ const lines = Array.from(table.querySelectorAll("tr"));
+ const maxColumnsLength: number[] = [];
+ lines.map((line) => {
+ const cells = Array.from(line.querySelectorAll("td, th"));
+ const cellsContent = cells.map((cell, index) => {
+ const content = cell.textContent?.trim();
+ maxColumnsLength[index] = Math.max(
+ maxColumnsLength[index] || 0,
+ content.length || 0
+ );
+ return content;
+ });
+ tab.push(cellsContent);
+ });
+
+ const lineSeparationSize =
+ maxColumnsLength.reduce((a, b) => a + b) + tab[0].length + 1;
+ const lineSeparation =
+ "\n" + Array(lineSeparationSize).fill("-").join("") + "\n";
+
+ const mappedTab = tab.map((line) => {
+ const mappedLine = line.map((content, index) =>
+ content.padEnd(maxColumnsLength[index], "\u00A0")
+ );
+ return "|" + mappedLine.join("|") + "|";
+ });
+
+ return lineSeparation + mappedTab.join(lineSeparation) + lineSeparation;
+}
+
+export default htmlTableToString;