1(() => { 2 class ImwebExternalSDK { 3 getMemberInfo(apiKey) { 4 return new Promise((resolve, reject) => { 5 if (!apiKey || typeof apiKey !== 'string' || !apiKey.trim()) { 6 const error = { 7 code: 'INVALID_API_KEY', 8 message: 'API Keyê° ì í¨íì§ ììµëë¤.' 9 }; 10 reject(error); 11 return; 12 } 13 14 const formData = new FormData(); 15 formData.append('api_key', apiKey); 16 17 const controller = new AbortController(); 18 const timeoutId = setTimeout(() => controller.abort(), 10000); 19 20 fetch('/ajax/sdk/get_login_member_data.cm', { 21 method: 'POST', 22 body: formData, 23 signal: controller.signal 24 }) 25 .then(response => { 26 clearTimeout(timeoutId); 27 if (!response.ok) { 28 throw new Error(`HTTP ${response.status}: ${response.statusText}`); 29 } 30 return response.json(); 31 }) 32 .then(data => { 33 if (data.success) { 34 resolve(data.loginMemberInfo); 35 } else { 36 const error = { 37 code: data.code || 'SERVER_ERROR', 38 message: data.msg || 'íì ì ë³´ ì¡°íì ì¤í¨íììµëë¤.' 39 }; 40 reject(error); 41 } 42 }) 43 .catch(error => { 44 clearTimeout(timeoutId); 45 const errorObj = { 46 code: error.name === 'AbortError' ? 'TIMEOUT_ERROR' : 'NETWORK_ERROR', 47 message: error.name === 'AbortError' ? 'ìì² ìê°ì´ ì´ê³¼ëììµëë¤.' : (error.message || 'ë¤í¸ìí¬ ì¤ë¥ê° ë°ìíìµëë¤.') 48 }; 49 reject(errorObj); 50 }); 51 }); 52 } 53 } 54 window.ImwebExternalSDK = new ImwebExternalSDK(); 55})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.