aboutsummaryrefslogtreecommitdiff
path: root/node_modules/arch
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/arch
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/arch')
-rw-r--r--node_modules/arch/LICENSE20
-rw-r--r--node_modules/arch/README.md71
-rw-r--r--node_modules/arch/browser.js43
-rw-r--r--node_modules/arch/index.js59
-rw-r--r--node_modules/arch/package.json45
5 files changed, 238 insertions, 0 deletions
diff --git a/node_modules/arch/LICENSE b/node_modules/arch/LICENSE
new file mode 100644
index 00000000..c7e68527
--- /dev/null
+++ b/node_modules/arch/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) Feross Aboukhadijeh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/arch/README.md b/node_modules/arch/README.md
new file mode 100644
index 00000000..8ab14a62
--- /dev/null
+++ b/node_modules/arch/README.md
@@ -0,0 +1,71 @@
+# arch [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
+
+[travis-image]: https://img.shields.io/travis/feross/arch/master.svg
+[travis-url]: https://travis-ci.org/feross/arch
+[npm-image]: https://img.shields.io/npm/v/arch.svg
+[npm-url]: https://npmjs.org/package/arch
+[downloads-image]: https://img.shields.io/npm/dm/arch.svg
+[downloads-url]: https://npmjs.org/package/arch
+[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
+[standard-url]: https://standardjs.com
+
+### Better `os.arch()` for node and the browser -- detect OS architecture
+
+[![Sauce Test Status](https://saucelabs.com/browser-matrix/arch2.svg)](https://saucelabs.com/u/arch2)
+
+This module is used by [WebTorrent Desktop](http://webtorrent.io/desktop) to
+determine if the user is on a 32-bit vs. 64-bit operating system to offer the
+right app installer.
+
+In Node.js, the `os.arch()` method (and `process.arch` property) returns a string
+identifying the operating system CPU architecture **for which the Node.js binary
+was compiled**.
+
+This is not the same as the **operating system CPU architecture**. For example,
+you can run Node.js 32-bit on a 64-bit OS. In that situation, `os.arch()` will
+return a misleading 'x86' (32-bit) value, instead of 'x64' (64-bit).
+
+Use this package to get the actual operating system CPU architecture.
+
+**BONUS: This package works in the browser too.**
+
+## install
+
+```
+npm install arch
+```
+
+## usage
+
+```js
+var arch = require('arch')
+console.log(arch()) // always returns 'x64' or 'x86'
+```
+
+In the browser, there is no spec that defines where this information lives, so we
+check all known locations including `navigator.userAgent`, `navigator.platform`,
+and `navigator.cpuClass` to make a best guess.
+
+If there is no *affirmative indication* that the architecture is 64-bit, then
+32-bit will be assumed. This makes this package perfect for determining what
+installer executable to offer to desktop app users. If there is ambiguity, then
+the user will get the 32-bit installer, which will work fine even for a user with
+a 64-bit OS.
+
+For reference, `x64` means 64-bit and `x86` means 32-bit.
+
+Here is some history behind these naming conventions:
+
+- https://en.wikipedia.org/wiki/X86
+- https://en.wikipedia.org/wiki/IA-32
+- https://en.wikipedia.org/wiki/X86-64
+
+## Node.js proposal - `os.sysarch()`
+
+Note: There is
+[a proposal](https://github.com/nodejs/node-v0.x-archive/issues/2862#issuecomment-103942051)
+to add this functionality to Node.js as `os.sysarch()`.
+
+## license
+
+MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).
diff --git a/node_modules/arch/browser.js b/node_modules/arch/browser.js
new file mode 100644
index 00000000..eca04d05
--- /dev/null
+++ b/node_modules/arch/browser.js
@@ -0,0 +1,43 @@
+module.exports = function arch () {
+ /**
+ * User agent strings that indicate a 64-bit OS.
+ * See: http://stackoverflow.com/a/13709431/292185
+ */
+ var userAgent = navigator.userAgent
+ if ([
+ 'x86_64',
+ 'x86-64',
+ 'Win64',
+ 'x64;',
+ 'amd64',
+ 'AMD64',
+ 'WOW64',
+ 'x64_64'
+ ].some(function (str) {
+ return userAgent.indexOf(str) > -1
+ })) {
+ return 'x64'
+ }
+
+ /**
+ * Platform strings that indicate a 64-bit OS.
+ * See: http://stackoverflow.com/a/19883965/292185
+ */
+ var platform = navigator.platform
+ if (platform === 'MacIntel' || platform === 'Linux x86_64') {
+ return 'x64'
+ }
+
+ /**
+ * CPU class strings that indicate a 64-bit OS.
+ * See: http://stackoverflow.com/a/6267019/292185
+ */
+ if (navigator.cpuClass === 'x64') {
+ return 'x64'
+ }
+
+ /**
+ * If none of the above, assume the architecture is 32-bit.
+ */
+ return 'x86'
+}
diff --git a/node_modules/arch/index.js b/node_modules/arch/index.js
new file mode 100644
index 00000000..17455e02
--- /dev/null
+++ b/node_modules/arch/index.js
@@ -0,0 +1,59 @@
+var cp = require('child_process')
+var fs = require('fs')
+var path = require('path')
+
+/**
+ * Returns the operating system's CPU architecture. This is different than
+ * `process.arch` or `os.arch()` which returns the architecture the Node.js (or
+ * Electron) binary was compiled for.
+ */
+module.exports = function arch () {
+ /**
+ * The running binary is 64-bit, so the OS is clearly 64-bit.
+ */
+ if (process.arch === 'x64') {
+ return 'x64'
+ }
+
+ /**
+ * All recent versions of Mac OS are 64-bit.
+ */
+ if (process.platform === 'darwin') {
+ return 'x64'
+ }
+
+ /**
+ * On Windows, the most reliable way to detect a 64-bit OS from within a 32-bit
+ * app is based on the presence of a WOW64 file: %SystemRoot%\SysNative.
+ * See: https://twitter.com/feross/status/776949077208510464
+ */
+ if (process.platform === 'win32') {
+ var useEnv = false
+ try {
+ useEnv = !!(process.env.SYSTEMROOT && fs.statSync(process.env.SYSTEMROOT))
+ } catch (err) {}
+
+ var sysRoot = useEnv ? process.env.SYSTEMROOT : 'C:\\Windows'
+
+ // If %SystemRoot%\SysNative exists, we are in a WOW64 FS Redirected application.
+ var isWOW64 = false
+ try {
+ isWOW64 = !!fs.statSync(path.join(sysRoot, 'sysnative'))
+ } catch (err) {}
+
+ return isWOW64 ? 'x64' : 'x86'
+ }
+
+ /**
+ * On Linux, use the `getconf` command to get the architecture.
+ */
+ if (process.platform === 'linux') {
+ var output = cp.execSync('getconf LONG_BIT', {encoding: 'utf8'})
+ return output === '64\n' ? 'x64' : 'x86'
+ }
+
+ /**
+ * If none of the above, assume the architecture is 32-bit.
+ */
+ return 'x86'
+}
diff --git a/node_modules/arch/package.json b/node_modules/arch/package.json
new file mode 100644
index 00000000..18560812
--- /dev/null
+++ b/node_modules/arch/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "arch",
+ "description": "Better `os.arch()` for node and the browser -- detect OS architecture",
+ "version": "2.1.1",
+ "author": {
+ "name": "Feross Aboukhadijeh",
+ "email": "feross@feross.org",
+ "url": "http://feross.org/"
+ },
+ "browser": "browser.js",
+ "bugs": {
+ "url": "https://github.com/feross/arch/issues"
+ },
+ "devDependencies": {
+ "airtap": "0.0.7",
+ "standard": "*",
+ "tape": "^4.0.0"
+ },
+ "homepage": "https://github.com/feross/arch",
+ "keywords": [
+ "browser",
+ "browserify",
+ "arch",
+ "cpu info",
+ "cpus",
+ "architecture",
+ "navigator.platform",
+ "x64",
+ "x86",
+ "64 bit",
+ "32 bit"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/feross/arch.git"
+ },
+ "scripts": {
+ "test": "standard && npm run test-node && npm run test-browser",
+ "test-browser": "airtap -- test/*.js",
+ "test-browser-local": "airtap --local -- test/*.js",
+ "test-node": "tape test/*.js"
+ }
+}