يتم إعطاؤك وظيفة `validateEmail(email: string): boolean` التي تأخذ عنوان البريد الإلكتروني كمعلمة وترجع `true` إذا كان عنوان البريد الإلكتروني صالحًا، و`false` بخلاف ذلك. مهمتك هي تنفيذ وظيفة جديدة `filterEmails(emails: string[]): string[]` تأخذ مصفوفة من عناوين البريد الإلكتروني وتُرجع مصفوفة جديدة تحتوي فقط على عناوين البريد الإلكتروني الصالحة. يجب أن تقوم الوظيفة أيضًا بإصدار استثناء إذا كان أي من عناوين البريد الإلكتروني يحتوي على أحرف أو أرقام خاصة. اكتب الدالة `filterEmails(emails: string[]): string[]` لحل هذه المهمة.

**توقيع الوظيفة:** `filterEmails(emails: string[]): string[]`

**مدخل**
- المعلمة `emails` هي عبارة عن مجموعة من السلاسل التي تمثل عناوين البريد الإلكتروني.

**انتاج**
- يجب أن تقوم الدالة بإرجاع مصفوفة جديدة تحتوي فقط على عناوين البريد الإلكتروني الصالحة.
- إذا كان أي من عناوين البريد الإلكتروني يحتوي على أحرف أو أرقام خاصة، فيجب أن تقوم الوظيفة بطرح استثناء.

**مثال**
```جافا سكريبت
filterEmails(["john@gmail.com"، "jane@gmail.com"، "test123"، "test!@#$"]) => ["john@gmail.com"، "jane@gmail.com" ]
filterEmails(["test1@"، "test2@"، "test3@"]) => يطرح استثناءً
```
{"evolved_from": "You are provided with a code snippet that implements the `getUser()` method in a class. This method takes a string parameter `username` and returns a `User` object based on certain conditions. Your task is to refactor the code, eliminating duplication and adding a new requirement. The refactored code should throw an exception if the `username` parameter contains special characters or numbers. Write a function `refactorCode(username: string): User|null` that handles this refactoring. The function should return a `User` object if any conditions are met, return `null` if no conditions match, and throw an exception if the `username` contains special characters or numbers.\n\n**Function Signature:** `refactorCode(username: string): User|null`\n\n**Input**\n- The `username` parameter is a string representing the username for which the user object needs to be returned.\n\n**Output**\n- The function should return a `User` object if any of the conditions in the code snippet match.\n- If none of the conditions match or if the `username` parameter contains special characters or numbers, the function should return `null`.\n- If the `username` parameter contains special characters or numbers, the function should throw an exception.\n\n**Example**\n```javascript\nrefactorCode(\"john\") => null\nrefactorCode(\"jane\") => instance of User\nrefactorCode(\"123\") => throws an exception\nrefactorCode(\"@#$\") => throws an exception\n```", "kind": "synthetic", "source": "argilla/distilabel-evol-prompt-collective"}