only_ever_generator 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap/app.d.ts +92 -0
- package/dist/bootstrap/app.d.ts.map +1 -0
- package/dist/bootstrap/app.js +120 -84
- package/dist/bootstrap/app.js.map +1 -0
- package/dist/card_gen/generate_cards.d.ts +7 -0
- package/dist/card_gen/generate_cards.d.ts.map +1 -0
- package/dist/card_gen/generate_cards.js +60 -0
- package/dist/card_gen/generate_cards.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -0
- package/dist/constants/api_constants.d.ts +3 -0
- package/dist/constants/api_constants.d.ts.map +1 -0
- package/dist/constants/api_constants.js +11 -0
- package/dist/constants/api_constants.js.map +1 -0
- package/dist/constants/prompt_data.d.ts +5 -0
- package/dist/constants/prompt_data.d.ts.map +1 -0
- package/dist/constants/prompt_data.js +303 -0
- package/dist/constants/prompt_data.js.map +1 -0
- package/dist/constants/prompts/card_gen_prompt.d.ts +2 -0
- package/dist/constants/prompts/card_gen_prompt.d.ts.map +1 -0
- package/dist/constants/prompts/card_gen_prompt.js +100 -203
- package/dist/constants/prompts/card_gen_prompt.js.map +1 -0
- package/dist/constants/prompts/typology_prompt.d.ts +2 -0
- package/dist/constants/prompts/typology_prompt.d.ts.map +1 -0
- package/dist/constants/prompts/typology_prompt.js +78 -34
- package/dist/constants/prompts/typology_prompt.js.map +1 -0
- package/dist/constants/source_data.d.ts +173 -0
- package/dist/constants/source_data.d.ts.map +1 -0
- package/dist/constants/source_data.js +962 -10
- package/dist/constants/source_data.js.map +1 -0
- package/dist/embedding_generation/consolidation/global_consolidation.d.ts +34 -0
- package/dist/embedding_generation/consolidation/global_consolidation.d.ts.map +1 -0
- package/dist/embedding_generation/consolidation/global_consolidation.js +77 -0
- package/dist/embedding_generation/consolidation/global_consolidation.js.map +1 -0
- package/dist/embedding_generation/consolidation/local_consolidation.d.ts +39 -0
- package/dist/embedding_generation/consolidation/local_consolidation.d.ts.map +1 -0
- package/dist/embedding_generation/consolidation/local_consolidation.js +105 -0
- package/dist/embedding_generation/consolidation/local_consolidation.js.map +1 -0
- package/dist/embedding_generation/consolidation/write_consolidated_data.d.ts +46 -0
- package/dist/embedding_generation/consolidation/write_consolidated_data.d.ts.map +1 -0
- package/dist/embedding_generation/consolidation/write_consolidated_data.js +69 -0
- package/dist/embedding_generation/consolidation/write_consolidated_data.js.map +1 -0
- package/dist/embedding_generation/generate_embeddings.d.ts +28 -0
- package/dist/embedding_generation/generate_embeddings.d.ts.map +1 -0
- package/dist/embedding_generation/generate_embeddings.js +54 -0
- package/dist/embedding_generation/generate_embeddings.js.map +1 -0
- package/dist/embedding_generation/parse_embedding_response.d.ts +26 -0
- package/dist/embedding_generation/parse_embedding_response.d.ts.map +1 -0
- package/dist/embedding_generation/parse_embedding_response.js +29 -0
- package/dist/embedding_generation/parse_embedding_response.js.map +1 -0
- package/dist/gap_fill/calculate_gap_fill.d.ts +5 -0
- package/dist/gap_fill/calculate_gap_fill.d.ts.map +1 -0
- package/dist/gap_fill/calculate_gap_fill.js +43 -0
- package/dist/gap_fill/calculate_gap_fill.js.map +1 -0
- package/dist/helper/qdrant_db_methods.d.ts +40 -0
- package/dist/helper/qdrant_db_methods.d.ts.map +1 -0
- package/dist/helper/qdrant_db_methods.js +63 -0
- package/dist/helper/qdrant_db_methods.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -140
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +6 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +42 -0
- package/dist/logger.js.map +1 -0
- package/dist/parse/parse_card/parse_cloze_card.d.ts +10 -0
- package/dist/parse/parse_card/parse_cloze_card.d.ts.map +1 -0
- package/dist/parse/parse_card/parse_cloze_card.js +126 -0
- package/dist/parse/parse_card/parse_cloze_card.js.map +1 -0
- package/dist/parse/parse_card/parse_flash_cards.d.ts +19 -0
- package/dist/parse/parse_card/parse_flash_cards.d.ts.map +1 -0
- package/dist/parse/parse_card/parse_flash_cards.js +34 -0
- package/dist/parse/parse_card/parse_flash_cards.js.map +1 -0
- package/dist/parse/parse_card/parse_match_card.d.ts +16 -0
- package/dist/parse/parse_card/parse_match_card.d.ts.map +1 -0
- package/dist/parse/parse_card/parse_match_card.js +82 -0
- package/dist/parse/parse_card/parse_match_card.js.map +1 -0
- package/dist/parse/parse_card/parse_mcq_card.d.ts +24 -0
- package/dist/parse/parse_card/parse_mcq_card.d.ts.map +1 -0
- package/dist/parse/parse_card/parse_mcq_card.js +104 -0
- package/dist/parse/parse_card/parse_mcq_card.js.map +1 -0
- package/dist/parse/parse_card_response.d.ts +19 -0
- package/dist/parse/parse_card_response.d.ts.map +1 -0
- package/dist/parse/parse_card_response.js +100 -0
- package/dist/parse/parse_card_response.js.map +1 -0
- package/dist/parse/parse_source_content.d.ts +25 -0
- package/dist/parse/parse_source_content.d.ts.map +1 -0
- package/dist/parse/parse_source_content.js +186 -0
- package/dist/parse/parse_source_content.js.map +1 -0
- package/dist/parse/response_format_card.d.ts +177 -0
- package/dist/parse/response_format_card.d.ts.map +1 -0
- package/dist/parse/response_format_card.js +372 -0
- package/dist/parse/response_format_card.js.map +1 -0
- package/dist/parse/response_format_typology.d.ts +2 -0
- package/dist/parse/response_format_typology.d.ts.map +1 -0
- package/dist/{parse_response → parse}/response_format_typology.js +18 -18
- package/dist/parse/response_format_typology.js.map +1 -0
- package/dist/services/open_ai_service.d.ts +16 -0
- package/dist/services/open_ai_service.d.ts.map +1 -0
- package/dist/services/open_ai_service.js +92 -0
- package/dist/services/open_ai_service.js.map +1 -0
- package/dist/services/qdrant_service.d.ts +4 -0
- package/dist/services/qdrant_service.d.ts.map +1 -0
- package/dist/services/qdrant_service.js +14 -0
- package/dist/services/qdrant_service.js.map +1 -0
- package/dist/typology-parsed-response.d.ts +62 -0
- package/dist/typology-parsed-response.d.ts.map +1 -0
- package/dist/typology-parsed-response.js +1936 -0
- package/dist/typology-parsed-response.js.map +1 -0
- package/dist/typology_gen/generate_typology.d.ts +29 -0
- package/dist/typology_gen/generate_typology.d.ts.map +1 -0
- package/dist/typology_gen/generate_typology.js +92 -15
- package/dist/typology_gen/generate_typology.js.map +1 -0
- package/dist/utils/generate_args.d.ts +8 -0
- package/dist/utils/generate_args.d.ts.map +1 -0
- package/dist/utils/generate_args.js +28 -0
- package/dist/utils/generate_args.js.map +1 -0
- package/dist/utils/parse_openai_response.d.ts +11 -0
- package/dist/utils/parse_openai_response.d.ts.map +1 -0
- package/dist/utils/parse_openai_response.js +11 -10
- package/dist/utils/parse_openai_response.js.map +1 -0
- package/package.json +19 -7
- package/prompts.json +23 -0
- package/readme.md +16 -13
- package/src/bootstrap/app.ts +167 -107
- package/src/card_gen/generate_cards.ts +58 -0
- package/src/config.ts +5 -3
- package/src/constants/api_constants.ts +7 -0
- package/src/constants/prompt_data.ts +301 -0
- package/src/constants/prompts/card_gen_prompt.ts +101 -208
- package/src/constants/prompts/typology_prompt.ts +81 -33
- package/src/constants/source_data.ts +1029 -23
- package/src/embedding_generation/consolidation/global_consolidation.ts +96 -0
- package/src/embedding_generation/consolidation/local_consolidation.ts +141 -0
- package/src/embedding_generation/consolidation/write_consolidated_data.ts +98 -0
- package/src/embedding_generation/generate_embeddings.ts +41 -0
- package/src/embedding_generation/parse_embedding_response.ts +31 -0
- package/src/gap_fill/calculate_gap_fill.ts +50 -0
- package/src/helper/qdrant_db_methods.ts +77 -0
- package/src/index.ts +98 -164
- package/src/logger.ts +30 -0
- package/src/parse/parse_card/parse_cloze_card.ts +136 -0
- package/src/parse/parse_card/parse_flash_cards.ts +33 -0
- package/src/parse/parse_card/parse_match_card.ts +94 -0
- package/src/parse/parse_card/parse_mcq_card.ts +105 -0
- package/src/parse/parse_card_response.ts +117 -0
- package/src/parse/parse_source_content.ts +202 -0
- package/src/parse/response_format_card.ts +386 -0
- package/src/parse/response_format_typology.ts +44 -0
- package/src/services/open_ai_service.ts +88 -0
- package/src/services/qdrant_service.ts +10 -0
- package/src/typology-parsed-response.ts +1932 -0
- package/src/typology_gen/generate_typology.ts +101 -12
- package/src/utils/generate_args.ts +29 -0
- package/src/utils/parse_openai_response.ts +17 -19
- package/tsconfig.json +8 -3
- package/dist/class/parse/parse_source_content.js +0 -62
- package/dist/class/services/open_ai_service.js +0 -25
- package/dist/parse_response/response_format_card.js +0 -210
- package/dist/service/open_ai_request.js +0 -58
- package/src/class/parse/parse_source_content.ts +0 -71
- package/src/class/services/open_ai_service.ts +0 -18
- package/src/parse_response/response_format_card.ts +0 -211
- package/src/parse_response/response_format_typology.ts +0 -44
- package/src/service/open_ai_request.ts +0 -46
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParseFlashCard = void 0;
|
|
4
|
+
class ParseFlashCard {
|
|
5
|
+
parse(data) {
|
|
6
|
+
try {
|
|
7
|
+
let displayTitle = this.generateFlashCardDisplayTitle(data.card_content.front, data.card_content.back);
|
|
8
|
+
let flashCardData = {
|
|
9
|
+
type: {
|
|
10
|
+
category: "learning",
|
|
11
|
+
sub_type: data.type,
|
|
12
|
+
},
|
|
13
|
+
heading: "",
|
|
14
|
+
displayTitle: displayTitle,
|
|
15
|
+
content: {
|
|
16
|
+
front_content: data.card_content.front,
|
|
17
|
+
back_content: data.card_content.back,
|
|
18
|
+
},
|
|
19
|
+
concepts: data.concepts,
|
|
20
|
+
explanation: data.card_content.explanation,
|
|
21
|
+
facts: data.facts,
|
|
22
|
+
};
|
|
23
|
+
return flashCardData;
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
generateFlashCardDisplayTitle(front, back) {
|
|
30
|
+
return `${front} ---- ${back}`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.ParseFlashCard = ParseFlashCard;
|
|
34
|
+
//# sourceMappingURL=parse_flash_cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_flash_cards.js","sourceRoot":"","sources":["../../../src/parse/parse_card/parse_flash_cards.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IACzB,KAAK,CAAC,IAAS;QACb,IAAI,CAAC;YACH,IAAI,YAAY,GAAG,IAAI,CAAC,6BAA6B,CACnD,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CACvB,CAAC;YACF,IAAI,aAAa,GAAG;gBAClB,IAAI,EAAE;oBACJ,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,IAAI,CAAC,IAAI;iBACpB;gBACD,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,YAAY;gBAC1B,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;oBACtC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;iBACrC;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;YAEF,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,6BAA6B,CAAC,KAAa,EAAE,IAAY;QACvD,OAAO,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC;IACjC,CAAC;CACF;AAhCD,wCAgCC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type InputItem = {
|
|
2
|
+
left_item: string;
|
|
3
|
+
right_item: string;
|
|
4
|
+
};
|
|
5
|
+
type OutputItem = {
|
|
6
|
+
left_item: string;
|
|
7
|
+
right_item: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare class ParseMatchCard {
|
|
10
|
+
parse(cardData: any): any;
|
|
11
|
+
_generateMatchCardDisplayTitle(answers: any): string;
|
|
12
|
+
_parseMatchContent: (input: InputItem[]) => OutputItem[];
|
|
13
|
+
_validateMatch(matchCard: any): any;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=parse_match_card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_match_card.d.ts","sourceRoot":"","sources":["../../../src/parse/parse_card/parse_match_card.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,qBAAa,cAAc;IACzB,KAAK,CAAC,QAAQ,EAAE,GAAG;IA0BnB,8BAA8B,CAAC,OAAO,EAAE,GAAG;IAc3C,kBAAkB,UAAW,SAAS,EAAE,KAAG,UAAU,EAAE,CAarD;IAEF,cAAc,CAAC,SAAS,EAAE,GAAG;CAyB9B"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParseMatchCard = void 0;
|
|
4
|
+
class ParseMatchCard {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._parseMatchContent = (input) => {
|
|
7
|
+
const grouped = input.reduce((acc, { left_item, right_item }) => {
|
|
8
|
+
if (!acc[left_item]) {
|
|
9
|
+
acc[left_item] = { left_item, right_item: [] };
|
|
10
|
+
}
|
|
11
|
+
acc[left_item].right_item.push(right_item);
|
|
12
|
+
return acc;
|
|
13
|
+
}, {});
|
|
14
|
+
return Object.values(grouped);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
parse(cardData) {
|
|
18
|
+
try {
|
|
19
|
+
let content = cardData.card_content;
|
|
20
|
+
const finalContent = this._parseMatchContent(content);
|
|
21
|
+
let displayTitle = this._generateMatchCardDisplayTitle(content);
|
|
22
|
+
let matchCard = {
|
|
23
|
+
type: {
|
|
24
|
+
category: "learning",
|
|
25
|
+
sub_type: cardData.type,
|
|
26
|
+
},
|
|
27
|
+
heading: "",
|
|
28
|
+
content: finalContent,
|
|
29
|
+
// content: cardData.card_content,
|
|
30
|
+
displayTitle: displayTitle,
|
|
31
|
+
concepts: cardData.concepts,
|
|
32
|
+
facts: cardData.facts,
|
|
33
|
+
explanation: cardData.card_content.explanation,
|
|
34
|
+
};
|
|
35
|
+
return this._validateMatch(matchCard);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
_generateMatchCardDisplayTitle(answers) {
|
|
42
|
+
let titles = [];
|
|
43
|
+
let counter = 65;
|
|
44
|
+
for (let data of answers) {
|
|
45
|
+
let value = data.right_item;
|
|
46
|
+
let leftData = data.left_item;
|
|
47
|
+
let letter = String.fromCharCode(counter);
|
|
48
|
+
titles.push(`${letter}. ${leftData} -- ${value}`);
|
|
49
|
+
counter++;
|
|
50
|
+
}
|
|
51
|
+
let displayTitle = titles.join(",");
|
|
52
|
+
return displayTitle;
|
|
53
|
+
}
|
|
54
|
+
_validateMatch(matchCard) {
|
|
55
|
+
let matches = matchCard.content;
|
|
56
|
+
let content = [];
|
|
57
|
+
try {
|
|
58
|
+
if (matches.length < 1 || matches.length > 8) {
|
|
59
|
+
throw Error("Invalid number of matches");
|
|
60
|
+
}
|
|
61
|
+
for (let elem of matches) {
|
|
62
|
+
if (elem.left_item.length <= 30 && elem.left_item.length != 0) {
|
|
63
|
+
if (elem.right_item.length <= 40 && elem.right_item.length != 0) {
|
|
64
|
+
content.push(elem);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (content.length >= 2) {
|
|
69
|
+
matchCard.content = content;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw Error("Invalid content");
|
|
73
|
+
}
|
|
74
|
+
return matchCard;
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ParseMatchCard = ParseMatchCard;
|
|
82
|
+
//# sourceMappingURL=parse_match_card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_match_card.js","sourceRoot":"","sources":["../../../src/parse/parse_card/parse_match_card.ts"],"names":[],"mappings":";;;AAYA,MAAa,cAAc;IAA3B;QAyCE,uBAAkB,GAAG,CAAC,KAAkB,EAAgB,EAAE;YACxD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;gBACjC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;gBACjD,CAAC;gBACD,GAAG,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAE,CACH,CAAC;YAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;IA2BJ,CAAC;IAhFC,KAAK,CAAC,QAAa;QACjB,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEtD,IAAI,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,SAAS,GAAG;gBACd,IAAI,EAAE;oBACJ,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,QAAQ,CAAC,IAAI;iBACxB;gBACD,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,YAAY;gBACrB,mCAAmC;gBACnC,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW;aAC/C,CAAC;YAEF,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,8BAA8B,CAAC,OAAY;QACzC,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,QAAQ,OAAO,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,YAAY,CAAC;IACtB,CAAC;IAiBD,cAAc,CAAC,SAAc;QAC3B,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,CAAC;YAED,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBAChE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAjFD,wCAiFC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare class ParseMcqCard {
|
|
2
|
+
parse(data: any): {
|
|
3
|
+
type: {
|
|
4
|
+
category: string;
|
|
5
|
+
sub_type: any;
|
|
6
|
+
};
|
|
7
|
+
heading: string;
|
|
8
|
+
displayTitle: string;
|
|
9
|
+
content: {
|
|
10
|
+
question: any;
|
|
11
|
+
answers: {
|
|
12
|
+
answer: any;
|
|
13
|
+
is_correct: any;
|
|
14
|
+
}[];
|
|
15
|
+
};
|
|
16
|
+
concepts: any;
|
|
17
|
+
facts: any;
|
|
18
|
+
explanation: any;
|
|
19
|
+
} | null;
|
|
20
|
+
_generateMcqCardDisplayTitle(question: string, answers: any): string;
|
|
21
|
+
_validate(mcqCard: any): boolean;
|
|
22
|
+
_checkIfAllAnswersAreWrong(answers: any[]): boolean;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=parse_mcq_card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_mcq_card.d.ts","sourceRoot":"","sources":["../../../src/parse/parse_card/parse_mcq_card.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,KAAK,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;;IA+Cf,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAqB3D,SAAS,CAAC,OAAO,EAAE,GAAG;IA2BtB,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE;CAQ1C"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParseMcqCard = void 0;
|
|
4
|
+
class ParseMcqCard {
|
|
5
|
+
parse(data) {
|
|
6
|
+
try {
|
|
7
|
+
let mcqAnswers = [];
|
|
8
|
+
if (data.card_content.choices !== undefined &&
|
|
9
|
+
data.card_content.choices.length != 0) {
|
|
10
|
+
for (let choice of data.card_content.choices) {
|
|
11
|
+
let answer = {
|
|
12
|
+
answer: choice.choice,
|
|
13
|
+
is_correct: choice.is_correct,
|
|
14
|
+
};
|
|
15
|
+
mcqAnswers.push(answer);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
let displayTitle = this._generateMcqCardDisplayTitle(data.card_content.prompt, mcqAnswers);
|
|
19
|
+
let mcqCard = {
|
|
20
|
+
type: {
|
|
21
|
+
category: "learning",
|
|
22
|
+
sub_type: data.type,
|
|
23
|
+
},
|
|
24
|
+
heading: "",
|
|
25
|
+
displayTitle: displayTitle,
|
|
26
|
+
content: {
|
|
27
|
+
question: data.card_content.prompt,
|
|
28
|
+
answers: mcqAnswers,
|
|
29
|
+
},
|
|
30
|
+
concepts: data.concepts,
|
|
31
|
+
facts: data.facts,
|
|
32
|
+
explanation: data.card_content.explanation,
|
|
33
|
+
};
|
|
34
|
+
// return mcqCard;
|
|
35
|
+
const isValid = this._validate(mcqCard);
|
|
36
|
+
if (isValid == true) {
|
|
37
|
+
return mcqCard;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
_generateMcqCardDisplayTitle(question, answers) {
|
|
48
|
+
let answersString = [];
|
|
49
|
+
if (answers.length != 0) {
|
|
50
|
+
for (let option of answers) {
|
|
51
|
+
let currentIndex = answers.indexOf(option) + 1;
|
|
52
|
+
let temp = `${currentIndex} . ${option.answer} `;
|
|
53
|
+
answersString.push(temp);
|
|
54
|
+
}
|
|
55
|
+
let resultString = answersString.join("");
|
|
56
|
+
let finalDisplayTitle = `${question} ---- ${resultString}`;
|
|
57
|
+
return finalDisplayTitle;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return question;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/// validate mcq card
|
|
64
|
+
// 1. Check if atleast 1 correct answer exists
|
|
65
|
+
// 2. Length of answer shouldnt exceed 24 chars
|
|
66
|
+
// 3. Length of question shouldnt exceed 90 chars
|
|
67
|
+
// 4. If Any option is Empty
|
|
68
|
+
_validate(mcqCard) {
|
|
69
|
+
var _a;
|
|
70
|
+
try {
|
|
71
|
+
let isQuestionValid = mcqCard.content.question.length <= 90;
|
|
72
|
+
if (!isQuestionValid) {
|
|
73
|
+
throw new Error("Question length exceeded");
|
|
74
|
+
}
|
|
75
|
+
/// check if all are wrong answers
|
|
76
|
+
let exists = this._checkIfAllAnswersAreWrong(mcqCard.content.answers);
|
|
77
|
+
if (exists) {
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw new Error("Every answers are wrong");
|
|
81
|
+
}
|
|
82
|
+
/// check if answers are of length <40 or is 0
|
|
83
|
+
let answerWhoseLengthisGreaterThan40or0 = ((_a = mcqCard.content.answers) !== null && _a !== void 0 ? _a : []).find((e) => e.answer.length == 0 || e.answer.length > 40);
|
|
84
|
+
if (answerWhoseLengthisGreaterThan40or0) {
|
|
85
|
+
throw new Error("Option has length more than 40 or is Empty");
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_checkIfAllAnswersAreWrong(answers) {
|
|
94
|
+
let rightAnswer = answers.find((e) => e.is_correct == true);
|
|
95
|
+
if (rightAnswer) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.ParseMcqCard = ParseMcqCard;
|
|
104
|
+
//# sourceMappingURL=parse_mcq_card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_mcq_card.js","sourceRoot":"","sources":["../../../src/parse/parse_card/parse_mcq_card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class ParseCardResponse {
|
|
2
|
+
parse(generatedData: any, isGapFill: boolean, sourceTaxonomy: any): {
|
|
3
|
+
status_code: number;
|
|
4
|
+
metadata: any;
|
|
5
|
+
type: any;
|
|
6
|
+
cards_data: any[];
|
|
7
|
+
} | {
|
|
8
|
+
status_code: number;
|
|
9
|
+
metadata: any;
|
|
10
|
+
type: any;
|
|
11
|
+
cards_data?: undefined;
|
|
12
|
+
};
|
|
13
|
+
_getCardReference(generatedCardData: any, sourceTaxonomy: any): any;
|
|
14
|
+
_mapIdToConcepts(cardConcepts: any[], sourceConceptsFacts: any[]): {
|
|
15
|
+
id: any;
|
|
16
|
+
text: any;
|
|
17
|
+
}[];
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=parse_card_response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_card_response.d.ts","sourceRoot":"","sources":["../../src/parse/parse_card_response.ts"],"names":[],"mappings":"AAMA,qBAAa,iBAAiB;IAC5B,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG;;;;;;;;;;;IA2EjE,iBAAiB,CAAC,iBAAiB,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG;IAiB7D,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE;;;;CAiBjE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParseCardResponse = void 0;
|
|
4
|
+
const parse_cloze_card_1 = require("./parse_card/parse_cloze_card");
|
|
5
|
+
const parse_flash_cards_1 = require("./parse_card/parse_flash_cards");
|
|
6
|
+
const parse_match_card_1 = require("./parse_card/parse_match_card");
|
|
7
|
+
const parse_mcq_card_1 = require("./parse_card/parse_mcq_card");
|
|
8
|
+
class ParseCardResponse {
|
|
9
|
+
parse(generatedData, isGapFill, sourceTaxonomy) {
|
|
10
|
+
let usage_data = generatedData.metadata;
|
|
11
|
+
try {
|
|
12
|
+
const cardData = [];
|
|
13
|
+
const unparsedTestCards = generatedData.generated_content.test_cards;
|
|
14
|
+
const type = generatedData.type;
|
|
15
|
+
if (unparsedTestCards !== undefined && unparsedTestCards.length != 0) {
|
|
16
|
+
for (let elem of unparsedTestCards) {
|
|
17
|
+
const managedCardConcepts = this._mapIdToConcepts(elem.concepts_facts, sourceTaxonomy.concepts_facts);
|
|
18
|
+
elem.concepts = managedCardConcepts;
|
|
19
|
+
if (elem.type == "flash") {
|
|
20
|
+
const flashCard = new parse_flash_cards_1.ParseFlashCard().parse(elem);
|
|
21
|
+
if (flashCard != null && flashCard) {
|
|
22
|
+
flashCard.heading = this._getCardReference(flashCard, sourceTaxonomy);
|
|
23
|
+
cardData.push(flashCard);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (elem.type == "mcq") {
|
|
27
|
+
const mcqCard = new parse_mcq_card_1.ParseMcqCard().parse(elem);
|
|
28
|
+
if (mcqCard != null && mcqCard) {
|
|
29
|
+
mcqCard.heading = this._getCardReference(mcqCard, sourceTaxonomy);
|
|
30
|
+
cardData.push(mcqCard);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (elem.type == "cloze") {
|
|
34
|
+
const clozeCard = new parse_cloze_card_1.ParseClozeCard().parse(elem);
|
|
35
|
+
if (clozeCard && clozeCard != null) {
|
|
36
|
+
clozeCard.heading = this._getCardReference(clozeCard, sourceTaxonomy);
|
|
37
|
+
cardData.push(clozeCard);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (elem.type == "match") {
|
|
41
|
+
const matchCard = new parse_match_card_1.ParseMatchCard().parse(elem);
|
|
42
|
+
if (matchCard && matchCard != null) {
|
|
43
|
+
matchCard.heading = this._getCardReference(matchCard, sourceTaxonomy);
|
|
44
|
+
cardData.push(matchCard);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (!isGapFill) {
|
|
51
|
+
usage_data.status = "failed";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (cardData.length == 0) {
|
|
55
|
+
usage_data.status = "failed";
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
status_code: cardData.length == 0 ? 400 : 200,
|
|
59
|
+
metadata: usage_data,
|
|
60
|
+
type: type,
|
|
61
|
+
cards_data: cardData,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
return {
|
|
66
|
+
status_code: 500,
|
|
67
|
+
metadata: usage_data,
|
|
68
|
+
type: generatedData.type,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
_getCardReference(generatedCardData, sourceTaxonomy) {
|
|
73
|
+
var _a, _b;
|
|
74
|
+
const cardConcepts = ((_a = generatedCardData.concepts) !== null && _a !== void 0 ? _a : []).map((e) => e.text);
|
|
75
|
+
const sourceConceptsFacts = (_b = sourceTaxonomy.concepts_facts) !== null && _b !== void 0 ? _b : [];
|
|
76
|
+
const firstMatchedConcept = sourceConceptsFacts.find((elem) => cardConcepts.includes(elem.text));
|
|
77
|
+
if (firstMatchedConcept) {
|
|
78
|
+
return firstMatchedConcept.reference;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return "";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
_mapIdToConcepts(cardConcepts, sourceConceptsFacts) {
|
|
85
|
+
// const cardData = cardC
|
|
86
|
+
const managedCardConcepts = [];
|
|
87
|
+
for (const cardConcept of cardConcepts) {
|
|
88
|
+
const matchedConcept = sourceConceptsFacts.find((e) => e.text.toLowerCase().trim() == cardConcept.text.toLowerCase().trim());
|
|
89
|
+
if (matchedConcept) {
|
|
90
|
+
managedCardConcepts.push({
|
|
91
|
+
id: matchedConcept.id,
|
|
92
|
+
text: matchedConcept.text,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return managedCardConcepts;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.ParseCardResponse = ParseCardResponse;
|
|
100
|
+
//# sourceMappingURL=parse_card_response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_card_response.js","sourceRoot":"","sources":["../../src/parse/parse_card_response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare class ParseSourceContent {
|
|
2
|
+
content: any;
|
|
3
|
+
titles_to_remove: string[];
|
|
4
|
+
block_types_toremove: string[];
|
|
5
|
+
constructor(sourceContent: any);
|
|
6
|
+
parseData(): {
|
|
7
|
+
type: any;
|
|
8
|
+
title: any;
|
|
9
|
+
content: any;
|
|
10
|
+
headings: any;
|
|
11
|
+
taxonomy: any;
|
|
12
|
+
};
|
|
13
|
+
removeSectionsByTitle(data: Array<any>): any[];
|
|
14
|
+
sanitizeTextContent(content: String): String;
|
|
15
|
+
sanitizeBlocks(blocks: Array<any>): any;
|
|
16
|
+
parseVideoContent(data: Array<any>): any[];
|
|
17
|
+
isNonSpeech(content: string): boolean;
|
|
18
|
+
cleanTranscript(data: any): string;
|
|
19
|
+
collapseTimeCodes(data: Array<any>, maxDuration?: number): {
|
|
20
|
+
start_time: null;
|
|
21
|
+
end_time: null;
|
|
22
|
+
content: string;
|
|
23
|
+
}[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=parse_source_content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_source_content.d.ts","sourceRoot":"","sources":["../../src/parse/parse_source_content.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IACtB,OAAO,EAAE,GAAG,CAAC;IAWpB,gBAAgB,WASd;IACF,oBAAoB,WAA2B;gBACnC,aAAa,EAAE,GAAG;IAI9B,SAAS;;;;;;;IAoBT,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAqBtC,mBAAmB,CAAC,OAAO,EAAE,MAAM;IAmBnC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC;IAoBjC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAiBlC,WAAW,CAAC,OAAO,EAAE,MAAM;IAM3B,eAAe,CAAC,IAAI,EAAE,GAAG;IAiBzB,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,SAAO;;;;;CAsDvD"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParseSourceContent = void 0;
|
|
4
|
+
class ParseSourceContent {
|
|
5
|
+
constructor(sourceContent) {
|
|
6
|
+
/// Format of Content
|
|
7
|
+
// content: {
|
|
8
|
+
// title: source.title,
|
|
9
|
+
// headings: source.headings,
|
|
10
|
+
// content: source.content,
|
|
11
|
+
// fields: fields,
|
|
12
|
+
// taxonomy: source.source_taxonomy,
|
|
13
|
+
// type: source.source_type
|
|
14
|
+
// },
|
|
15
|
+
this.titles_to_remove = [
|
|
16
|
+
"See also",
|
|
17
|
+
"References",
|
|
18
|
+
"Further reading",
|
|
19
|
+
"External links",
|
|
20
|
+
"Notes and references",
|
|
21
|
+
"Bibliography",
|
|
22
|
+
"Notes",
|
|
23
|
+
"Cited sources",
|
|
24
|
+
];
|
|
25
|
+
this.block_types_toremove = ["table", "empty_line"];
|
|
26
|
+
this.content = sourceContent;
|
|
27
|
+
}
|
|
28
|
+
parseData() {
|
|
29
|
+
let sourceType = this.content.type;
|
|
30
|
+
let afterSanitized;
|
|
31
|
+
if (sourceType == "video") {
|
|
32
|
+
afterSanitized = this.parseVideoContent(this.content.content);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
let dataAfterRemovingUnWantedBlocks = this.removeSectionsByTitle(this.content.content);
|
|
36
|
+
afterSanitized = this.sanitizeBlocks(dataAfterRemovingUnWantedBlocks);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
type: this.content.type,
|
|
40
|
+
title: this.content.title,
|
|
41
|
+
content: afterSanitized,
|
|
42
|
+
headings: this.content.headings,
|
|
43
|
+
taxonomy: this.content.taxonomy,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
removeSectionsByTitle(data) {
|
|
47
|
+
let dataAfterRemoving = [];
|
|
48
|
+
for (let elem of data) {
|
|
49
|
+
if (elem.block_type == "heading" &&
|
|
50
|
+
this.titles_to_remove.includes(elem.content)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
/// remove unwanted blcok types , for now `table` and `empty_line`
|
|
54
|
+
if (this.block_types_toremove.includes(elem.block_type)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (elem.children) {
|
|
58
|
+
elem.children = this.removeSectionsByTitle(elem.children);
|
|
59
|
+
}
|
|
60
|
+
dataAfterRemoving.push(elem);
|
|
61
|
+
}
|
|
62
|
+
return dataAfterRemoving;
|
|
63
|
+
}
|
|
64
|
+
sanitizeTextContent(content) {
|
|
65
|
+
// Remove newline characters
|
|
66
|
+
content = content.replace(/\\n/g, " ");
|
|
67
|
+
// Remove internal link references, keeping only the link text
|
|
68
|
+
// Pattern explanation: [[link|text|index|wiki]] --> text
|
|
69
|
+
content = content.replace(/\[\[.*?\|(.*?)\|.*?\|wiki\]\]/g, "$1");
|
|
70
|
+
// Remove external links, keeping only the link text
|
|
71
|
+
// Pattern explanation: [url text] --> text
|
|
72
|
+
content = content.replace(/\[http[s]?:\/\/[^\s]+ ([^\]]+)\]/g, "$1");
|
|
73
|
+
// Remove Markdown link references, keeping only the link text
|
|
74
|
+
// Pattern explanation:  --> link text
|
|
75
|
+
content = content.replace(/\!\[([^\]]+)\]\([^\)]+\)/g, "$1");
|
|
76
|
+
return content;
|
|
77
|
+
}
|
|
78
|
+
sanitizeBlocks(blocks) {
|
|
79
|
+
let sanitizedBlocks = [];
|
|
80
|
+
blocks = blocks.filter((item) => item.block_type != "table");
|
|
81
|
+
blocks.forEach((block) => {
|
|
82
|
+
let sanitizedBlock = {};
|
|
83
|
+
for (let key in block) {
|
|
84
|
+
let value = block[key];
|
|
85
|
+
if (typeof value === "string") {
|
|
86
|
+
sanitizedBlock[key] = this.sanitizeTextContent(value);
|
|
87
|
+
}
|
|
88
|
+
else if (Array.isArray(value)) {
|
|
89
|
+
sanitizedBlock[key] = this.sanitizeBlocks(value);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
sanitizedBlock[key] = value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
sanitizedBlocks.push(sanitizedBlock);
|
|
96
|
+
});
|
|
97
|
+
return sanitizedBlocks;
|
|
98
|
+
}
|
|
99
|
+
parseVideoContent(data) {
|
|
100
|
+
let finalChapters = [];
|
|
101
|
+
// let cleanedData = this.cleanTranscript(timeCodes);
|
|
102
|
+
data.forEach((e) => {
|
|
103
|
+
let combinedContent = this.cleanTranscript(e);
|
|
104
|
+
finalChapters.push({
|
|
105
|
+
startTime: e.startTime,
|
|
106
|
+
endTime: e.endTime,
|
|
107
|
+
content: combinedContent,
|
|
108
|
+
title: e.content,
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
return finalChapters;
|
|
112
|
+
}
|
|
113
|
+
// remove content inside [] which denotes non-speech sounds
|
|
114
|
+
isNonSpeech(content) {
|
|
115
|
+
// Check if the content is non-speech (enclosed in square brackets).
|
|
116
|
+
return /^\[.*\]$/.test(content.trim());
|
|
117
|
+
}
|
|
118
|
+
// remove non-essential content
|
|
119
|
+
cleanTranscript(data) {
|
|
120
|
+
var _a;
|
|
121
|
+
let finalContent = "";
|
|
122
|
+
let children = (_a = data.children) !== null && _a !== void 0 ? _a : [];
|
|
123
|
+
children.forEach((e) => {
|
|
124
|
+
let content = (e.content || "").trim();
|
|
125
|
+
if (this.isNonSpeech(content))
|
|
126
|
+
return;
|
|
127
|
+
content = content.replace(/\s+/g, " ");
|
|
128
|
+
finalContent += content;
|
|
129
|
+
});
|
|
130
|
+
return finalContent;
|
|
131
|
+
}
|
|
132
|
+
// collapse the timecode to 30 seconds
|
|
133
|
+
collapseTimeCodes(data, maxDuration = 30.0) {
|
|
134
|
+
// Collapse time codes into buckets of approximately maxDuration seconds.
|
|
135
|
+
const collapsedData = [];
|
|
136
|
+
let bucketStartTime = null;
|
|
137
|
+
let bucketEndTime = null;
|
|
138
|
+
let bucketContent = [];
|
|
139
|
+
let bucketDuration = 0.0;
|
|
140
|
+
data.forEach((entry) => {
|
|
141
|
+
const startTime = entry.start_time;
|
|
142
|
+
const endTime = entry.end_time;
|
|
143
|
+
const content = entry.content;
|
|
144
|
+
const entryDuration = endTime - startTime;
|
|
145
|
+
if (bucketStartTime === null) {
|
|
146
|
+
// Start a new bucket
|
|
147
|
+
bucketStartTime = startTime;
|
|
148
|
+
bucketEndTime = endTime;
|
|
149
|
+
bucketContent.push(content);
|
|
150
|
+
bucketDuration = entryDuration;
|
|
151
|
+
}
|
|
152
|
+
else if (bucketDuration + entryDuration <= maxDuration) {
|
|
153
|
+
// Add to current bucket
|
|
154
|
+
bucketEndTime = endTime;
|
|
155
|
+
bucketContent.push(content);
|
|
156
|
+
bucketDuration += entryDuration;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Close current bucket and start a new one
|
|
160
|
+
const collapsedEntry = {
|
|
161
|
+
start_time: bucketStartTime,
|
|
162
|
+
end_time: bucketEndTime,
|
|
163
|
+
content: bucketContent.join(" "),
|
|
164
|
+
};
|
|
165
|
+
collapsedData.push(collapsedEntry);
|
|
166
|
+
// Start new bucket with current entry
|
|
167
|
+
bucketStartTime = startTime;
|
|
168
|
+
bucketEndTime = endTime;
|
|
169
|
+
bucketContent = [content];
|
|
170
|
+
bucketDuration = entryDuration;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
// Add the last bucket if it exists
|
|
174
|
+
if (bucketContent.length > 0) {
|
|
175
|
+
const collapsedEntry = {
|
|
176
|
+
start_time: bucketStartTime,
|
|
177
|
+
end_time: bucketEndTime,
|
|
178
|
+
content: bucketContent.join(" "),
|
|
179
|
+
};
|
|
180
|
+
collapsedData.push(collapsedEntry);
|
|
181
|
+
}
|
|
182
|
+
return collapsedData;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.ParseSourceContent = ParseSourceContent;
|
|
186
|
+
//# sourceMappingURL=parse_source_content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_source_content.js","sourceRoot":"","sources":["../../src/parse/parse_source_content.ts"],"names":[],"mappings":"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"}
|