Browse Source

Moved requirejs to bower, #677

Torkel Ödegaard 10 years ago
parent
commit
fd319bd5f5

+ 3 - 1
bower.json

@@ -19,6 +19,8 @@
     "angular-mocks": "~1.4.0",
     "angular-sanitize": "~1.4.0",
     "angular-native-dragdrop": "~1.1.0",
-    "angular-bindonce": "~0.3.3"
+    "angular-bindonce": "~0.3.3",
+    "requirejs": "~2.1.18",
+    "requirejs-text": "~2.0.14"
   }
 }

+ 1 - 2
public/app/components/require.config.js

@@ -8,8 +8,7 @@ require.config({
     kbn:                      'components/kbn',
     store:                    'components/store',
 
-    css:                      '../vendor/require/css',
-    text:                     '../vendor/require/text',
+    text:                     '../vendor/requirejs-text/text',
     moment:                   '../vendor/moment',
     filesaver:                '../vendor/filesaver',
     ZeroClipboard:            '../vendor/ZeroClipboard',

+ 0 - 78
public/vendor/require/css-build.js

@@ -1,78 +0,0 @@
-/**	plugin builder for requirejs optimization
- */
-
-define(function() {
-
-	var fs = require.nodeRequire('fs');
-
-	function loadfile (url, callback) {
-		var file = fs.readFileSync(url, 'utf8');
-		//Remove BOM (Byte Mark Order) from utf8 files if it is there.
-		if (file.indexOf('\uFEFF') === 0) {
-			file = file.substring(1);
-		}
-		callback(file);
-	};
-
-	function strip (content) {
-		return content.replace(/[\r\n]+/g," ").replace(/[\t]/g," ");
-	}
-
-	var buildMap = {};
-	var writeonce = false;
-
-	var loader =
-	{
-		load: function (name, require, load, config) {
-			//console.log('css-build: load: '+name);
-			load(true);
-			loadfile(config.baseUrl+name,function(F){
-				buildMap[name]=strip(F);
-			});
-		},
-
-		write: function (pluginName, moduleName, write, config) {
-
-			if( !writeonce)
-			{
-				writeonce=true;
-				write(
-					"define('"+pluginName+"-embed', function()\n{\n"+
-					"\tfunction embed_css(content)\n"+
-					"\t{\n"+
-					"\t\tvar head = document.getElementsByTagName('head')[0],\n"+
-					"\t\tstyle = document.createElement('style'),\n"+
-					"\t\trules = document.createTextNode(content);\n"+
-					"\t\tstyle.type = 'text/css';\n"+
-					"\t\tif(style.styleSheet)\n"+
-					"\t\t\tstyle.styleSheet.cssText = rules.nodeValue;\n"+
-					"\t\telse style.appendChild(rules);\n"+
-					"\t\t\thead.appendChild(style);\n"+
-					"\t}\n"+
-					"\treturn embed_css;\n"+
-					"});\n"
-				);
-			}
-
-			write(
-				"define('"+pluginName+'!'+moduleName+"', ['"+pluginName+"-embed'], \n"+
-				"function(embed)\n{\n"+
-					"\tembed(\n\t'"+buildMap[moduleName].replace(/'/g, "\\'")+"'\n\t);\n"+
-					"\treturn true;\n"+
-				"});\n"
-			);
-		},
-
-		writeFile: function (pluginName, moduleName, write)
-		{
-			//console.log('css-build: writeFile');
-		},
-
-		onLayerEnd: function (write, data)
-		{
-			//console.log('css-build: onLayerEnd');
-		}
-	};
-
-	return loader;
-});

+ 0 - 23
public/vendor/require/css.js

@@ -1,23 +0,0 @@
-/**	`css` is a requirejs plugin
-	that loads a css file and inject it into a page.
-	note that this loader will return immediately,
-	regardless of whether the browser had finished parsing the stylesheet.
-	this css loader is implemented for file optimization and depedency managment
- */
-
-define({
-	load: function (name, require, load, config) {
-		function inject(filename)
-		{
-			var head = document.getElementsByTagName('head')[0];
-			var link = document.createElement('link');
-			link.href = filename;
-			link.rel = 'stylesheet';
-			link.type = 'text/css';
-			head.appendChild(link);
-		}
-		inject(requirejs.toUrl(name));
-		load(true);
-	},
-	pluginBuilder: '../vendor/require/css-build'
-});

+ 0 - 17
public/vendor/require/tmpl.js

@@ -1,17 +0,0 @@
-/*jshint unused:false */
-define(['module'], function (module) {
-  'use strict';
-
-  var masterConfig = (module.config && module.config()) || {};
-
-  return {
-    load: function (name, require, onLoad, config) {
-      var url = require.toUrl(name);
-      require(['text!'+name], function (text) {
-        masterConfig.registerTemplate && masterConfig.registerTemplate(url, text);
-        onLoad(text);
-      });
-    }
-  };
-
-});

+ 16 - 0
public/vendor/requirejs-text/.bower.json

@@ -0,0 +1,16 @@
+{
+  "name": "text",
+  "version": "2.0.14",
+  "main": "text.js",
+  "homepage": "https://github.com/requirejs/text",
+  "_release": "2.0.14",
+  "_resolution": {
+    "type": "version",
+    "tag": "2.0.14",
+    "commit": "195a482d24f1d515979ab26f29e968e99c4ab63c"
+  },
+  "_source": "git://github.com/requirejs/text.git",
+  "_target": "~2.0.14",
+  "_originalSource": "requirejs-text",
+  "_direct": true
+}

+ 58 - 0
public/vendor/requirejs-text/LICENSE

@@ -0,0 +1,58 @@
+RequireJS is released under two licenses: new BSD, and MIT. You may pick the
+license that best suits your development needs. The text of both licenses are
+provided below.
+
+
+The "New" BSD License:
+----------------------
+
+Copyright (c) 2010-2014, The Dojo Foundation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+  * Neither the name of the Dojo Foundation nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+MIT License
+-----------
+
+Copyright (c) 2010-2014, The Dojo Foundation
+
+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.

+ 198 - 0
public/vendor/requirejs-text/README.md

@@ -0,0 +1,198 @@
+# text
+
+A [RequireJS](http://requirejs.org)/AMD loader plugin for loading text
+resources.
+
+Known to work in RequireJS, but should work in other AMD loaders that support
+the same loader plugin API.
+
+## Docs
+
+See the [RequireJS API text section](http://requirejs.org/docs/api.html#text).
+
+## Latest release
+
+The latest release is always available from [the "latest" tag](https://raw.github.com/requirejs/text/latest/text.js).
+
+It can also be installed using [volo](https://github.com/volojs/volo):
+
+    volo add requirejs/text
+
+## Usage
+
+It is nice to build HTML using regular HTML tags, instead of building up DOM
+structures in script. However, there is no good way to embed HTML in a
+JavaScript file. The best that can be done is using a string of HTML, but that
+can be hard to manage, particularly for multi-line HTML.
+
+The text.js AMD loader plugin can help with this issue. It will automatically be
+loaded if the text! prefix is used for a dependency. Download the plugin and put
+it in the app's [baseUrl](http://requirejs.org/docs/api.html#config-baseUrl)
+directory (or use the [paths config](http://requirejs.org/docs/api.html#config-paths) to place it in other areas).
+
+You can specify a text file resource as a dependency like so:
+
+```javascript
+require(["some/module", "text!some/module.html", "text!some/module.css"],
+    function(module, html, css) {
+        //the html variable will be the text
+        //of the some/module.html file
+        //the css variable will be the text
+        //of the some/module.css file.
+    }
+);
+```
+
+Notice the .html and .css suffixes to specify the extension of the file. The
+"some/module" part of the path will be resolved according to normal module name
+resolution: it will use the **baseUrl** and **paths** [configuration
+options](http://requirejs.org/docs/api.html#config) to map that name to a path.
+
+For HTML/XML/SVG files, there is another option. You can pass !strip, which
+strips XML declarations so that external SVG and XML documents can be added to a
+document without worry. Also, if the string is an HTML document, only the part
+inside the body tag is returned. Example:
+
+```javascript
+require(["text!some/module.html!strip"],
+    function(html) {
+        //the html variable will be the text of the
+        //some/module.html file, but only the part
+        //inside the body tag.
+    }
+);
+```
+
+The text files are loaded via asynchronous XMLHttpRequest (XHR) calls, so you
+can only fetch files from the same domain as the web page (see **XHR
+restrictions** below).
+
+However, [the RequireJS optimizer](http://requirejs.org/docs/optimization.html)
+will inline any text! references with the actual text file contents into the
+modules, so after a build, the modules that have text! dependencies can be used
+from other domains.
+
+## Configuration
+
+### XHR restrictions
+
+The text plugin works by using XMLHttpRequest (XHR) to fetch the text for the
+resources it handles.
+
+However, XHR calls have some restrictions, due to browser/web security policies:
+
+1) Many browsers do not allow file:// access to just any file. You are better
+off serving the application from a local web server than using local file://
+URLs. You will likely run into trouble otherwise.
+
+2) There are restrictions for using XHR to access files on another web domain.
+While CORS can help enable the server for cross-domain access, doing so must
+be done with care (in particular if you also host an API from that domain),
+and not all browsers support CORS.
+
+So if the text plugin determines that the request for the resource is on another
+domain, it will try to access a ".js" version of the resource by using a
+script tag. Script tag GET requests are allowed across domains. The .js version
+of the resource should just be a script with a define() call in it that returns
+a string for the module value.
+
+Example: if the resource is 'text!example.html' and that resolves to a path
+on another web domain, the text plugin will do a script tag load for
+'example.html.js'.
+
+The [requirejs optimizer](http://requirejs.org/docs/optimization.html) will
+generate these '.js' versions of the text resources if you set this in the
+build profile:
+
+    optimizeAllPluginResources: true
+
+In some cases, you may want the text plugin to not try the .js resource, maybe
+because you have configured CORS on the other server, and you know that only
+browsers that support CORS will be used. In that case you can use the
+[module config](http://requirejs.org/docs/api.html#config-moduleconfig)
+(requires RequireJS 2+) to override some of the basic logic the plugin uses to
+determine if the .js file should be requested:
+
+```javascript
+requirejs.config({
+    config: {
+        text: {
+            useXhr: function (url, protocol, hostname, port) {
+                //Override function for determining if XHR should be used.
+                //url: the URL being requested
+                //protocol: protocol of page text.js is running on
+                //hostname: hostname of page text.js is running on
+                //port: port of page text.js is running on
+                //Use protocol, hostname, and port to compare against the url
+                //being requested.
+                //Return true or false. true means "use xhr", false means
+                //"fetch the .js version of this resource".
+            }
+        }
+    }
+});
+```
+
+### Custom XHR hooks
+
+There may be cases where you might want to provide the XHR object to use
+in the request, or you may just want to add some custom headers to the
+XHR object used to make the request. You can use the following hooks:
+
+```javascript
+requirejs.config({
+    config: {
+        text: {
+            onXhr: function (xhr, url) {
+                //Called after the XHR has been created and after the
+                //xhr.open() call, but before the xhr.send() call.
+                //Useful time to set headers.
+                //xhr: the xhr object
+                //url: the url that is being used with the xhr object.
+            },
+            createXhr: function () {
+                //Overrides the creation of the XHR object. Return an XHR
+                //object from this function.
+                //Available in text.js 2.0.1 or later.
+            },
+            onXhrComplete: function (xhr, url) {
+                //Called whenever an XHR has completed its work. Useful
+                //if browser-specific xhr cleanup needs to be done.
+            }
+        }
+    }
+});
+```
+
+### Forcing the environment implemention
+
+The text plugin tries to detect what environment it is available for loading
+text resources, Node, XMLHttpRequest (XHR) or Rhino, but sometimes the
+Node or Rhino environment may have loaded a library that introduces an XHR
+implementation. You can force the environment implementation to use by passing
+an "env" module config to the plugin:
+
+```javascript
+requirejs.config({
+    config: {
+        text: {
+            //Valid values are 'node', 'xhr', or 'rhino'
+            env: 'rhino'
+        }
+    }
+});
+```
+
+## License
+
+Dual-licensed -- new BSD or MIT.
+
+## Where are the tests?
+
+They are in the [requirejs](https://github.com/jrburke/requirejs) and
+[r.js](https://github.com/jrburke/r.js) repos.
+
+## History
+
+This plugin was in the [requirejs repo](https://github.com/jrburke/requirejs)
+up until the requirejs 2.0 release.

+ 5 - 0
public/vendor/requirejs-text/bower.json

@@ -0,0 +1,5 @@
+{
+  "name": "text",
+  "version": "2.0.14",
+  "main": "text.js"
+}

+ 30 - 0
public/vendor/requirejs-text/package.json

@@ -0,0 +1,30 @@
+{
+    "name": "text",
+    "version": "2.0.14",
+    "description": "An AMD loader plugin for loading text resources.",
+    "categories": [
+        "Loader plugins"
+    ],
+    "main": "text.js",
+    "github": "https://github.com/requirejs/text",
+    "bugs": {
+        "web": "https://github.com/requirejs/text/issues"
+    },
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/requirejs/text.git"
+    },
+    "licenses": [
+        {
+            "type": "MIT",
+            "url": "http://www.opensource.org/licenses/mit-license.php"
+        },
+        {
+            "type": "BSD New",
+            "url": "http://opensource.org/licenses/BSD-3-Clause"
+        }
+    ],
+    "volo": {
+        "url": "https://raw.github.com/requirejs/text/{version}/text.js"
+    }
+}

+ 18 - 13
public/vendor/require/text.js → public/vendor/requirejs-text/text.js

@@ -1,5 +1,5 @@
 /**
- * @license RequireJS text 2.0.10 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
+ * @license RequireJS text 2.0.14 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved.
  * Available via the MIT or new BSD license.
  * see: http://github.com/requirejs/text for details
  */
@@ -23,7 +23,7 @@ define(['module'], function (module) {
         masterConfig = (module.config && module.config()) || {};
 
     text = {
-        version: '2.0.10',
+        version: '2.0.14',
 
         strip: function (content) {
             //Strips <?xml ...?> declarations so that external SVG and XML
@@ -85,13 +85,13 @@ define(['module'], function (module) {
         parseName: function (name) {
             var modName, ext, temp,
                 strip = false,
-                index = name.indexOf("."),
+                index = name.lastIndexOf("."),
                 isRelative = name.indexOf('./') === 0 ||
                              name.indexOf('../') === 0;
 
             if (index !== -1 && (!isRelative || index > 1)) {
                 modName = name.substring(0, index);
-                ext = name.substring(index + 1, name.length);
+                ext = name.substring(index + 1);
             } else {
                 modName = name;
             }
@@ -162,12 +162,12 @@ define(['module'], function (module) {
 
             // Do not bother with the work if a build and text will
             // not be inlined.
-            if (config.isBuild && !config.inlineText) {
+            if (config && config.isBuild && !config.inlineText) {
                 onLoad();
                 return;
             }
 
-            masterConfig.isBuild = config.isBuild;
+            masterConfig.isBuild = config && config.isBuild;
 
             var parsed = text.parseName(name),
                 nonStripName = parsed.moduleName +
@@ -244,7 +244,8 @@ define(['module'], function (module) {
             typeof process !== "undefined" &&
             process.versions &&
             !!process.versions.node &&
-            !process.versions['node-webkit'])) {
+            !process.versions['node-webkit'] &&
+            !process.versions['atom-shell'])) {
         //Using special require.nodeRequire, something added by r.js.
         fs = require.nodeRequire('fs');
 
@@ -252,12 +253,14 @@ define(['module'], function (module) {
             try {
                 var file = fs.readFileSync(url, 'utf8');
                 //Remove BOM (Byte Mark Order) from utf8 files if it is there.
-                if (file.indexOf('\uFEFF') === 0) {
+                if (file[0] === '\uFEFF') {
                     file = file.substring(1);
                 }
                 callback(file);
             } catch (e) {
-                errback(e);
+                if (errback) {
+                    errback(e);
+                }
             }
         };
     } else if (masterConfig.env === 'xhr' || (!masterConfig.env &&
@@ -285,12 +288,14 @@ define(['module'], function (module) {
                 //Do not explicitly handle errors, those should be
                 //visible via console output in the browser.
                 if (xhr.readyState === 4) {
-                    status = xhr.status;
+                    status = xhr.status || 0;
                     if (status > 399 && status < 600) {
                         //An http 4xx or 5xx error. Signal an error.
                         err = new Error(url + ' HTTP status: ' + status);
                         err.xhr = xhr;
-                        errback(err);
+                        if (errback) {
+                            errback(err);
+                        }
                     } else {
                         callback(xhr.responseText);
                     }
@@ -347,7 +352,7 @@ define(['module'], function (module) {
             typeof Components !== 'undefined' && Components.classes &&
             Components.interfaces)) {
         //Avert your gaze!
-        Cc = Components.classes,
+        Cc = Components.classes;
         Ci = Components.interfaces;
         Components.utils['import']('resource://gre/modules/FileUtils.jsm');
         xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc);
@@ -383,4 +388,4 @@ define(['module'], function (module) {
         };
     }
     return text;
-});
+});

+ 27 - 0
public/vendor/requirejs/.bower.json

@@ -0,0 +1,27 @@
+{
+  "name": "requirejs",
+  "version": "2.1.18",
+  "homepage": "http://requirejs.org",
+  "authors": [
+    "jrburke.com"
+  ],
+  "description": "A file and module loader for JavaScript",
+  "main": "require.js",
+  "keywords": [
+    "AMD"
+  ],
+  "license": [
+    "BSD-3-Clause",
+    "MIT"
+  ],
+  "_release": "2.1.18",
+  "_resolution": {
+    "type": "version",
+    "tag": "2.1.18",
+    "commit": "833b2db37b0899f7f2c8b6ada741f49c3a7bfbe9"
+  },
+  "_source": "git://github.com/jrburke/requirejs-bower.git",
+  "_target": "~2.1.18",
+  "_originalSource": "requirejs",
+  "_direct": true
+}

+ 4 - 0
public/vendor/requirejs/README.md

@@ -0,0 +1,4 @@
+# requirejs-bower
+
+Bower packaging for [RequireJS](http://requirejs.org).
+

+ 17 - 0
public/vendor/requirejs/bower.json

@@ -0,0 +1,17 @@
+{
+  "name": "requirejs",
+  "version": "2.1.18",
+  "homepage": "http://requirejs.org",
+  "authors": [
+    "jrburke.com"
+  ],
+  "description": "A file and module loader for JavaScript",
+  "main": "require.js",
+  "keywords": [
+    "AMD"
+  ],
+  "license": [
+    "BSD-3-Clause",
+    "MIT"
+  ]
+}

File diff suppressed because it is too large
+ 248 - 211
public/vendor/requirejs/require.js


+ 1 - 1
public/views/index.html

@@ -18,7 +18,7 @@
 		<base href="[[.AppSubUrl]]/" />
 
 		<!-- build:js [[.AppSubUrl]]/app/app.js -->
-    <script src="[[.AppSubUrl]]/public/vendor/require/require.js"></script>
+    <script src="[[.AppSubUrl]]/public/vendor/requirejs/require.js"></script>
     <script src="[[.AppSubUrl]]/public/app/components/require.config.js"></script>
     <!-- endbuild -->
   </head>

+ 1 - 1
tasks/options/concat.js

@@ -27,7 +27,7 @@ module.exports = function(config) {
 
     js: {
       src: [
-        '<%= destDir %>/vendor/require/require.js',
+        '<%= destDir %>/vendor/requirejs/require.js',
         '<%= destDir %>/app/components/require.config.js',
         '<%= destDir %>/app/app.js',
       ],

+ 0 - 2
tasks/options/requirejs.js

@@ -40,7 +40,6 @@ module.exports = function(config,grunt) {
       // main/common module
       name: 'app',
         include: [
-          'css',
           'kbn',
           'text',
           'jquery',
@@ -75,7 +74,6 @@ module.exports = function(config,grunt) {
     // create a module for each directory in public/app/panels/
     fs.readdirSync(panelPath).forEach(function (panelName) {
       requireModules[0].include.push('panels/'+panelName+'/module');
-      requireModules[0].include.push('text!panels/'+panelName+'/module.html');
     });
 
     return { options: options };

+ 1 - 1
tasks/options/uglify.js

@@ -2,7 +2,7 @@ module.exports = function(config) {
   return {
     dest: {
       expand: true,
-      src: ['**/*.js', '!dashboards/*.js'],
+      src: ['**/*.js', '!dashboards/*.js', '!vendor/jquery/**/*.js'],
       dest: '<%= destDir %>',
       cwd: '<%= destDir %>',
       options: {

Some files were not shown because too many files changed in this diff