MCPcopy Create free account
hub / github.com/Yorick-Ryu/deep-share / convertToDocxViaApi

Function convertToDocxViaApi

scripts/docxConverter.js:186–299  ·  view source on GitHub ↗
(content, serverUrl, documentTitle = null)

Source from the content-addressed store, hash-verified

184
185// Function to convert text to DOCX via API
186async function convertToDocxViaApi(content, serverUrl, documentTitle = null) {
187 try {
188 // Get API settings from storage
189 const settings = await chrome.storage.sync.get({
190 docxServerUrl: 'https://api.ds.rick216.cn',
191 docxApiKey: '',
192 removeDividers: false, // Default to false for removing dividers
193 removeEmojis: false, // Default to false for removing emojis
194 convertMermaid: false, // Default to false for Mermaid conversion
195 compatMode: true, // Default to true for compatibility mode
196 hardLineBreaks: false, // Default to false for hard line breaks
197 disableAutoNumbering: false, // Default to false for disable auto numbering
198 lastUsedTemplate: null
199 });
200
201 const rawUrl = serverUrl || settings.docxServerUrl || 'https://api.ds.rick216.cn';
202 const url = isValidUrl(rawUrl) ? rawUrl : 'https://api.ds.rick216.cn';
203 const apiKey = settings.docxApiKey;
204
205 // Ensure API key is provided
206 if (!apiKey) {
207 throw new Error('API Key not set. Please configure your API key in the extension settings.');
208 }
209
210 // Ensure content is a string
211 if (!content || typeof content !== 'string') {
212 throw new Error('Invalid content for conversion. Content must be text.');
213 }
214
215 console.debug('Sending content to API:', content.substring(0, 100) + '...');
216 console.debug('Remove Dividers:', settings.removeDividers);
217 console.debug('Remove Emojis:', settings.removeEmojis);
218 console.debug('Convert Mermaid:', settings.convertMermaid);
219
220 // Remove emojis from content if enabled (frontend processing)
221 let processedContent = content;
222 if (settings.removeEmojis) {
223 // First, convert number emojis to their text equivalents
224 // Handle keycap number emojis (0️⃣-9️⃣) - these are composed of digit + FE0F + 20E3
225 processedContent = processedContent.replace(/0\uFE0F?\u20E3/gu, '0. ');
226 processedContent = processedContent.replace(/1\uFE0F?\u20E3/gu, '1. ');
227 processedContent = processedContent.replace(/2\uFE0F?\u20E3/gu, '2. ');
228 processedContent = processedContent.replace(/3\uFE0F?\u20E3/gu, '3. ');
229 processedContent = processedContent.replace(/4\uFE0F?\u20E3/gu, '4. ');
230 processedContent = processedContent.replace(/5\uFE0F?\u20E3/gu, '5. ');
231 processedContent = processedContent.replace(/6\uFE0F?\u20E3/gu, '6. ');
232 processedContent = processedContent.replace(/7\uFE0F?\u20E3/gu, '7. ');
233 processedContent = processedContent.replace(/8\uFE0F?\u20E3/gu, '8. ');
234 processedContent = processedContent.replace(/9\uFE0F?\u20E3/gu, '9. ');
235 // Handle special keycap ten emoji
236 processedContent = processedContent.replace(/🔟/gu, '10. ');
237
238 // Then remove other emoji characters using regex
239 processedContent = processedContent.replace(/[\u{1F300}-\u{1F9FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}\u{1F000}-\u{1F02F}\u{1F0A0}-\u{1F0FF}\u{1F100}-\u{1F64F}\u{1F680}-\u{1F6FF}\u{1F900}-\u{1F9FF}\u{1FA00}-\u{1FA6F}\u{1FA70}-\u{1FAFF}\u{FE00}-\u{FE0F}\u{1F200}-\u{1F251}]/gu, '');
240 }
241
242 const currentLang = chrome.i18n.getUILanguage();
243 const language = currentLang.startsWith('zh') ? 'zh' : 'en';

Callers 1

convertToDocxFunction · 0.85

Calls 9

debugMethod · 0.80
pushMethod · 0.80
isValidUrlFunction · 0.70
generateFilenameFunction · 0.70
checkQuotaFunction · 0.70
getMethod · 0.45
replaceMethod · 0.45
textMethod · 0.45
clickMethod · 0.45

Tested by

no test coverage detected