@zodic/shared 0.0.379 → 0.0.380
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/app/services/ArchetypeService.ts +86 -55
- package/package.json +1 -1
|
@@ -858,25 +858,29 @@ export class ArchetypeService {
|
|
|
858
858
|
rawResponse: ptResponse,
|
|
859
859
|
});
|
|
860
860
|
|
|
861
|
-
await this.log('debug', `Parsing PT content response for archetype ${index}`);
|
|
862
|
-
const
|
|
863
|
-
await this.log('info', `Parsed PT content for archetype ${index}`, {
|
|
861
|
+
await this.log('debug', `Parsing PT-M content response for archetype ${index}`);
|
|
862
|
+
const ptMaleContentParsed = this.parseContentResponse(ptResponse, 'PT', 'male');
|
|
863
|
+
await this.log('info', `Parsed PT-M content for archetype ${index}`, { ptMaleContentParsed });
|
|
864
|
+
|
|
865
|
+
await this.log('debug', `Parsing PT-F content response for archetype ${index}`);
|
|
866
|
+
const ptFemaleContentParsed = this.parseContentResponse(ptResponse, 'PT', 'female');
|
|
867
|
+
await this.log('info', `Parsed PT-F content for archetype ${index}`, { ptFemaleContentParsed });
|
|
864
868
|
|
|
865
869
|
const ptMaleContent = [
|
|
866
|
-
{ section: 'voiceOfTheSoul', text:
|
|
867
|
-
{ section: 'giftsYouBear', text:
|
|
868
|
-
{ section: 'shadowsYouFace', text:
|
|
869
|
-
{ section: 'rhythmOfYourDays', text:
|
|
870
|
-
{ section: 'tiesThatBind', text:
|
|
871
|
-
{ section: 'lightWithin', text:
|
|
870
|
+
{ section: 'voiceOfTheSoul', text: ptMaleContentParsed.voiceOfTheSoul },
|
|
871
|
+
{ section: 'giftsYouBear', text: ptMaleContentParsed.giftsYouBear },
|
|
872
|
+
{ section: 'shadowsYouFace', text: ptMaleContentParsed.shadowsYouFace },
|
|
873
|
+
{ section: 'rhythmOfYourDays', text: ptMaleContentParsed.rhythmOfYourDays },
|
|
874
|
+
{ section: 'tiesThatBind', text: ptMaleContentParsed.tiesThatBind },
|
|
875
|
+
{ section: 'lightWithin', text: ptMaleContentParsed.lightWithin },
|
|
872
876
|
];
|
|
873
877
|
const ptFemaleContent = [
|
|
874
|
-
{ section: 'voiceOfTheSoul', text:
|
|
875
|
-
{ section: 'giftsYouBear', text:
|
|
876
|
-
{ section: 'shadowsYouFace', text:
|
|
877
|
-
{ section: 'rhythmOfYourDays', text:
|
|
878
|
-
{ section: 'tiesThatBind', text:
|
|
879
|
-
{ section: 'lightWithin', text:
|
|
878
|
+
{ section: 'voiceOfTheSoul', text: ptFemaleContentParsed.voiceOfTheSoul },
|
|
879
|
+
{ section: 'giftsYouBear', text: ptFemaleContentParsed.giftsYouBear },
|
|
880
|
+
{ section: 'shadowsYouFace', text: ptFemaleContentParsed.shadowsYouFace },
|
|
881
|
+
{ section: 'rhythmOfYourDays', text: ptFemaleContentParsed.rhythmOfYourDays },
|
|
882
|
+
{ section: 'tiesThatBind', text: ptFemaleContentParsed.tiesThatBind },
|
|
883
|
+
{ section: 'lightWithin', text: ptFemaleContentParsed.lightWithin },
|
|
880
884
|
];
|
|
881
885
|
|
|
882
886
|
await this.log('debug', `Updating PT-M content for ${ptIds.male}`, { content: ptMaleContent });
|
|
@@ -921,13 +925,13 @@ export class ArchetypeService {
|
|
|
921
925
|
return contentResults;
|
|
922
926
|
}
|
|
923
927
|
|
|
924
|
-
private parseContentResponse(response: string, section: string) {
|
|
925
|
-
this.log('debug', 'Starting parseContentResponse', { responseLength: response.length, section });
|
|
928
|
+
private parseContentResponse(response: string, section: string, gender: Gender | null = null) {
|
|
929
|
+
this.log('debug', 'Starting parseContentResponse', { responseLength: response.length, section, gender });
|
|
926
930
|
|
|
927
|
-
const lines = response.split('\n').map(line => line.trim());
|
|
931
|
+
const lines = response.split('\n').map(line => line.trim());
|
|
928
932
|
this.log('debug', 'Split response into lines', { linesCount: lines.length, lines });
|
|
929
933
|
|
|
930
|
-
// Skip initial --- and
|
|
934
|
+
// Skip initial --- and empty lines
|
|
931
935
|
let startIndex = 0;
|
|
932
936
|
while (startIndex < lines.length && (lines[startIndex] === '---' || lines[startIndex] === '')) {
|
|
933
937
|
startIndex++;
|
|
@@ -938,65 +942,92 @@ export class ArchetypeService {
|
|
|
938
942
|
throw new Error(`No content found after skipping delimiters for ${section}`);
|
|
939
943
|
}
|
|
940
944
|
|
|
941
|
-
const
|
|
942
|
-
|
|
943
|
-
if (!actualHeader.startsWith(expectedHeader)) {
|
|
944
|
-
this.log('error', `Invalid language header for ${section}`, {
|
|
945
|
-
expected: expectedHeader,
|
|
946
|
-
found: actualHeader,
|
|
947
|
-
});
|
|
948
|
-
throw new Error(`Invalid language header for ${section}: expected ${expectedHeader}, got ${actualHeader}`);
|
|
949
|
-
}
|
|
950
|
-
|
|
951
|
-
const content: Record<string, string> = {};
|
|
945
|
+
const content: Record<string, Record<string, string>> = { 'PT-M': {}, 'PT-F': {}, 'EN': {} };
|
|
946
|
+
let currentSectionHeader = '';
|
|
952
947
|
let currentSection = '';
|
|
953
948
|
let currentText: string[] = [];
|
|
949
|
+
let currentLang = '';
|
|
950
|
+
|
|
951
|
+
for (let i = startIndex; i < lines.length; i++) {
|
|
952
|
+
const line = lines[i];
|
|
953
|
+
|
|
954
|
+
if (line === '---') {
|
|
955
|
+
if (currentSection && currentText.length > 0) {
|
|
956
|
+
const key = currentSection.toLowerCase().replace(/\s+/g, '').replace(/([A-Z])/g, (match) => match.toLowerCase());
|
|
957
|
+
content[currentLang][key] = currentText.join(' ').trim();
|
|
958
|
+
this.log('debug', `Extracted section ${currentSection} for ${currentLang}`, { key, text: content[currentLang][key] });
|
|
959
|
+
}
|
|
960
|
+
currentSection = '';
|
|
961
|
+
currentText = [];
|
|
962
|
+
// Look for the next header
|
|
963
|
+
while (i + 1 < lines.length && (lines[i + 1] === '' || lines[i + 1] === '---')) {
|
|
964
|
+
i++;
|
|
965
|
+
}
|
|
966
|
+
if (i + 1 < lines.length && (lines[i + 1] === 'PT-M:' || lines[i + 1] === 'PT-F:' || lines[i + 1] === 'EN:')) {
|
|
967
|
+
i++;
|
|
968
|
+
currentLang = lines[i];
|
|
969
|
+
this.log('debug', `Found new language section: ${currentLang}`);
|
|
970
|
+
}
|
|
971
|
+
continue;
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
if (line === 'PT-M:' || line === 'PT-F:' || line === 'EN:') {
|
|
975
|
+
currentLang = line;
|
|
976
|
+
this.log('debug', `Starting language section: ${currentLang}`);
|
|
977
|
+
continue;
|
|
978
|
+
}
|
|
954
979
|
|
|
955
|
-
for (const line of lines.slice(startIndex + 1)) {
|
|
956
980
|
if (line.startsWith('#')) {
|
|
957
981
|
if (currentSection && currentText.length > 0) {
|
|
958
982
|
const key = currentSection.toLowerCase().replace(/\s+/g, '').replace(/([A-Z])/g, (match) => match.toLowerCase());
|
|
959
|
-
content[key] = currentText.join(' ').trim();
|
|
960
|
-
this.log('debug', `Extracted section ${currentSection} for ${
|
|
961
|
-
key,
|
|
962
|
-
text: content[key],
|
|
963
|
-
});
|
|
983
|
+
content[currentLang][key] = currentText.join(' ').trim();
|
|
984
|
+
this.log('debug', `Extracted section ${currentSection} for ${currentLang}`, { key, text: content[currentLang][key] });
|
|
964
985
|
}
|
|
965
986
|
currentSection = line.replace('# ', '');
|
|
987
|
+
currentSectionHeader = currentSection.toLowerCase();
|
|
966
988
|
currentText = [];
|
|
967
|
-
this.log('debug', `Starting new section ${currentSection} for ${
|
|
968
|
-
} else if (line) {
|
|
989
|
+
this.log('debug', `Starting new section ${currentSection} for ${currentLang}`);
|
|
990
|
+
} else if (line) {
|
|
969
991
|
currentText.push(line);
|
|
970
992
|
}
|
|
971
993
|
}
|
|
972
994
|
|
|
995
|
+
// Handle the last section
|
|
973
996
|
if (currentSection && currentText.length > 0) {
|
|
974
997
|
const key = currentSection.toLowerCase().replace(/\s+/g, '').replace(/([A-Z])/g, (match) => match.toLowerCase());
|
|
975
|
-
content[key] = currentText.join(' ').trim();
|
|
976
|
-
this.log('debug', `Extracted final section ${currentSection} for ${
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
998
|
+
content[currentLang][key] = currentText.join(' ').trim();
|
|
999
|
+
this.log('debug', `Extracted final section ${currentSection} for ${currentLang}`, { key, text: content[currentLang][key] });
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
// Determine which content to return based on section and gender
|
|
1003
|
+
let targetLang = section;
|
|
1004
|
+
if (section === 'PT') {
|
|
1005
|
+
targetLang = gender === 'male' ? 'PT-M:' : 'PT-F:';
|
|
1006
|
+
} else {
|
|
1007
|
+
targetLang = `${section}:`;
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
const targetContent = content[targetLang];
|
|
1011
|
+
if (!targetContent) {
|
|
1012
|
+
this.log('error', `No content found for target ${targetLang}`, { response, section, gender });
|
|
1013
|
+
throw new Error(`No content found for target ${targetLang}`);
|
|
980
1014
|
}
|
|
981
1015
|
|
|
982
1016
|
const parsedContent = {
|
|
983
|
-
voiceOfTheSoul:
|
|
984
|
-
giftsYouBear:
|
|
985
|
-
shadowsYouFace:
|
|
986
|
-
rhythmOfYourDays:
|
|
987
|
-
tiesThatBind:
|
|
988
|
-
lightWithin:
|
|
1017
|
+
voiceOfTheSoul: targetContent['thevoiceofthesoul'] || targetContent['avozdaalma'] || '',
|
|
1018
|
+
giftsYouBear: targetContent['thegiftsyoubear'] || targetContent['osdonsquevocêcarrega'] || '',
|
|
1019
|
+
shadowsYouFace: targetContent['theshadowsyouface'] || targetContent['assombrasqueenfrenta'] || '',
|
|
1020
|
+
rhythmOfYourDays: targetContent['therhythmofyourdays'] || targetContent['oritmodosseusdias'] || '',
|
|
1021
|
+
tiesThatBind: targetContent['thetiesthatbind'] || targetContent['oslaçosqueteconectam'] || '',
|
|
1022
|
+
lightWithin: targetContent['thelightwithin'] || targetContent['aluzinterior'] || '',
|
|
989
1023
|
};
|
|
990
1024
|
|
|
991
1025
|
if (Object.values(parsedContent).some((value) => !value)) {
|
|
992
|
-
this.log('error', `Malformed content response for ${
|
|
993
|
-
|
|
994
|
-
response,
|
|
995
|
-
});
|
|
996
|
-
throw new Error(`Malformed content response for ${section}`);
|
|
1026
|
+
this.log('error', `Malformed content response for ${targetLang}`, { parsedContent, response });
|
|
1027
|
+
throw new Error(`Malformed content response for ${targetLang}`);
|
|
997
1028
|
}
|
|
998
1029
|
|
|
999
|
-
this.log('info', 'Completed parseContentResponse', { parsedContent, section });
|
|
1030
|
+
this.log('info', 'Completed parseContentResponse', { parsedContent, section, gender });
|
|
1000
1031
|
return parsedContent;
|
|
1001
1032
|
}
|
|
1002
1033
|
|