[Pkg-javascript-commits] [node-leveldown] 319/492: browserify shim so levelup can run in the browser
Andrew Kelley
andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:12 UTC 2014
This is an automated email from the git hooks/post-receive script.
andrewrk-guest pushed a commit to annotated tag rocksdb-0.10.1
in repository node-leveldown.
commit 4b3d9de6acc0a6b01d9eab8e7f24cfc24d890964
Author: No9 <antonwhalley at vodafone.ie>
Date: Thu May 2 23:42:03 2013 +0100
browserify shim so levelup can run in the browser
---
index-shim.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
package.json | 5 ++-
2 files changed, 120 insertions(+), 1 deletion(-)
diff --git a/index-shim.js b/index-shim.js
new file mode 100644
index 0000000..34c6d01
--- /dev/null
+++ b/index-shim.js
@@ -0,0 +1,116 @@
+
+/**
+ * Module dependencies.
+ */
+
+var fs = require('fs')
+ , path = require('path')
+ , join = path.join
+ , dirname = path.dirname
+ , exists = fs.existsSync || path.existsSync
+ , defaults = {
+ arrow: process.env.NODE_BINDINGS_ARROW || ' → '
+ , compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled'
+ , platform: process.platform
+ , arch: process.arch
+ , version: "1.0"
+ , bindings: 'bindings.node'
+ , try: [
+ // node-gyp's linked version in the "build" dir
+ [ 'module_root', 'build', 'bindings' ]
+ // node-waf and gyp_addon (a.k.a node-gyp)
+ , [ 'module_root', 'build', 'Debug', 'bindings' ]
+ , [ 'module_root', 'build', 'Release', 'bindings' ]
+ // Debug files, for development (legacy behavior, remove for node v0.9)
+ , [ 'module_root', 'out', 'Debug', 'bindings' ]
+ , [ 'module_root', 'Debug', 'bindings' ]
+ // Release files, but manually compiled (legacy behavior, remove for node v0.9)
+ , [ 'module_root', 'out', 'Release', 'bindings' ]
+ , [ 'module_root', 'Release', 'bindings' ]
+ // Legacy from node-waf, node <= 0.4.x
+ , [ 'module_root', 'build', 'default', 'bindings' ]
+ // Production "Release" buildtype binary (meh...)
+ , [ 'module_root', 'compiled', 'version', 'platform', 'arch', 'bindings' ]
+ ]
+ }
+
+/**
+ * The main `bindings()` function loads the compiled bindings for a given module.
+ * It uses V8's Error API to determine the parent filename that this function is
+ * being invoked from, which is then used to find the root directory.
+ */
+
+function bindings (opts) {
+
+ var mock = {}
+ function leveldown (){
+ this.open = function(){}
+ }
+ mock.leveldown = new leveldown
+ return mock
+}
+
+
+module.exports = exports = bindings
+
+
+/**
+ * Gets the filename of the JavaScript file that invokes this function.
+ * Used to help find the root directory of a module.
+ */
+
+exports.getFileName = function getFileName () {
+ var origPST = Error.prepareStackTrace
+ , dummy = {}
+ , fileName
+
+ Error.prepareStackTrace = function (e, st) {
+ for (var i=0, l=st.length; i<l; i++) {
+ fileName = st[i].getFileName()
+ if (fileName !== __filename) {
+ return
+ }
+ }
+ }
+
+ // run the 'prepareStackTrace' function above
+ Error.captureStackTrace(dummy)
+ dummy.stack
+
+ // cleanup
+ Error.prepareStackTrace = origPST
+
+ return fileName
+}
+
+/**
+ * Gets the root directory of a module, given an arbitrary filename
+ * somewhere in the module tree. The "root directory" is the directory
+ * containing the `package.json` file.
+ *
+ * In: /home/nate/node-native-module/lib/index.js
+ * Out: /home/nate/node-native-module
+ */
+
+exports.getRoot = function getRoot (file) {
+ var dir = dirname(file)
+ , prev
+ while (true) {
+ if (dir === '.') {
+ // Avoids an infinite loop in rare cases, like the REPL
+ dir = process.cwd()
+ }
+ if (exists(join(dir, 'package.json')) || exists(join(dir, 'node_modules'))) {
+ // Found the 'package.json' file or 'node_modules' dir; we're done
+ return dir
+ }
+ if (prev === dir) {
+ // Got to the top
+ throw new Error('Could not find module root given file: "' + file
+ + '". Do you have a `package.json` file? ')
+ }
+ // Try the parent dir next
+ prev = dir
+ dir = join(dir, '..')
+ }
+}
diff --git a/package.json b/package.json
index c56ef7c..731c509 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,9 @@
, "scripts" : {
"test" : "tap test/*-test.js --stderr"
}
- , "license" : "MIT"
+ , "browser": {
+ "bindings": "./index-shim.js"
+ },
+ "license" : "MIT"
, "gypfile" : true
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git
More information about the Pkg-javascript-commits
mailing list