Selaa lähdekoodia

incorporate ArrayBuffer base Dish type. Add global file shim to node index. Fix Buffer -> ArrayBuffer transformation

d98762625 6 vuotta sitten
vanhempi
commit
af504891e4

+ 1 - 1
src/core/Dish.mjs

@@ -387,7 +387,7 @@ class Dish {
                 [Dish.BIG_NUMBER]:      () => Promise.resolve(DishBigNumber.toArrayBuffer.bind(this)()),
                 [Dish.BIG_NUMBER]:      () => Promise.resolve(DishBigNumber.toArrayBuffer.bind(this)()),
                 [Dish.JSON]:            () => Promise.resolve(DishJSON.toArrayBuffer.bind(this)()),
                 [Dish.JSON]:            () => Promise.resolve(DishJSON.toArrayBuffer.bind(this)()),
                 [Dish.FILE]:            () => DishFile.toArrayBuffer.bind(this)(),
                 [Dish.FILE]:            () => DishFile.toArrayBuffer.bind(this)(),
-                [Dish.LIST_FILE]:       () => DishListFile.toArrayBuffer.bind(this)(),
+                [Dish.LIST_FILE]:       () => Promise.resolve(DishListFile.toArrayBuffer.bind(this)()),
                 [Dish.BYTE_ARRAY]:      () => Promise.resolve(DishByteArray.toArrayBuffer.bind(this)()),
                 [Dish.BYTE_ARRAY]:      () => Promise.resolve(DishByteArray.toArrayBuffer.bind(this)()),
             },
             },
             node: {
             node: {

+ 5 - 3
src/core/Utils.mjs

@@ -94,7 +94,7 @@ class Utils {
         const paddedBytes = new Array(numBytes);
         const paddedBytes = new Array(numBytes);
         paddedBytes.fill(padByte);
         paddedBytes.fill(padByte);
 
 
-        Array.prototype.map.call(arr, function(b, i) {
+        [...arr].forEach((b, i) => {
             paddedBytes[i] = b;
             paddedBytes[i] = b;
         });
         });
 
 
@@ -1033,8 +1033,10 @@ class Utils {
         if (!Utils.isNode()) {
         if (!Utils.isNode()) {
             throw new TypeError("Browser environment cannot support readFileSync");
             throw new TypeError("Browser environment cannot support readFileSync");
         }
         }
-
-        return file.data.buffer;
+        // Resist using node's Buffer.buffer here - this yields a 8192 length byteArray
+        // regardless of the length of the buffer.
+        const arrayBuffer = Uint8Array.from(file.data);
+        return arrayBuffer.buffer;
     }
     }
 
 
 
 

+ 1 - 8
src/core/dishTranslationTypes/DishListFile.mjs

@@ -17,14 +17,7 @@ class DishListFile extends DishTranslationType {
      */
      */
     static toArrayBuffer() {
     static toArrayBuffer() {
         DishListFile.checkForValue(this.value);
         DishListFile.checkForValue(this.value);
-        if (Utils.isNode()) {
-            // TODO
-            this.value = [].concat.apply([], this.value.map(f => Utils.readFileSync(f)).map(b => Array.prototype.slice.call(b)));
-        } else {
-            return new Promise((resolve, reject) => {
-                resolve(DishListFile.concatenateTypedArrays(...this.value).buffer);
-            });
-        }
+        this.value = DishListFile.concatenateTypedArrays(...this.value).buffer;
     }
     }
 
 
     /**
     /**

+ 3 - 0
src/node/config/scripts/generateNodeIndex.mjs

@@ -41,6 +41,7 @@ let code = `/**
 import "babel-polyfill";
 import "babel-polyfill";
 import NodeDish from "./NodeDish";
 import NodeDish from "./NodeDish";
 import { _wrap, help, bake, _explainExludedFunction } from "./api";
 import { _wrap, help, bake, _explainExludedFunction } from "./api";
+import File from "./File";
 import {
 import {
     // import as core_ to avoid name clashes after wrap.
     // import as core_ to avoid name clashes after wrap.
 `;
 `;
@@ -53,6 +54,8 @@ includedOperations.forEach((op) => {
 code +=`
 code +=`
 } from "../core/operations/index";
 } from "../core/operations/index";
 
 
+global.File = File;
+
 // Define global environment functions
 // Define global environment functions
 global.ENVIRONMENT_IS_WORKER = function() {
 global.ENVIRONMENT_IS_WORKER = function() {
     return typeof importScripts === "function";
     return typeof importScripts === "function";

+ 3 - 0
src/node/index.mjs

@@ -12,6 +12,7 @@
 import "babel-polyfill";
 import "babel-polyfill";
 import NodeDish from "./NodeDish";
 import NodeDish from "./NodeDish";
 import { _wrap, help, bake, _explainExludedFunction } from "./api";
 import { _wrap, help, bake, _explainExludedFunction } from "./api";
+import File from "./File";
 import {
 import {
     // import as core_ to avoid name clashes after wrap.
     // import as core_ to avoid name clashes after wrap.
     A1Z26CipherDecode as core_A1Z26CipherDecode,
     A1Z26CipherDecode as core_A1Z26CipherDecode,
@@ -316,6 +317,8 @@ import {
 
 
 } from "../core/operations/index";
 } from "../core/operations/index";
 
 
+global.File = File;
+
 // Define global environment functions
 // Define global environment functions
 global.ENVIRONMENT_IS_WORKER = function() {
 global.ENVIRONMENT_IS_WORKER = function() {
     return typeof importScripts === "function";
     return typeof importScripts === "function";

+ 0 - 5
tests/lib/utils.mjs

@@ -79,11 +79,6 @@ export function logTestReport(testStatus, results) {
         }
         }
     }
     }
 
 
-    if (!testStatus.allTestsPassing) {
-        console.log("\nFailing tests:\n");
-        results.filter(r => r.status !== "passing").forEach(handleTestResult);
-    }
-
     process.exit(testStatus.allTestsPassing ? 0 : 1);
     process.exit(testStatus.allTestsPassing ? 0 : 1);
 }
 }