ianschenck opened a new issue, #54:
URL: https://github.com/apache/arrow-js/issues/54

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   Some platforms don't allow eval or `new Function`. CloudFlare workers is one 
such platform.
   
   `createIsValidFunction` templates out a validation function using switch, 
since it's very fast. However, this doesn't work on CloudFlare workers (or 
generally workerd).
   
   The function in question:
   
   `builder/valid.ts`
   ```
   export function createIsValidFunction<T extends DataType = any, TNull = 
any>(nullValues?: ReadonlyArray<TNull>) {
   
       if (!nullValues || nullValues.length <= 0) {
           // @ts-ignore
           return function isValid(value: any) { return true; };
       }
   
       let fnBody = '';
       const noNaNs = nullValues.filter((x) => x === x);
   
       if (noNaNs.length > 0) {
           fnBody = `
       switch (x) {${noNaNs.map((x) => `
           case ${valueToCase(x)}:`).join('')}
               return false;
       }`;
       }
   
       // NaN doesn't equal anything including itself, so it doesn't work as a
       // switch case. Instead we must explicitly check for NaN before the 
switch.
       if (nullValues.length !== noNaNs.length) {
           fnBody = `if (x !== x) return false;\n${fnBody}`;
       }
   
       return new Function(`x`, `${fnBody}\nreturn true;`) as (value: 
T['TValue'] | TNull) => boolean;
   }
   ```
   This is the only place in apache-arrow that uses new Function.
   
   I have been able to patch it locally and moved forward doing that. I'd like 
to know if there's any interest in having the library function out-of-the-box 
on CloudFlare. If so, we would be willing to refine our patch and submit for 
review.
   
   Thank you.
   
   ### Component(s)
   
   JavaScript


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to