jass-vue 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +43 -0
- data/lib/jass/vue.rb +12 -0
- data/lib/jass/vue/version.rb +5 -0
- data/vendor/node_modules/arr-diff/index.js +58 -0
- data/vendor/node_modules/arr-diff/package.json +49 -0
- data/vendor/node_modules/arr-flatten/index.js +22 -0
- data/vendor/node_modules/arr-flatten/package.json +76 -0
- data/vendor/node_modules/array-unique/index.js +28 -0
- data/vendor/node_modules/array-unique/package.json +37 -0
- data/vendor/node_modules/braces/index.js +399 -0
- data/vendor/node_modules/braces/package.json +83 -0
- data/vendor/node_modules/de-indent/index.js +45 -0
- data/vendor/node_modules/de-indent/package.json +25 -0
- data/vendor/node_modules/de-indent/test.js +30 -0
- data/vendor/node_modules/estree-walker/dist/estree-walker.es.js +55 -0
- data/vendor/node_modules/estree-walker/dist/estree-walker.es6.js +59 -0
- data/vendor/node_modules/estree-walker/dist/estree-walker.umd.js +65 -0
- data/vendor/node_modules/estree-walker/package.json +33 -0
- data/vendor/node_modules/estree-walker/src/estree-walker.js +49 -0
- data/vendor/node_modules/expand-brackets/index.js +163 -0
- data/vendor/node_modules/expand-brackets/package.json +62 -0
- data/vendor/node_modules/expand-range/index.js +43 -0
- data/vendor/node_modules/expand-range/package.json +73 -0
- data/vendor/node_modules/extglob/index.js +178 -0
- data/vendor/node_modules/extglob/package.json +60 -0
- data/vendor/node_modules/filename-regex/index.js +10 -0
- data/vendor/node_modules/filename-regex/package.json +50 -0
- data/vendor/node_modules/fill-range/index.js +408 -0
- data/vendor/node_modules/fill-range/package.json +61 -0
- data/vendor/node_modules/for-in/index.js +16 -0
- data/vendor/node_modules/for-in/package.json +68 -0
- data/vendor/node_modules/for-own/index.js +19 -0
- data/vendor/node_modules/for-own/package.json +70 -0
- data/vendor/node_modules/glob-base/index.js +51 -0
- data/vendor/node_modules/glob-base/package.json +52 -0
- data/vendor/node_modules/glob-parent/index.js +10 -0
- data/vendor/node_modules/glob-parent/package.json +35 -0
- data/vendor/node_modules/glob-parent/test.js +28 -0
- data/vendor/node_modules/he/bin/he +148 -0
- data/vendor/node_modules/he/he.js +342 -0
- data/vendor/node_modules/he/man/he.1 +78 -0
- data/vendor/node_modules/he/package.json +56 -0
- data/vendor/node_modules/is-buffer/index.js +21 -0
- data/vendor/node_modules/is-buffer/package.json +51 -0
- data/vendor/node_modules/is-dotfile/index.js +14 -0
- data/vendor/node_modules/is-dotfile/package.json +69 -0
- data/vendor/node_modules/is-equal-shallow/index.js +27 -0
- data/vendor/node_modules/is-equal-shallow/package.json +54 -0
- data/vendor/node_modules/is-extendable/index.js +13 -0
- data/vendor/node_modules/is-extendable/package.json +51 -0
- data/vendor/node_modules/is-extglob/index.js +11 -0
- data/vendor/node_modules/is-extglob/package.json +48 -0
- data/vendor/node_modules/is-glob/index.js +14 -0
- data/vendor/node_modules/is-glob/package.json +60 -0
- data/vendor/node_modules/is-number/index.js +19 -0
- data/vendor/node_modules/is-number/package.json +59 -0
- data/vendor/node_modules/is-posix-bracket/index.js +10 -0
- data/vendor/node_modules/is-posix-bracket/package.json +64 -0
- data/vendor/node_modules/is-primitive/index.js +13 -0
- data/vendor/node_modules/is-primitive/package.json +46 -0
- data/vendor/node_modules/isarray/index.js +5 -0
- data/vendor/node_modules/isarray/package.json +45 -0
- data/vendor/node_modules/isarray/test.js +20 -0
- data/vendor/node_modules/isobject/index.js +14 -0
- data/vendor/node_modules/isobject/package.json +67 -0
- data/vendor/node_modules/kind-of/index.js +116 -0
- data/vendor/node_modules/kind-of/package.json +90 -0
- data/vendor/node_modules/magic-string/dist/magic-string.cjs.js +1287 -0
- data/vendor/node_modules/magic-string/dist/magic-string.es.js +1283 -0
- data/vendor/node_modules/magic-string/dist/magic-string.umd.js +1339 -0
- data/vendor/node_modules/magic-string/package.json +60 -0
- data/vendor/node_modules/magic-string/src/Bundle.js +263 -0
- data/vendor/node_modules/magic-string/src/Chunk.js +154 -0
- data/vendor/node_modules/magic-string/src/MagicString.js +618 -0
- data/vendor/node_modules/magic-string/src/index-legacy.js +6 -0
- data/vendor/node_modules/magic-string/src/index.js +4 -0
- data/vendor/node_modules/magic-string/src/utils/Mappings.js +117 -0
- data/vendor/node_modules/magic-string/src/utils/SourceMap.js +21 -0
- data/vendor/node_modules/magic-string/src/utils/Stats.js +18 -0
- data/vendor/node_modules/magic-string/src/utils/btoa.js +13 -0
- data/vendor/node_modules/magic-string/src/utils/getLocator.js +35 -0
- data/vendor/node_modules/magic-string/src/utils/getRelativePath.js +18 -0
- data/vendor/node_modules/magic-string/src/utils/guessIndent.js +25 -0
- data/vendor/node_modules/magic-string/src/utils/hasOwnProp.js +1 -0
- data/vendor/node_modules/magic-string/src/utils/isObject.js +5 -0
- data/vendor/node_modules/micromatch/index.js +431 -0
- data/vendor/node_modules/micromatch/lib/chars.js +67 -0
- data/vendor/node_modules/micromatch/lib/expand.js +304 -0
- data/vendor/node_modules/micromatch/lib/glob.js +193 -0
- data/vendor/node_modules/micromatch/lib/utils.js +149 -0
- data/vendor/node_modules/micromatch/package.json +114 -0
- data/vendor/node_modules/normalize-path/index.js +19 -0
- data/vendor/node_modules/normalize-path/package.json +78 -0
- data/vendor/node_modules/object.omit/index.js +40 -0
- data/vendor/node_modules/object.omit/package.json +67 -0
- data/vendor/node_modules/parse-glob/index.js +156 -0
- data/vendor/node_modules/parse-glob/package.json +62 -0
- data/vendor/node_modules/preserve/index.js +54 -0
- data/vendor/node_modules/preserve/package.json +48 -0
- data/vendor/node_modules/preserve/test.js +48 -0
- data/vendor/node_modules/randomatic/index.js +82 -0
- data/vendor/node_modules/randomatic/node_modules/is-number/index.js +22 -0
- data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +116 -0
- data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +90 -0
- data/vendor/node_modules/randomatic/node_modules/is-number/package.json +83 -0
- data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +119 -0
- data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +90 -0
- data/vendor/node_modules/randomatic/package.json +78 -0
- data/vendor/node_modules/regex-cache/index.js +68 -0
- data/vendor/node_modules/regex-cache/package.json +64 -0
- data/vendor/node_modules/remove-trailing-separator/index.js +17 -0
- data/vendor/node_modules/remove-trailing-separator/package.json +37 -0
- data/vendor/node_modules/repeat-element/index.js +18 -0
- data/vendor/node_modules/repeat-element/package.json +44 -0
- data/vendor/node_modules/repeat-string/index.js +70 -0
- data/vendor/node_modules/repeat-string/package.json +77 -0
- data/vendor/node_modules/rollup-plugin-vue2/dist/rollup-plugin-vue2.common.js +164 -0
- data/vendor/node_modules/rollup-plugin-vue2/dist/rollup-plugin-vue2.es.js +160 -0
- data/vendor/node_modules/rollup-plugin-vue2/package.json +50 -0
- data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +223 -0
- data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +214 -0
- data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +217 -0
- data/vendor/node_modules/rollup-pluginutils/package.json +40 -0
- data/vendor/node_modules/rollup-pluginutils/src/addExtension.js +6 -0
- data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +147 -0
- data/vendor/node_modules/rollup-pluginutils/src/createFilter.js +33 -0
- data/vendor/node_modules/rollup-pluginutils/src/index.js +4 -0
- data/vendor/node_modules/rollup-pluginutils/src/makeLegalIdentifier.js +15 -0
- data/vendor/node_modules/rollup-pluginutils/src/utils/ensureArray.js +5 -0
- data/vendor/node_modules/vlq/dist/vlq.js +91 -0
- data/vendor/node_modules/vlq/package.json +27 -0
- data/vendor/node_modules/vlq/src/vlq.js +78 -0
- data/vendor/node_modules/vue-template-compiler/browser.js +5237 -0
- data/vendor/node_modules/vue-template-compiler/build.js +4835 -0
- data/vendor/node_modules/vue-template-compiler/index.js +18 -0
- data/vendor/node_modules/vue-template-compiler/package.json +27 -0
- data/vendor/node_modules/vue-template-es2015-compiler/buble.js +14112 -0
- data/vendor/node_modules/vue-template-es2015-compiler/index.js +24 -0
- data/vendor/node_modules/vue-template-es2015-compiler/package.json +28 -0
- data/vendor/package.json +9 -0
- data/vendor/yarn.lock +268 -0
- metadata +242 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c2685154ff4c63266a8b7b5320642b211ae7e45b626f4e9168c9161de174f4ab
|
4
|
+
data.tar.gz: 8825925b9cba3fddfd05f10fb4c2e73038fb29547cdcbf47a54c0d0f3ea62159
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2d325b4bab960a478c5f503c80fdd5b2655cc7f31e2c4db205dc9cfcefed37405cc8ed01390b3fedfe7c79bfde2d24062231391572b1b218e857010ccb2b897b
|
7
|
+
data.tar.gz: 1178b2353d960e41e057d161d7917cd2c61eccf729f7334d1e58c79cfa98a7abdd122c8e741a1c1f7451bb226a88fdce541e953e2db1ae60271dcf646ae8bd63
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 Matthias Grosser
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Jass::Vue
|
2
|
+
|
3
|
+
Roll ES6 and VueJS single file components with the Rails asset pipeline - no Webpack required!
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'jass-vue'
|
11
|
+
```
|
12
|
+
|
13
|
+
You need a working NodeJS installation.
|
14
|
+
|
15
|
+
## Configuration
|
16
|
+
|
17
|
+
In Rails apps the location of your custom npm dependencies will be automatically
|
18
|
+
set to:
|
19
|
+
|
20
|
+
```
|
21
|
+
Jass.vendor_modules_root = Rails.root.join('vendor')
|
22
|
+
```
|
23
|
+
|
24
|
+
For other frameworks, it needs to be set manually using the above method.
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
|
28
|
+
Use `yarn` to install your custom npm dependencies into `vendor/node_modules`.
|
29
|
+
`vendor/package.json` and `vendor/yarn.lock` should be checked into source control.
|
30
|
+
|
31
|
+
Create your bundle entry points as `.jass` files under `app/assets/javascripts` in regular
|
32
|
+
ES6 syntax (`import`, `async/await`).
|
33
|
+
|
34
|
+
External dependencies can be declared to Sprockets using the `global` comment:
|
35
|
+
|
36
|
+
```js
|
37
|
+
// application.jass
|
38
|
+
//= global vue Vue
|
39
|
+
//= global vue-router VueRouter
|
40
|
+
|
41
|
+
import Vue from 'vue'
|
42
|
+
import Foo from 'custom-dependency'
|
43
|
+
```
|
data/lib/jass/vue.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'jass/vue/version'
|
2
|
+
require 'jass'
|
3
|
+
|
4
|
+
module Jass
|
5
|
+
module Vue
|
6
|
+
def self.root
|
7
|
+
File.absolute_path(Pathname.new(__FILE__).dirname.join('..', '..', 'vendor').to_s)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
Jass.prepend_plugin 'rollup-plugin-vue2', 'vue2', '{include: /\.vue$/ }', Jass::Vue.root
|
@@ -0,0 +1,58 @@
|
|
1
|
+
/*!
|
2
|
+
* arr-diff <https://github.com/jonschlinkert/arr-diff>
|
3
|
+
*
|
4
|
+
* Copyright (c) 2014 Jon Schlinkert, contributors.
|
5
|
+
* Licensed under the MIT License
|
6
|
+
*/
|
7
|
+
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
var flatten = require('arr-flatten');
|
11
|
+
var slice = [].slice;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Return the difference between the first array and
|
15
|
+
* additional arrays.
|
16
|
+
*
|
17
|
+
* ```js
|
18
|
+
* var diff = require('{%= name %}');
|
19
|
+
*
|
20
|
+
* var a = ['a', 'b', 'c', 'd'];
|
21
|
+
* var b = ['b', 'c'];
|
22
|
+
*
|
23
|
+
* console.log(diff(a, b))
|
24
|
+
* //=> ['a', 'd']
|
25
|
+
* ```
|
26
|
+
*
|
27
|
+
* @param {Array} `a`
|
28
|
+
* @param {Array} `b`
|
29
|
+
* @return {Array}
|
30
|
+
* @api public
|
31
|
+
*/
|
32
|
+
|
33
|
+
function diff(arr, arrays) {
|
34
|
+
var argsLen = arguments.length;
|
35
|
+
var len = arr.length, i = -1;
|
36
|
+
var res = [], arrays;
|
37
|
+
|
38
|
+
if (argsLen === 1) {
|
39
|
+
return arr;
|
40
|
+
}
|
41
|
+
|
42
|
+
if (argsLen > 2) {
|
43
|
+
arrays = flatten(slice.call(arguments, 1));
|
44
|
+
}
|
45
|
+
|
46
|
+
while (++i < len) {
|
47
|
+
if (!~arrays.indexOf(arr[i])) {
|
48
|
+
res.push(arr[i]);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
return res;
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Expose `diff`
|
56
|
+
*/
|
57
|
+
|
58
|
+
module.exports = diff;
|
@@ -0,0 +1,49 @@
|
|
1
|
+
{
|
2
|
+
"name": "arr-diff",
|
3
|
+
"description": "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.",
|
4
|
+
"version": "2.0.0",
|
5
|
+
"homepage": "https://github.com/jonschlinkert/arr-diff",
|
6
|
+
"author": "Jon Schlinkert (https://github.com/jonschlinkert)",
|
7
|
+
"repository": "jonschlinkert/arr-diff",
|
8
|
+
"bugs": {
|
9
|
+
"url": "https://github.com/jonschlinkert/arr-diff/issues"
|
10
|
+
},
|
11
|
+
"license": "MIT",
|
12
|
+
"files": [
|
13
|
+
"index.js"
|
14
|
+
],
|
15
|
+
"main": "index.js",
|
16
|
+
"engines": {
|
17
|
+
"node": ">=0.10.0"
|
18
|
+
},
|
19
|
+
"scripts": {
|
20
|
+
"test": "mocha"
|
21
|
+
},
|
22
|
+
"dependencies": {
|
23
|
+
"arr-flatten": "^1.0.1"
|
24
|
+
},
|
25
|
+
"devDependencies": {
|
26
|
+
"array-differ": "^1.0.0",
|
27
|
+
"array-slice": "^0.2.3",
|
28
|
+
"benchmarked": "^0.1.4",
|
29
|
+
"chalk": "^1.1.1",
|
30
|
+
"mocha": "*",
|
31
|
+
"should": "*"
|
32
|
+
},
|
33
|
+
"keywords": [
|
34
|
+
"arr",
|
35
|
+
"array",
|
36
|
+
"diff",
|
37
|
+
"differ",
|
38
|
+
"difference"
|
39
|
+
],
|
40
|
+
"verb": {
|
41
|
+
"related": {
|
42
|
+
"list": [
|
43
|
+
"arr-flatten",
|
44
|
+
"array-filter",
|
45
|
+
"array-intersection"
|
46
|
+
]
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
/*!
|
2
|
+
* arr-flatten <https://github.com/jonschlinkert/arr-flatten>
|
3
|
+
*
|
4
|
+
* Copyright (c) 2014-2017, Jon Schlinkert.
|
5
|
+
* Released under the MIT License.
|
6
|
+
*/
|
7
|
+
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
module.exports = function (arr) {
|
11
|
+
return flat(arr, []);
|
12
|
+
};
|
13
|
+
|
14
|
+
function flat(arr, res) {
|
15
|
+
var i = 0, cur;
|
16
|
+
var len = arr.length;
|
17
|
+
for (; i < len; i++) {
|
18
|
+
cur = arr[i];
|
19
|
+
Array.isArray(cur) ? flat(cur, res) : res.push(cur);
|
20
|
+
}
|
21
|
+
return res;
|
22
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
{
|
2
|
+
"name": "arr-flatten",
|
3
|
+
"description": "Recursively flatten an array or arrays.",
|
4
|
+
"version": "1.1.0",
|
5
|
+
"homepage": "https://github.com/jonschlinkert/arr-flatten",
|
6
|
+
"author": "Jon Schlinkert (https://github.com/jonschlinkert)",
|
7
|
+
"contributors": [
|
8
|
+
"Jon Schlinkert (http://twitter.com/jonschlinkert)",
|
9
|
+
"Luke Edwards (https://lukeed.com)"
|
10
|
+
],
|
11
|
+
"repository": "jonschlinkert/arr-flatten",
|
12
|
+
"bugs": {
|
13
|
+
"url": "https://github.com/jonschlinkert/arr-flatten/issues"
|
14
|
+
},
|
15
|
+
"license": "MIT",
|
16
|
+
"files": [
|
17
|
+
"index.js"
|
18
|
+
],
|
19
|
+
"main": "index.js",
|
20
|
+
"engines": {
|
21
|
+
"node": ">=0.10.0"
|
22
|
+
},
|
23
|
+
"scripts": {
|
24
|
+
"test": "mocha"
|
25
|
+
},
|
26
|
+
"devDependencies": {
|
27
|
+
"ansi-bold": "^0.1.1",
|
28
|
+
"array-flatten": "^2.1.1",
|
29
|
+
"array-slice": "^1.0.0",
|
30
|
+
"benchmarked": "^1.0.0",
|
31
|
+
"compute-flatten": "^1.0.0",
|
32
|
+
"flatit": "^1.1.1",
|
33
|
+
"flatten": "^1.0.2",
|
34
|
+
"flatten-array": "^1.0.0",
|
35
|
+
"glob": "^7.1.1",
|
36
|
+
"gulp-format-md": "^0.1.12",
|
37
|
+
"just-flatten-it": "^1.1.23",
|
38
|
+
"lodash.flattendeep": "^4.4.0",
|
39
|
+
"m_flattened": "^1.0.1",
|
40
|
+
"mocha": "^3.2.0",
|
41
|
+
"utils-flatten": "^1.0.0",
|
42
|
+
"write": "^0.3.3"
|
43
|
+
},
|
44
|
+
"keywords": [
|
45
|
+
"arr",
|
46
|
+
"array",
|
47
|
+
"elements",
|
48
|
+
"flat",
|
49
|
+
"flatten",
|
50
|
+
"nested",
|
51
|
+
"recurse",
|
52
|
+
"recursive",
|
53
|
+
"recursively"
|
54
|
+
],
|
55
|
+
"verb": {
|
56
|
+
"toc": false,
|
57
|
+
"layout": "default",
|
58
|
+
"tasks": [
|
59
|
+
"readme"
|
60
|
+
],
|
61
|
+
"plugins": [
|
62
|
+
"gulp-format-md"
|
63
|
+
],
|
64
|
+
"related": {
|
65
|
+
"list": [
|
66
|
+
"arr-filter",
|
67
|
+
"arr-union",
|
68
|
+
"array-each",
|
69
|
+
"array-unique"
|
70
|
+
]
|
71
|
+
},
|
72
|
+
"lint": {
|
73
|
+
"reflinks": true
|
74
|
+
}
|
75
|
+
}
|
76
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/*!
|
2
|
+
* array-unique <https://github.com/jonschlinkert/array-unique>
|
3
|
+
*
|
4
|
+
* Copyright (c) 2014-2015, Jon Schlinkert.
|
5
|
+
* Licensed under the MIT License.
|
6
|
+
*/
|
7
|
+
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
module.exports = function unique(arr) {
|
11
|
+
if (!Array.isArray(arr)) {
|
12
|
+
throw new TypeError('array-unique expects an array.');
|
13
|
+
}
|
14
|
+
|
15
|
+
var len = arr.length;
|
16
|
+
var i = -1;
|
17
|
+
|
18
|
+
while (i++ < len) {
|
19
|
+
var j = i + 1;
|
20
|
+
|
21
|
+
for (; j < arr.length; ++j) {
|
22
|
+
if (arr[i] === arr[j]) {
|
23
|
+
arr.splice(j--, 1);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
return arr;
|
28
|
+
};
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "array-unique",
|
3
|
+
"description": "Return an array free of duplicate values. Fastest ES5 implementation.",
|
4
|
+
"version": "0.2.1",
|
5
|
+
"homepage": "https://github.com/jonschlinkert/array-unique",
|
6
|
+
"author": {
|
7
|
+
"name": "Jon Schlinkert",
|
8
|
+
"url": "https://github.com/jonschlinkert"
|
9
|
+
},
|
10
|
+
"repository": {
|
11
|
+
"type": "git",
|
12
|
+
"url": "git://github.com/jonschlinkert/array-unique.git"
|
13
|
+
},
|
14
|
+
"bugs": {
|
15
|
+
"url": "https://github.com/jonschlinkert/array-unique/issues"
|
16
|
+
},
|
17
|
+
"license": {
|
18
|
+
"type": "MIT",
|
19
|
+
"url": "https://github.com/jonschlinkert/array-unique/blob/master/LICENSE"
|
20
|
+
},
|
21
|
+
"files": [
|
22
|
+
"index.js"
|
23
|
+
],
|
24
|
+
"main": "index.js",
|
25
|
+
"engines": {
|
26
|
+
"node": ">=0.10.0"
|
27
|
+
},
|
28
|
+
"scripts": {
|
29
|
+
"test": "mocha"
|
30
|
+
},
|
31
|
+
"devDependencies": {
|
32
|
+
"array-uniq": "^1.0.2",
|
33
|
+
"benchmarked": "^0.1.3",
|
34
|
+
"mocha": "*",
|
35
|
+
"should": "*"
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1,399 @@
|
|
1
|
+
/*!
|
2
|
+
* braces <https://github.com/jonschlinkert/braces>
|
3
|
+
*
|
4
|
+
* Copyright (c) 2014-2015, Jon Schlinkert.
|
5
|
+
* Licensed under the MIT license.
|
6
|
+
*/
|
7
|
+
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Module dependencies
|
12
|
+
*/
|
13
|
+
|
14
|
+
var expand = require('expand-range');
|
15
|
+
var repeat = require('repeat-element');
|
16
|
+
var tokens = require('preserve');
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Expose `braces`
|
20
|
+
*/
|
21
|
+
|
22
|
+
module.exports = function(str, options) {
|
23
|
+
if (typeof str !== 'string') {
|
24
|
+
throw new Error('braces expects a string');
|
25
|
+
}
|
26
|
+
return braces(str, options);
|
27
|
+
};
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Expand `{foo,bar}` or `{1..5}` braces in the
|
31
|
+
* given `string`.
|
32
|
+
*
|
33
|
+
* @param {String} `str`
|
34
|
+
* @param {Array} `arr`
|
35
|
+
* @param {Object} `options`
|
36
|
+
* @return {Array}
|
37
|
+
*/
|
38
|
+
|
39
|
+
function braces(str, arr, options) {
|
40
|
+
if (str === '') {
|
41
|
+
return [];
|
42
|
+
}
|
43
|
+
|
44
|
+
if (!Array.isArray(arr)) {
|
45
|
+
options = arr;
|
46
|
+
arr = [];
|
47
|
+
}
|
48
|
+
|
49
|
+
var opts = options || {};
|
50
|
+
arr = arr || [];
|
51
|
+
|
52
|
+
if (typeof opts.nodupes === 'undefined') {
|
53
|
+
opts.nodupes = true;
|
54
|
+
}
|
55
|
+
|
56
|
+
var fn = opts.fn;
|
57
|
+
var es6;
|
58
|
+
|
59
|
+
if (typeof opts === 'function') {
|
60
|
+
fn = opts;
|
61
|
+
opts = {};
|
62
|
+
}
|
63
|
+
|
64
|
+
if (!(patternRe instanceof RegExp)) {
|
65
|
+
patternRe = patternRegex();
|
66
|
+
}
|
67
|
+
|
68
|
+
var matches = str.match(patternRe) || [];
|
69
|
+
var m = matches[0];
|
70
|
+
|
71
|
+
switch(m) {
|
72
|
+
case '\\,':
|
73
|
+
return escapeCommas(str, arr, opts);
|
74
|
+
case '\\.':
|
75
|
+
return escapeDots(str, arr, opts);
|
76
|
+
case '\/.':
|
77
|
+
return escapePaths(str, arr, opts);
|
78
|
+
case ' ':
|
79
|
+
return splitWhitespace(str);
|
80
|
+
case '{,}':
|
81
|
+
return exponential(str, opts, braces);
|
82
|
+
case '{}':
|
83
|
+
return emptyBraces(str, arr, opts);
|
84
|
+
case '\\{':
|
85
|
+
case '\\}':
|
86
|
+
return escapeBraces(str, arr, opts);
|
87
|
+
case '${':
|
88
|
+
if (!/\{[^{]+\{/.test(str)) {
|
89
|
+
return arr.concat(str);
|
90
|
+
} else {
|
91
|
+
es6 = true;
|
92
|
+
str = tokens.before(str, es6Regex());
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
if (!(braceRe instanceof RegExp)) {
|
97
|
+
braceRe = braceRegex();
|
98
|
+
}
|
99
|
+
|
100
|
+
var match = braceRe.exec(str);
|
101
|
+
if (match == null) {
|
102
|
+
return [str];
|
103
|
+
}
|
104
|
+
|
105
|
+
var outter = match[1];
|
106
|
+
var inner = match[2];
|
107
|
+
if (inner === '') { return [str]; }
|
108
|
+
|
109
|
+
var segs, segsLength;
|
110
|
+
|
111
|
+
if (inner.indexOf('..') !== -1) {
|
112
|
+
segs = expand(inner, opts, fn) || inner.split(',');
|
113
|
+
segsLength = segs.length;
|
114
|
+
|
115
|
+
} else if (inner[0] === '"' || inner[0] === '\'') {
|
116
|
+
return arr.concat(str.split(/['"]/).join(''));
|
117
|
+
|
118
|
+
} else {
|
119
|
+
segs = inner.split(',');
|
120
|
+
if (opts.makeRe) {
|
121
|
+
return braces(str.replace(outter, wrap(segs, '|')), opts);
|
122
|
+
}
|
123
|
+
|
124
|
+
segsLength = segs.length;
|
125
|
+
if (segsLength === 1 && opts.bash) {
|
126
|
+
segs[0] = wrap(segs[0], '\\');
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
var len = segs.length;
|
131
|
+
var i = 0, val;
|
132
|
+
|
133
|
+
while (len--) {
|
134
|
+
var path = segs[i++];
|
135
|
+
|
136
|
+
if (/(\.[^.\/])/.test(path)) {
|
137
|
+
if (segsLength > 1) {
|
138
|
+
return segs;
|
139
|
+
} else {
|
140
|
+
return [str];
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
val = splice(str, outter, path);
|
145
|
+
|
146
|
+
if (/\{[^{}]+?\}/.test(val)) {
|
147
|
+
arr = braces(val, arr, opts);
|
148
|
+
} else if (val !== '') {
|
149
|
+
if (opts.nodupes && arr.indexOf(val) !== -1) { continue; }
|
150
|
+
arr.push(es6 ? tokens.after(val) : val);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
if (opts.strict) { return filter(arr, filterEmpty); }
|
155
|
+
return arr;
|
156
|
+
}
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Expand exponential ranges
|
160
|
+
*
|
161
|
+
* `a{,}{,}` => ['a', 'a', 'a', 'a']
|
162
|
+
*/
|
163
|
+
|
164
|
+
function exponential(str, options, fn) {
|
165
|
+
if (typeof options === 'function') {
|
166
|
+
fn = options;
|
167
|
+
options = null;
|
168
|
+
}
|
169
|
+
|
170
|
+
var opts = options || {};
|
171
|
+
var esc = '__ESC_EXP__';
|
172
|
+
var exp = 0;
|
173
|
+
var res;
|
174
|
+
|
175
|
+
var parts = str.split('{,}');
|
176
|
+
if (opts.nodupes) {
|
177
|
+
return fn(parts.join(''), opts);
|
178
|
+
}
|
179
|
+
|
180
|
+
exp = parts.length - 1;
|
181
|
+
res = fn(parts.join(esc), opts);
|
182
|
+
var len = res.length;
|
183
|
+
var arr = [];
|
184
|
+
var i = 0;
|
185
|
+
|
186
|
+
while (len--) {
|
187
|
+
var ele = res[i++];
|
188
|
+
var idx = ele.indexOf(esc);
|
189
|
+
|
190
|
+
if (idx === -1) {
|
191
|
+
arr.push(ele);
|
192
|
+
|
193
|
+
} else {
|
194
|
+
ele = ele.split('__ESC_EXP__').join('');
|
195
|
+
if (!!ele && opts.nodupes !== false) {
|
196
|
+
arr.push(ele);
|
197
|
+
|
198
|
+
} else {
|
199
|
+
var num = Math.pow(2, exp);
|
200
|
+
arr.push.apply(arr, repeat(ele, num));
|
201
|
+
}
|
202
|
+
}
|
203
|
+
}
|
204
|
+
return arr;
|
205
|
+
}
|
206
|
+
|
207
|
+
/**
|
208
|
+
* Wrap a value with parens, brackets or braces,
|
209
|
+
* based on the given character/separator.
|
210
|
+
*
|
211
|
+
* @param {String|Array} `val`
|
212
|
+
* @param {String} `ch`
|
213
|
+
* @return {String}
|
214
|
+
*/
|
215
|
+
|
216
|
+
function wrap(val, ch) {
|
217
|
+
if (ch === '|') {
|
218
|
+
return '(' + val.join(ch) + ')';
|
219
|
+
}
|
220
|
+
if (ch === ',') {
|
221
|
+
return '{' + val.join(ch) + '}';
|
222
|
+
}
|
223
|
+
if (ch === '-') {
|
224
|
+
return '[' + val.join(ch) + ']';
|
225
|
+
}
|
226
|
+
if (ch === '\\') {
|
227
|
+
return '\\{' + val + '\\}';
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
/**
|
232
|
+
* Handle empty braces: `{}`
|
233
|
+
*/
|
234
|
+
|
235
|
+
function emptyBraces(str, arr, opts) {
|
236
|
+
return braces(str.split('{}').join('\\{\\}'), arr, opts);
|
237
|
+
}
|
238
|
+
|
239
|
+
/**
|
240
|
+
* Filter out empty-ish values
|
241
|
+
*/
|
242
|
+
|
243
|
+
function filterEmpty(ele) {
|
244
|
+
return !!ele && ele !== '\\';
|
245
|
+
}
|
246
|
+
|
247
|
+
/**
|
248
|
+
* Handle patterns with whitespace
|
249
|
+
*/
|
250
|
+
|
251
|
+
function splitWhitespace(str) {
|
252
|
+
var segs = str.split(' ');
|
253
|
+
var len = segs.length;
|
254
|
+
var res = [];
|
255
|
+
var i = 0;
|
256
|
+
|
257
|
+
while (len--) {
|
258
|
+
res.push.apply(res, braces(segs[i++]));
|
259
|
+
}
|
260
|
+
return res;
|
261
|
+
}
|
262
|
+
|
263
|
+
/**
|
264
|
+
* Handle escaped braces: `\\{foo,bar}`
|
265
|
+
*/
|
266
|
+
|
267
|
+
function escapeBraces(str, arr, opts) {
|
268
|
+
if (!/\{[^{]+\{/.test(str)) {
|
269
|
+
return arr.concat(str.split('\\').join(''));
|
270
|
+
} else {
|
271
|
+
str = str.split('\\{').join('__LT_BRACE__');
|
272
|
+
str = str.split('\\}').join('__RT_BRACE__');
|
273
|
+
return map(braces(str, arr, opts), function(ele) {
|
274
|
+
ele = ele.split('__LT_BRACE__').join('{');
|
275
|
+
return ele.split('__RT_BRACE__').join('}');
|
276
|
+
});
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
/**
|
281
|
+
* Handle escaped dots: `{1\\.2}`
|
282
|
+
*/
|
283
|
+
|
284
|
+
function escapeDots(str, arr, opts) {
|
285
|
+
if (!/[^\\]\..+\\\./.test(str)) {
|
286
|
+
return arr.concat(str.split('\\').join(''));
|
287
|
+
} else {
|
288
|
+
str = str.split('\\.').join('__ESC_DOT__');
|
289
|
+
return map(braces(str, arr, opts), function(ele) {
|
290
|
+
return ele.split('__ESC_DOT__').join('.');
|
291
|
+
});
|
292
|
+
}
|
293
|
+
}
|
294
|
+
|
295
|
+
/**
|
296
|
+
* Handle escaped dots: `{1\\.2}`
|
297
|
+
*/
|
298
|
+
|
299
|
+
function escapePaths(str, arr, opts) {
|
300
|
+
str = str.split('\/.').join('__ESC_PATH__');
|
301
|
+
return map(braces(str, arr, opts), function(ele) {
|
302
|
+
return ele.split('__ESC_PATH__').join('\/.');
|
303
|
+
});
|
304
|
+
}
|
305
|
+
|
306
|
+
/**
|
307
|
+
* Handle escaped commas: `{a\\,b}`
|
308
|
+
*/
|
309
|
+
|
310
|
+
function escapeCommas(str, arr, opts) {
|
311
|
+
if (!/\w,/.test(str)) {
|
312
|
+
return arr.concat(str.split('\\').join(''));
|
313
|
+
} else {
|
314
|
+
str = str.split('\\,').join('__ESC_COMMA__');
|
315
|
+
return map(braces(str, arr, opts), function(ele) {
|
316
|
+
return ele.split('__ESC_COMMA__').join(',');
|
317
|
+
});
|
318
|
+
}
|
319
|
+
}
|
320
|
+
|
321
|
+
/**
|
322
|
+
* Regex for common patterns
|
323
|
+
*/
|
324
|
+
|
325
|
+
function patternRegex() {
|
326
|
+
return /\${|( (?=[{,}])|(?=[{,}]) )|{}|{,}|\\,(?=.*[{}])|\/\.(?=.*[{}])|\\\.(?={)|\\{|\\}/;
|
327
|
+
}
|
328
|
+
|
329
|
+
/**
|
330
|
+
* Braces regex.
|
331
|
+
*/
|
332
|
+
|
333
|
+
function braceRegex() {
|
334
|
+
return /.*(\\?\{([^}]+)\})/;
|
335
|
+
}
|
336
|
+
|
337
|
+
/**
|
338
|
+
* es6 delimiter regex.
|
339
|
+
*/
|
340
|
+
|
341
|
+
function es6Regex() {
|
342
|
+
return /\$\{([^}]+)\}/;
|
343
|
+
}
|
344
|
+
|
345
|
+
var braceRe;
|
346
|
+
var patternRe;
|
347
|
+
|
348
|
+
/**
|
349
|
+
* Faster alternative to `String.replace()` when the
|
350
|
+
* index of the token to be replaces can't be supplied
|
351
|
+
*/
|
352
|
+
|
353
|
+
function splice(str, token, replacement) {
|
354
|
+
var i = str.indexOf(token);
|
355
|
+
return str.substr(0, i) + replacement
|
356
|
+
+ str.substr(i + token.length);
|
357
|
+
}
|
358
|
+
|
359
|
+
/**
|
360
|
+
* Fast array map
|
361
|
+
*/
|
362
|
+
|
363
|
+
function map(arr, fn) {
|
364
|
+
if (arr == null) {
|
365
|
+
return [];
|
366
|
+
}
|
367
|
+
|
368
|
+
var len = arr.length;
|
369
|
+
var res = new Array(len);
|
370
|
+
var i = -1;
|
371
|
+
|
372
|
+
while (++i < len) {
|
373
|
+
res[i] = fn(arr[i], i, arr);
|
374
|
+
}
|
375
|
+
|
376
|
+
return res;
|
377
|
+
}
|
378
|
+
|
379
|
+
/**
|
380
|
+
* Fast array filter
|
381
|
+
*/
|
382
|
+
|
383
|
+
function filter(arr, cb) {
|
384
|
+
if (arr == null) return [];
|
385
|
+
if (typeof cb !== 'function') {
|
386
|
+
throw new TypeError('braces: filter expects a callback function.');
|
387
|
+
}
|
388
|
+
|
389
|
+
var len = arr.length;
|
390
|
+
var res = arr.slice();
|
391
|
+
var i = 0;
|
392
|
+
|
393
|
+
while (len--) {
|
394
|
+
if (!cb(arr[len], i++)) {
|
395
|
+
res.splice(len, 1);
|
396
|
+
}
|
397
|
+
}
|
398
|
+
return res;
|
399
|
+
}
|