summaryrefslogtreecommitdiff
path: root/std/node
diff options
context:
space:
mode:
authorChris Knight <cknight1234@gmail.com>2020-01-30 23:57:29 +0000
committerGitHub <noreply@github.com>2020-01-30 18:57:29 -0500
commit3de9540ac6ae5ce051ccd9be69c1d6ef64663a26 (patch)
tree85adac0044d4174540abeb1166e23933a82a63d1 /std/node
parentde5c099b47bd1d2e528f1a10179f130a02f26f86 (diff)
feat(std/node) Endianness (#3833)
Diffstat (limited to 'std/node')
-rw-r--r--std/node/os.ts15
-rw-r--r--std/node/os_test.ts14
2 files changed, 19 insertions, 10 deletions
diff --git a/std/node/os.ts b/std/node/os.ts
index ee64bfceb..c5e0f6c76 100644
--- a/std/node/os.ts
+++ b/std/node/os.ts
@@ -19,6 +19,7 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
import { notImplemented } from "./_utils.ts";
+import { EOL as fsEOL } from "../fs/eol.ts";
const SEE_GITHUB_ISSUE = "See https://github.com/denoland/deno/issues/3802";
@@ -96,9 +97,17 @@ export function cpus(): CPUCoreInfo[] {
notImplemented(SEE_GITHUB_ISSUE);
}
-/** Not yet implemented */
+/**
+ * Returns a string identifying the endianness of the CPU for which the Deno
+ * binary was compiled. Possible values are 'BE' for big endian and 'LE' for
+ * little endian.
+ **/
export function endianness(): "BE" | "LE" {
- notImplemented(SEE_GITHUB_ISSUE);
+ // Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView#Endianness
+ const buffer = new ArrayBuffer(2);
+ new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
+ // Int16Array uses the platform's endianness.
+ return new Int16Array(buffer)[0] === 256 ? "LE" : "BE";
}
/** Not yet implemented */
@@ -201,7 +210,7 @@ export const constants = {
}
};
-export const EOL = Deno.build.os == "win" ? "\r\n" : "\n";
+export const EOL = Deno.build.os == "win" ? fsEOL.CRLF : fsEOL.LF;
const validateInt32 = (
value: number,
diff --git a/std/node/os_test.ts b/std/node/os_test.ts
index 88f0113ec..65a9ef374 100644
--- a/std/node/os_test.ts
+++ b/std/node/os_test.ts
@@ -154,6 +154,13 @@ test({
}
});
+test({
+ name: "Endianness is determined",
+ fn() {
+ assert(["LE", "BE"].includes(os.endianness()));
+ }
+});
+
// Method is currently implemented correctly for windows but not for any other os
test({
name: "Load average is an array of 3 numbers",
@@ -189,13 +196,6 @@ test({
);
assertThrows(
() => {
- os.endianness();
- },
- Error,
- "Not implemented"
- );
- assertThrows(
- () => {
os.freemem();
},
Error,