diff --git a/.cmd-helper b/.cmds similarity index 69% rename from .cmd-helper rename to .cmds index 43c725224..870d62315 100644 --- a/.cmd-helper +++ b/.cmds @@ -1,10 +1,12 @@ +# transifex +tx pull -a + # dependencies checker npm-check --skip-unused # dependencies locker npm shrinkwrap --dev -# code validation +# js code validation gulp v - diff --git a/.eslintrc.js b/.eslintrc.js index b83cb00d2..c5fbfabc0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,281 +1,282 @@ - -module.exports = { - 'extends': 'eslint:recommended', - 'ecmaFeatures': { - 'modules': true - }, - 'parserOptions': { - 'ecmaVersion': 6, - 'sourceType': 'module' - }, - 'env': { - 'node': true, - 'commonjs': true, - 'es6': true, - 'browser': true - }, - 'globals': { - 'RL_COMMUNITY': true - }, - // http://eslint.org/docs/rules/ - 'rules': { - - // errors - 'no-cond-assign': [2, 'always'], - 'no-console': 2, - 'no-constant-condition': 2, - 'no-control-regex': 2, - 'no-debugger': 2, - 'no-dupe-args': 2, - 'no-dupe-keys': 2, - 'no-duplicate-case': 2, - 'no-empty': 2, - 'no-empty-character-class': 2, - 'no-ex-assign': 2, - 'no-extra-boolean-cast': 2, -// 'no-extra-parens': 2, - 'no-extra-semi': 2, - 'no-func-assign': 2, - 'no-inner-declarations': 2, - 'no-invalid-regexp': 2, - 'no-irregular-whitespace': 2, - 'no-negated-in-lhs': 2, - 'no-obj-calls': 2, - 'no-prototype-builtins': 2, - 'no-regex-spaces': 2, - 'no-sparse-arrays': 2, - 'no-unexpected-multiline': 2, - 'no-unreachable': 2, - 'no-unsafe-finally': 2, - 'use-isnan': 2, -// 'valid-jsdoc': [2, { -// 'requireParamDescription': false, -// 'requireReturnDescription': false -// }], - 'valid-typeof': 2, - - // best practices - 'accessor-pairs': 2, - 'array-callback-return': 2, - 'block-scoped-var': 2, -// 'complexity': 2, - 'consistent-return': 2, - 'curly': 2, - 'default-case': 2, - 'dot-location': [2, 'property'], - 'dot-notation': 2, - 'eqeqeq': 2, - 'guard-for-in': 2, - 'no-alert': 2, - 'no-caller': 2, - 'no-case-declarations': 2, - 'no-div-regex': 2, - 'no-else-return': 2, - 'no-empty-function': 2, - 'no-empty-pattern': 2, - 'no-eq-null': 2, - 'no-eval': 2, - 'no-extend-native': 2, - 'no-extra-bind': 2, - 'no-extra-label': 2, - 'no-fallthrough': 2, - 'no-floating-decimal': 2, - 'no-implicit-coercion': [2, {'allow': ['!!', '+']}], - 'no-implicit-globals': 2, - 'no-implied-eval': 2, -// 'no-invalid-this': 2, - 'no-iterator': 2, - 'no-labels': 2, - 'no-lone-blocks': 2, - 'no-loop-func': 2, -// 'no-magic-numbers': [2, { -// 'ignore': [-1, 0, 1], -// 'ignoreArrayIndexes': true -// }], - 'no-multi-spaces': 2, - 'no-multi-str': 2, - 'no-native-reassign': 2, - 'no-new': 2, - 'no-new-func': 2, - 'no-new-wrappers': 2, - 'no-octal': 2, - 'no-octal-escape': 2, -// 'no-param-reassign': 2, - 'no-proto': 2, - 'no-redeclare': 2, - 'no-return-assign': 2, - 'no-script-url': 2, - 'no-self-assign': 2, - 'no-self-compare': 2, - 'no-sequences': 2, - 'no-throw-literal': 2, - 'no-unmodified-loop-condition': 2, - 'no-unused-expressions': 2, - 'no-unused-labels': 2, - 'no-useless-call': 2, - 'no-useless-concat': 2, - 'no-useless-escape': 2, - 'no-void': 2, - 'no-warning-comments': 2, - 'no-with': 2, - 'radix': 2, -// 'vars-on-top': 2, - 'wrap-iife': 2, - 'yoda': [2, 'always'], - - // strict mode - 'strict': 2, - - // variables - 'init-declarations': 2, - 'no-catch-shadow': 2, - 'no-delete-var': 2, - 'no-label-var': 2, - 'no-restricted-globals': 2, - 'no-shadow': 2, - 'no-shadow-restricted-names': 2, - 'no-undef': 2, - 'no-undef-init': 2, - 'no-undefined': 2, - 'no-unused-vars': 2, - 'no-use-before-define': 2, - - // node.js and commonjs - 'callback-return': 2, -// 'global-require': 2, - 'handle-callback-err': 2, -// 'no-mixed-requires': 2, - 'no-new-require': 2, - 'no-path-concat': 2, - 'no-process-env': 2, - 'no-process-exit': 2, - 'no-restricted-modules': 2, -// 'no-sync': 2, - - // stylistic issues - 'array-bracket-spacing': 2, - 'block-spacing': [2, 'never'], -// 'brace-style': [2, 'allman'], - 'camelcase': 2, - 'comma-dangle': [2, 'never'], - 'comma-spacing': 2, - 'comma-style': 2, - 'computed-property-spacing': 2, - 'consistent-this': [2, 'self'], - 'eol-last': 2, - 'func-names': [2, 'never'], -// 'func-style': 2, - 'id-blacklist': [2, 'x'], - 'id-length': [2, {'min': 1, 'max': 50}], - 'id-match': 2, - 'indent': [2, 'tab', { - 'SwitchCase': 1, - 'VariableDeclarator': { - 'var': 1, - 'let': 1, - 'const': 1 - } - }], - 'jsx-quotes': 2, - 'key-spacing': 2, - 'keyword-spacing': 2, - 'linebreak-style': [2, 'unix'], -// 'lines-around-comment': 2, - 'max-depth': [2, 10], - 'max-len': [2, 200], -// 'max-lines': 2, - 'max-nested-callbacks': [2, 5], -// 'max-params': 2, -// 'max-statements': [2, {'max': 10}, {'ignoreTopLevelFunctions': true}], - 'max-statements-per-line': 2, - 'new-cap': 2, - 'new-parens': 2, -// 'newline-after-var': 2, -// 'newline-before-return': 2, -// 'newline-per-chained-call': 2, - 'no-array-constructor': 2, - 'no-bitwise': 2, - 'no-continue': 2, -// 'no-inline-comments': 2, -// 'no-lonely-if': 2, -// 'no-mixed-operators': 2, - 'no-mixed-spaces-and-tabs': 2, - 'no-multiple-empty-lines': [2, { - "max": 1, - "maxEOF": 1, - "maxBOF": 1 - }], -// 'no-negated-condition': 2, -// 'no-nested-ternary': 2, - 'no-new-object': 2, - 'no-plusplus': [2, { - 'allowForLoopAfterthoughts': true - }], - 'no-restricted-syntax': 2, - 'no-spaced-func': 2, - 'no-ternary': 0, - 'no-trailing-spaces': 2, // disallow trailing whitespace at the end of lines -// 'no-underscore-dangle': 2, // disallow dangling underscores in identifiers - 'no-unneeded-ternary': 2, // disallow ternary operators when simpler alternatives exist - 'no-whitespace-before-property': 2, -// 'object-curly-newline': 2, - 'object-curly-spacing': [2, 'never'], - 'object-property-newline': [2, {'allowMultiplePropertiesPerLine': true}], -// 'one-var': [2, { -// 'var': 'always', -// 'let': 'always', -// 'const': 'always' -// }], - 'one-var-declaration-per-line': [2, 'always'], - 'operator-assignment': 2, - 'operator-linebreak': [2, 'after'], -// 'padded-blocks': [2, 'never'], -// 'quote-props': [2, 'as-needed'], - 'quotes': [2, 'single'], - 'require-jsdoc': 2, - 'semi': [2, 'always'], - 'semi-spacing': 2, -// 'sort-vars': 2, - 'space-before-blocks': 2, - 'space-before-function-paren': [2, 'never'], - 'space-in-parens': 2, - 'space-infix-ops': 2, - 'space-unary-ops': 2, - 'spaced-comment': 2, - 'unicode-bom': [2, 'never'], - 'wrap-regex': 2, - - // es6 - 'arrow-body-style': [2, 'as-needed'], - 'arrow-parens': 2, - 'arrow-spacing': 2, - 'constructor-super': 2, - 'generator-star-spacing': 2, - 'no-class-assign': 2, - 'no-confusing-arrow': [2, {'allowParens': true}], - 'no-const-assign': 2, - 'no-dupe-class-members': 2, - 'no-duplicate-imports': 2, - 'no-new-symbol': 2, - 'no-restricted-imports': 2, - 'no-this-before-super': 2, - 'no-useless-computed-key': 2, - 'no-useless-constructor': 2, - 'no-useless-rename': 2, -// 'no-var': 2, -// 'object-shorthand': 2, -// 'prefer-arrow-callback': 2, - 'prefer-const': 2, -// 'prefer-reflect': 2, - - 'prefer-rest-params': 2, - 'prefer-spread': 2, - -// 'prefer-template': 2, - 'require-yield': 2, - 'rest-spread-spacing': 2, - 'sort-imports': 0, // off - 'template-curly-spacing': 2, - 'yield-star-spacing': 2 - } -}; + +module.exports = { + 'extends': 'eslint:recommended', + 'ecmaFeatures': { + 'modules': true + }, + 'parserOptions': { + 'ecmaVersion': 6, + 'sourceType': 'module' + }, + 'env': { + 'node': true, + 'commonjs': true, + 'es6': true, + 'browser': true + }, + 'globals': { + 'RL_COMMUNITY': true, + 'RL_ES6': true + }, + // http://eslint.org/docs/rules/ + 'rules': { + + // errors + 'no-cond-assign': [2, 'always'], + 'no-console': 2, + 'no-constant-condition': 2, + 'no-control-regex': 2, + 'no-debugger': 2, + 'no-dupe-args': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty': 2, + 'no-empty-character-class': 2, + 'no-ex-assign': 2, + 'no-extra-boolean-cast': 2, +// 'no-extra-parens': 2, + 'no-extra-semi': 2, + 'no-func-assign': 2, + 'no-inner-declarations': 2, + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-negated-in-lhs': 2, + 'no-obj-calls': 2, + 'no-prototype-builtins': 2, + 'no-regex-spaces': 2, + 'no-sparse-arrays': 2, + 'no-unexpected-multiline': 2, + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'use-isnan': 2, +// 'valid-jsdoc': [2, { +// 'requireParamDescription': false, +// 'requireReturnDescription': false +// }], + 'valid-typeof': 2, + + // best practices + 'accessor-pairs': 2, + 'array-callback-return': 2, + 'block-scoped-var': 2, +// 'complexity': 2, + 'consistent-return': 2, + 'curly': 2, + 'default-case': 2, + 'dot-location': [2, 'property'], + 'dot-notation': 2, + 'eqeqeq': 2, + 'guard-for-in': 2, + 'no-alert': 2, + 'no-caller': 2, + 'no-case-declarations': 2, + 'no-div-regex': 2, + 'no-else-return': 2, + 'no-empty-function': 2, + 'no-empty-pattern': 2, + 'no-eq-null': 2, + 'no-eval': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-label': 2, + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-implicit-coercion': [2, {'allow': ['!!', '+']}], + 'no-implicit-globals': 2, + 'no-implied-eval': 2, +// 'no-invalid-this': 2, + 'no-iterator': 2, + 'no-labels': 2, + 'no-lone-blocks': 2, + 'no-loop-func': 2, +// 'no-magic-numbers': [2, { +// 'ignore': [-1, 0, 1], +// 'ignoreArrayIndexes': true +// }], + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-native-reassign': 2, + 'no-new': 2, + 'no-new-func': 2, + 'no-new-wrappers': 2, + 'no-octal': 2, + 'no-octal-escape': 2, +// 'no-param-reassign': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-return-assign': 2, + 'no-script-url': 2, + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-throw-literal': 2, + 'no-unmodified-loop-condition': 2, + 'no-unused-expressions': 2, + 'no-unused-labels': 2, + 'no-useless-call': 2, + 'no-useless-concat': 2, + 'no-useless-escape': 2, + 'no-void': 2, + 'no-warning-comments': 2, + 'no-with': 2, + 'radix': 2, +// 'vars-on-top': 2, + 'wrap-iife': 2, + 'yoda': [2, 'always'], + + // strict mode + 'strict': 2, + + // variables + 'init-declarations': 2, + 'no-catch-shadow': 2, + 'no-delete-var': 2, + 'no-label-var': 2, + 'no-restricted-globals': 2, + 'no-shadow': 2, + 'no-shadow-restricted-names': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-undefined': 2, + 'no-unused-vars': 2, + 'no-use-before-define': 2, + + // node.js and commonjs + 'callback-return': 2, +// 'global-require': 2, + 'handle-callback-err': 2, +// 'no-mixed-requires': 2, + 'no-new-require': 2, + 'no-path-concat': 2, + 'no-process-env': 2, + 'no-process-exit': 2, + 'no-restricted-modules': 2, +// 'no-sync': 2, + + // stylistic issues + 'array-bracket-spacing': 2, + 'block-spacing': [2, 'never'], +// 'brace-style': [2, 'allman'], + 'camelcase': 2, + 'comma-dangle': [2, 'never'], + 'comma-spacing': 2, + 'comma-style': 2, + 'computed-property-spacing': 2, + 'consistent-this': [2, 'self'], + 'eol-last': 2, + 'func-names': [2, 'never'], +// 'func-style': 2, + 'id-blacklist': [2, 'x'], + 'id-length': [2, {'min': 1, 'max': 50}], + 'id-match': 2, + 'indent': [2, 'tab', { + 'SwitchCase': 1, + 'VariableDeclarator': { + 'var': 1, + 'let': 1, + 'const': 1 + } + }], + 'jsx-quotes': 2, + 'key-spacing': 2, + 'keyword-spacing': 2, + 'linebreak-style': [2, 'unix'], +// 'lines-around-comment': 2, + 'max-depth': [2, 10], + 'max-len': [2, 200], +// 'max-lines': 2, + 'max-nested-callbacks': [2, 5], +// 'max-params': 2, +// 'max-statements': [2, {'max': 10}, {'ignoreTopLevelFunctions': true}], + 'max-statements-per-line': 2, + 'new-cap': 2, + 'new-parens': 2, +// 'newline-after-var': 2, +// 'newline-before-return': 2, +// 'newline-per-chained-call': 2, + 'no-array-constructor': 2, + 'no-bitwise': 2, + 'no-continue': 2, +// 'no-inline-comments': 2, +// 'no-lonely-if': 2, +// 'no-mixed-operators': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multiple-empty-lines': [2, { + "max": 1, + "maxEOF": 1, + "maxBOF": 1 + }], +// 'no-negated-condition': 2, +// 'no-nested-ternary': 2, + 'no-new-object': 2, + 'no-plusplus': [2, { + 'allowForLoopAfterthoughts': true + }], + 'no-restricted-syntax': 2, + 'no-spaced-func': 2, + 'no-ternary': 0, + 'no-trailing-spaces': 2, // disallow trailing whitespace at the end of lines +// 'no-underscore-dangle': 2, // disallow dangling underscores in identifiers + 'no-unneeded-ternary': 2, // disallow ternary operators when simpler alternatives exist + 'no-whitespace-before-property': 2, +// 'object-curly-newline': 2, + 'object-curly-spacing': [2, 'never'], + 'object-property-newline': [2, {'allowMultiplePropertiesPerLine': true}], +// 'one-var': [2, { +// 'var': 'always', +// 'let': 'always', +// 'const': 'always' +// }], + 'one-var-declaration-per-line': [2, 'always'], + 'operator-assignment': 2, + 'operator-linebreak': [2, 'after'], +// 'padded-blocks': [2, 'never'], +// 'quote-props': [2, 'as-needed'], + 'quotes': [2, 'single'], + 'require-jsdoc': 2, + 'semi': [2, 'always'], + 'semi-spacing': 2, +// 'sort-vars': 2, + 'space-before-blocks': 2, + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': 2, + 'space-infix-ops': 2, + 'space-unary-ops': 2, + 'spaced-comment': 2, + 'unicode-bom': [2, 'never'], + 'wrap-regex': 2, + + // es6 + 'arrow-body-style': [2, 'as-needed'], + 'arrow-parens': 2, + 'arrow-spacing': 2, + 'constructor-super': 2, + 'generator-star-spacing': 2, + 'no-class-assign': 2, + 'no-confusing-arrow': [2, {'allowParens': true}], + 'no-const-assign': 2, + 'no-dupe-class-members': 2, + 'no-duplicate-imports': 2, + 'no-new-symbol': 2, + 'no-restricted-imports': 2, + 'no-this-before-super': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-rename': 2, +// 'no-var': 2, +// 'object-shorthand': 2, +// 'prefer-arrow-callback': 2, + 'prefer-const': 2, +// 'prefer-reflect': 2, + + 'prefer-rest-params': 2, + 'prefer-spread': 2, + +// 'prefer-template': 2, + 'require-yield': 2, + 'rest-spread-spacing': 2, + 'sort-imports': 0, // off + 'template-curly-spacing': 2, + 'yield-star-spacing': 2 + } +}; diff --git a/.tx/readme.txt b/.tx/readme.txt deleted file mode 100644 index 89fbd3414..000000000 --- a/.tx/readme.txt +++ /dev/null @@ -1 +0,0 @@ -tx pull -a \ No newline at end of file diff --git a/dev/Common/Booter.jsx b/dev/Common/Booter.jsx index dc66f2356..0c62170d3 100644 --- a/dev/Common/Booter.jsx +++ b/dev/Common/Booter.jsx @@ -17,6 +17,46 @@ window.__rlah_clear = () => clearHash(); window.__rlah_data = () => RL_APP_DATA_STORAGE; /* eslint-enable */ +const useJsNextBundle = (function() { + + if (!RL_ES6) + { + return false; + } + + /* eslint-disable */ + try { + + eval(` + // let + const +const x = 5; let y = 4; var z = 4; + + // Arrow Function +const f = () => 'rainloop'; + + // Default + Rest + Spread +const d = (test = 1, ...t) => 'rainloop'; +d(...[1, 2, 3]); + +// Destructuring +let [a, b] = [1, 2]; +({a, b} = {a: 1, b: 2}); + +// Class +class Q1 { constructor() {} } + +// Class extends + super +class Q2 extends Q1 { constructor() { super() } } + +`); + return true; + } + catch (e) {} + + return false; + /* eslint-enable */ +}()); + /** * @param {string} id * @param {string} name @@ -184,7 +224,7 @@ function runApp() const appData = window.__rlah_data(); if (window.jassl && progressJs && appData && appData.TemplatesLink && appData.LangLink && - appData.StaticLibJsLink && appData.StaticAppJsLink && appData.StaticEditorJsLink) + appData.StaticLibJsLink && appData.StaticAppJsLink && appData.StaticAppJsNextLink && appData.StaticEditorJsLink) { const p = progressJs; @@ -214,7 +254,7 @@ function runApp() Promise.all([libs, common]) .then(() => { p.set(30); - return window.jassl(appData.StaticAppJsLink); + return window.jassl(useJsNextBundle ? appData.StaticAppJsNextLink : appData.StaticAppJsLink); }) .then(() => { p.set(50); @@ -280,12 +320,17 @@ window.__runBoot = function() { window.document.location.replace('./?/NoCookie'); } + const root = document.documentElement; if ('none' !== getComputedStyle('rl-check', 'display')) { - const root = document.documentElement; root.className += ' no-css'; } + if (useJsNextBundle) + { + root.className += ' js-next'; + } + if (includeLayout()) { includeAppScr(getRainloopBootData()); diff --git a/dev/View/User/Login.js b/dev/View/User/Login.js index 9cf5f2baa..43009d0be 100644 --- a/dev/View/User/Login.js +++ b/dev/View/User/Login.js @@ -1,9 +1,9 @@ +import window from 'window'; +import _ from '_'; +import ko from 'ko'; + var - window = require('window'), - _ = require('_'), - ko = require('ko'), - Enums = require('Common/Enums'), Utils = require('Common/Utils'), Links = require('Common/Links'), diff --git a/gulpfile.js b/gulpfile.js index 8a60222b3..01495178f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -22,20 +22,17 @@ var zipFile: '', zipFileShort: '', - paths: {}, - uglify: { - mangle: true, - compress: true - } + paths: {} }, _ = require('lodash'), fs = require('node-fs'), path = require('path'), notifier = require('node-notifier'), + runSequence = require('run-sequence'), webpack = require('webpack'), - webpackCfg = require('./webpack.config.js'), + webpackCfgBuilder = require('./webpack.config.builder.js'), argv = require('yargs').argv, @@ -53,25 +50,68 @@ var livereload = require('gulp-livereload'), eslint = require('gulp-eslint'), cache = require('gulp-cached'), + ignore = require('gulp-ignore'), + filter = require('gulp-filter'), gutil = require('gulp-util') ; cfg.community = !argv.pro; +cfg.next = !!argv.next; // webpack -if (webpackCfg && webpackCfg.output) +function initWebpackCfg(wpCfg) { - webpackCfg.output.publicPath = cfg.paths.staticJS; + if (wpCfg) + { + if (wpCfg.output) + { + wpCfg.output.publicPath = cfg.paths.staticJS; + } + + if (wpCfg.plugins) + { + wpCfg.plugins.push(new webpack.DefinePlugin({ + 'RL_COMMUNITY': cfg.community, + 'RL_ES6': cfg.next, + 'process.env': { + NODE_ENV: '"production"' + } + })); + } + } + + return wpCfg; } -if (webpackCfg && webpackCfg.plugins) +function webpackCallback(callback) { - webpackCfg.plugins.push(new webpack.DefinePlugin({ - 'RL_COMMUNITY': !!cfg.community, - 'process.env': { - NODE_ENV: '"production"' + return function(err, stats) { + + if (err) + { + if (cfg.watch) + { + webpackError(err); + } + else + { + throw new gutil.PluginError('webpack', err); + } } - })); + else if (stats && stats.compilation && stats.compilation.errors && stats.compilation.errors[0]) + { + if (cfg.watch) + { + _.each(stats.compilation.errors, webpackError); + } + else + { + throw new gutil.PluginError('webpack', stats.compilation.errors[0]); + } + } + + callback(); + }; } function webpackError(err) { @@ -95,18 +135,6 @@ function getHead() return !cfg.community ? head.rainloop : head.agpl; } -function regOtherMinTask(sName, sPath, sInc, sOut, sHeader) -{ - gulp.task(sName, function() { - return gulp.src(sPath + sInc) - .pipe(uglify()) - .pipe(header(sHeader || '')) - .pipe(rename(sOut)) - .pipe(eol('\n', true)) - .pipe(gulp.dest(sPath)); - }); -} - function zipDir(sSrcDir, sDestDir, sFileName) { return gulp.src(sSrcDir + '**/*') @@ -170,7 +198,6 @@ cfg.paths.momentLocales = 'rainloop/v/' + cfg.devVersion + '/app/localization/mo cfg.paths.less = { main: { - name: 'less.css', src: 'dev/Styles/@Main.less', watch: ['dev/Styles/*.less'], options: { @@ -198,8 +225,7 @@ cfg.paths.css = { 'node_modules/lightgallery/dist/css/lightgallery.min.css', 'node_modules/lightgallery/dist/css/lg-transitions.min.css', 'node_modules/Progress.js/minified/progressjs.min.css', - 'dev/Styles/_progressjs.css', - cfg.paths.staticCSS + cfg.paths.less.main.name + 'dev/Styles/_progressjs.css' ] }, social: { @@ -278,48 +304,42 @@ cfg.paths.js = { }; // CSS -gulp.task('less:main', function() { - var less = require('gulp-less'); - return gulp.src(cfg.paths.less.main.src) +gulp.task('css:clean', function() { + return cleanDir(cfg.paths.staticCSS + '/*.css'); +}); + +gulp.task('css:main', function() { + var autoprefixer = require('gulp-autoprefixer'), + less = require('gulp-less'), + lessFilter = filter('**/*.less', {restore: true}), + src = cfg.paths.css.main.src.concat([cfg.paths.less.main.src]); + + return gulp.src(src) + .pipe(lessFilter) .pipe(gulpif(cfg.watch, plumber({errorHandler: notify.onError("Error: <%= error.message %>")}))) .pipe(less({ 'paths': cfg.paths.less.main.options.paths })) - .pipe(rename(cfg.paths.less.main.name)) - .pipe(eol('\n', true)) - .pipe(gulp.dest(cfg.paths.staticCSS)) - .on('error', gutil.log); -}); - -gulp.task('css:social', function() { - var autoprefixer = require('gulp-autoprefixer'); - return gulp.src(cfg.paths.css.social.src) - .pipe(concat(cfg.paths.css.social.name)) - .pipe(autoprefixer('last 3 versions', '> 1%', 'ie 9', 'Firefox ESR', 'Opera 12.1')) - .pipe(replace(/\.\.\/(img|images|fonts|svg)\//g, '$1/')) - .pipe(eol('\n', true)) - .pipe(gulp.dest(cfg.paths.staticCSS)); -}); - -gulp.task('css:main-begin', ['less:main', 'css:social'], function() { - var autoprefixer = require('gulp-autoprefixer'); - return gulp.src(cfg.paths.css.main.src) + .pipe(lessFilter.restore) .pipe(concat(cfg.paths.css.main.name)) - .pipe(autoprefixer('last 3 versions', '> 1%', 'ie 9', 'Firefox ESR', 'Opera 12.1')) + .pipe(autoprefixer('last 3 versions', '> 1%', 'ie 9', 'ie 10', 'ie 11', 'Firefox ESR')) .pipe(replace(/\.\.\/(img|images|fonts|svg)\//g, '$1/')) .pipe(eol('\n', true)) .pipe(gulp.dest(cfg.paths.staticCSS)) .pipe(livereload()); }); -gulp.task('css:clear-less', ['css:main-begin'], function() { - return gulp.src(cfg.paths.staticCSS + cfg.paths.less.main.name, {read: false}) - .pipe(require('gulp-rimraf')()); +gulp.task('css:social', function() { + var autoprefixer = require('gulp-autoprefixer'); + return gulp.src(cfg.paths.css.social.src) + .pipe(concat(cfg.paths.css.social.name)) + .pipe(autoprefixer('last 3 versions', '> 1%', 'ie 9', 'ie 10', 'ie 11', 'Firefox ESR')) + .pipe(replace(/\.\.\/(img|images|fonts|svg)\//g, '$1/')) + .pipe(eol('\n', true)) + .pipe(gulp.dest(cfg.paths.staticCSS)); }); -gulp.task('css:main', ['css:clear-less']); - gulp.task('css:main:min', ['css:main'], function() { var cleanCSS = require('gulp-clean-css'); return gulp.src(cfg.paths.staticCSS + cfg.paths.css.main.name) @@ -355,11 +375,11 @@ gulp.task('js:openpgpworker', function() { .pipe(gulp.dest(cfg.paths.staticMinJS)); }); -gulp.task('js:moment:locales-clear', function() { +gulp.task('moment:locales-clear', function() { return cleanDir('rainloop/v/' + cfg.devVersion + '/app/localization/moment/*.js'); }); -gulp.task('js:moment:locales', ['js:moment:locales-clear'], function() { +gulp.task('moment:locales', ['moment:locales-clear'], function() { return gulp.src(cfg.paths.js.moment.locales) .pipe(gulp.dest(cfg.paths.momentLocales)); }); @@ -383,36 +403,27 @@ gulp.task('js:ckeditor:beautify', function() { .pipe(gulp.dest(cfg.paths.static + 'ckeditor/')); }); -gulp.task('js:webpack', function(callback) { - webpack(webpackCfg, function(err, stats) { - - if (err) - { - if (cfg.watch) - { - webpackError(err); - } - else - { - throw new gutil.PluginError('webpack', err); - } - } - else if (stats && stats.compilation && stats.compilation.errors && stats.compilation.errors[0]) - { - if (cfg.watch) - { - _.each(stats.compilation.errors, webpackError); - } - else - { - throw new gutil.PluginError('webpack', stats.compilation.errors[0]); - } - } - - callback(); - }); +gulp.task('js:clean', function() { + return cleanDir(cfg.paths.staticJS + '/**/*.js'); }); +gulp.task('js:webpack:main', function(callback) { + webpack(initWebpackCfg(webpackCfgBuilder()), webpackCallback(callback)); +}); + +gulp.task('js:webpack:next', function(callback) { + if (cfg.next) + { + webpack(initWebpackCfg(webpackCfgBuilder(true)), webpackCallback(callback)); + } + else + { + callback(); + } +}); + +gulp.task('js:webpack', ['js:webpack:main', 'js:webpack:next']); + gulp.task('js:app', ['js:webpack'], function() { return gulp.src(cfg.paths.staticJS + cfg.paths.js.app.name) .pipe(header(getHead() + '\n')) @@ -432,8 +443,12 @@ gulp.task('js:admin', ['js:webpack'], function() { // - min gulp.task('js:min', ['js:app', 'js:admin', 'js:validate'], function() { return gulp.src(cfg.paths.staticJS + '*.js') + .pipe(ignore.exclude('*.next.js')) .pipe(replace(/"rainloop\/v\/([^\/]+)\/static\/js\/"/g, '"rainloop/v/$1/static/js/min/"')) - .pipe(uglify(cfg.uglify)) + .pipe(uglify({ + mangle: true, + compress: true + })) .pipe(eol('\n', true)) .pipe(gulp.dest(cfg.paths.staticMinJS)) .on('error', gutil.log); @@ -640,10 +655,20 @@ gulp.task('rainloop:owncloud:shortname', ['rainloop:owncloud:zip'], function(cal gulp.task('rainloop:owncloud:sign', ['rainloop:owncloud:shortname'], signFileTask); // MAIN -gulp.task('js:pgp', ['js:openpgp', 'js:openpgpworker']); -gulp.task('js:moment', ['js:moment:locales']); +gulp.task('moment', ['moment:locales']); +gulp.task('openpgp', ['js:openpgp', 'js:openpgpworker']); + +gulp.task('js', ['js:libs', 'js:min']); +gulp.task('css', ['css:min']); + +gulp.task('vendors', ['moment', 'openpgp', 'ckeditor', 'fontastic', 'lightgallery']); + +gulp.task('clean', ['js:clean', 'css:clean']); + +gulp.task('default', function(callback) { + runSequence('clean', ['js', 'css', 'vendors'], callback); +}); -gulp.task('default', ['js:libs', 'js:pgp', 'js:moment', 'js:min', 'css:min', 'ckeditor', 'fontastic', 'lightgallery']); gulp.task('fast', ['js:app', 'js:admin', 'css:main']); gulp.task('rainloop:start', ['rainloop:copy', 'rainloop:setup']); diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index e770b24e0..9051f777b 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -7,6 +7,23 @@ "from": "abbrev@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" }, + "accord": { + "version": "0.23.0", + "from": "accord@>=0.23.0 <0.24.0", + "resolved": "https://registry.npmjs.org/accord/-/accord-0.23.0.tgz", + "dependencies": { + "glob": { + "version": "7.0.3", + "from": "glob@7.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz" + }, + "lodash": { + "version": "4.11.2", + "from": "lodash@4.11.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.11.2.tgz" + } + } + }, "acorn": { "version": "3.3.0", "from": "acorn@>=3.3.0 <4.0.0", @@ -102,10 +119,10 @@ "from": "arrify@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" }, - "asn1": { - "version": "0.1.11", - "from": "asn1@0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + "asap": { + "version": "2.0.4", + "from": "asap@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.4.tgz" }, "asn1.js": { "version": "4.8.0", @@ -117,15 +134,10 @@ "from": "assert@>=1.1.1 <2.0.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz" }, - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + "version": "0.2.10", + "from": "async@>=0.2.6 <0.3.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, "async-each": { "version": "1.0.0", @@ -142,11 +154,6 @@ "from": "autoprefixer@>=6.0.0 <7.0.0", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.4.0.tgz" }, - "aws-sign2": { - "version": "0.5.0", - "from": "aws-sign2@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, "babel-code-frame": { "version": "6.11.0", "from": "babel-code-frame@>=6.8.0 <7.0.0", @@ -154,7 +161,7 @@ }, "babel-core": { "version": "6.13.2", - "from": "babel-core@6.13.2", + "from": "babel-core@>=6.13.2 <7.0.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.13.2.tgz", "dependencies": { "path-exists": { @@ -260,49 +267,49 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" }, "babel-plugin-syntax-class-constructor-call": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-class-constructor-call@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.13.0.tgz" }, "babel-plugin-syntax-class-properties": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-class-properties@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" }, "babel-plugin-syntax-decorators": { - "version": "6.8.0", - "from": "babel-plugin-syntax-decorators@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.8.0.tgz" + "version": "6.13.0", + "from": "babel-plugin-syntax-decorators@>=6.13.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz" }, "babel-plugin-syntax-do-expressions": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-do-expressions@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz" }, "babel-plugin-syntax-exponentiation-operator": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-exponentiation-operator@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" }, "babel-plugin-syntax-export-extensions": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-export-extensions@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz" }, "babel-plugin-syntax-function-bind": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-function-bind@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz" }, "babel-plugin-syntax-object-rest-spread": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-object-rest-spread@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" }, "babel-plugin-syntax-trailing-function-commas": { - "version": "6.8.0", + "version": "6.13.0", "from": "babel-plugin-syntax-trailing-function-commas@>=6.3.13 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz" }, "babel-plugin-transform-async-to-generator": { "version": "6.8.0", @@ -320,9 +327,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.11.5.tgz" }, "babel-plugin-transform-decorators": { - "version": "6.8.0", - "from": "babel-plugin-transform-decorators@>=6.3.13 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.8.0.tgz" + "version": "6.13.0", + "from": "babel-plugin-transform-decorators@>=6.13.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz" }, "babel-plugin-transform-do-expressions": { "version": "6.8.0", @@ -476,18 +483,13 @@ }, "babel-preset-es2015": { "version": "6.13.2", - "from": "babel-preset-es2015@6.13.2", + "from": "babel-preset-es2015@>=6.13.2 <7.0.0", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.13.2.tgz" }, - "babel-preset-es2015-loose": { - "version": "7.0.0", - "from": "babel-preset-es2015-loose@>=7.0.0 <8.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-es2015-loose/-/babel-preset-es2015-loose-7.0.0.tgz" - }, - "babel-preset-es2015-loose-native-modules": { - "version": "1.0.0", - "from": "babel-preset-es2015-loose-native-modules@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-es2015-loose-native-modules/-/babel-preset-es2015-loose-native-modules-1.0.0.tgz" + "babel-preset-es2016": { + "version": "6.11.3", + "from": "babel-preset-es2016@>=6.11.3 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-es2016/-/babel-preset-es2016-6.11.3.tgz" }, "babel-preset-stage-0": { "version": "6.5.0", @@ -495,14 +497,14 @@ "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.5.0.tgz" }, "babel-preset-stage-1": { - "version": "6.5.0", + "version": "6.13.0", "from": "babel-preset-stage-1@>=6.3.13 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.5.0.tgz" + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.13.0.tgz" }, "babel-preset-stage-2": { - "version": "6.11.0", - "from": "babel-preset-stage-2@>=6.3.13 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.11.0.tgz" + "version": "6.13.0", + "from": "babel-preset-stage-2@>=6.13.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.13.0.tgz" }, "babel-preset-stage-3": { "version": "6.11.0", @@ -613,11 +615,6 @@ "from": "bonzo@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/bonzo/-/bonzo-1.4.0.tgz" }, - "boom": { - "version": "0.4.2", - "from": "boom@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" - }, "brace-expansion": { "version": "1.1.6", "from": "brace-expansion@>=1.0.0 <2.0.0", @@ -669,9 +666,9 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.3.5.tgz" }, "buffer": { - "version": "4.7.1", + "version": "4.9.0", "from": "buffer@>=4.3.0 <5.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.7.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.0.tgz", "dependencies": { "isarray": { "version": "1.0.0", @@ -698,19 +695,7 @@ "bufferstreams": { "version": "1.0.1", "from": "bufferstreams@1.0.1", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.0.1.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "readable-stream@>=1.0.33 <2.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" - } - } + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.0.1.tgz" }, "builtin-modules": { "version": "1.1.1", @@ -733,26 +718,19 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" }, "camelcase": { - "version": "1.2.1", - "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "version": "2.1.1", + "from": "camelcase@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" }, "camelcase-keys": { "version": "2.1.0", "from": "camelcase-keys@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "from": "camelcase@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" }, "caniuse-db": { - "version": "1.0.30000517", + "version": "1.0.30000520", "from": "caniuse-db@>=1.0.30000515 <2.0.0", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000517.tgz" + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000520.tgz" }, "cardinal": { "version": "0.5.0", @@ -855,11 +833,6 @@ "from": "colors@1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" }, - "combined-stream": { - "version": "0.0.7", - "from": "combined-stream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz" - }, "commander": { "version": "2.8.1", "from": "commander@>=2.8.0 <2.9.0", @@ -942,21 +915,11 @@ "from": "create-hmac@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz" }, - "cryptiles": { - "version": "0.2.2", - "from": "cryptiles@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz" - }, "crypto-browserify": { "version": "3.11.0", "from": "crypto-browserify@>=3.11.0 <4.0.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz" }, - "ctype": { - "version": "0.5.3", - "from": "ctype@0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - }, "currently-unhandled": { "version": "0.4.1", "from": "currently-unhandled@>=0.4.1 <0.5.0", @@ -1002,11 +965,6 @@ "from": "del@>=2.0.2 <3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-2.2.1.tgz" }, - "delayed-stream": { - "version": "0.0.5", - "from": "delayed-stream@0.0.5", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - }, "depd": { "version": "1.1.0", "from": "depd@>=1.1.0 <1.2.0", @@ -1079,19 +1037,7 @@ "duplexer2": { "version": "0.0.2", "from": "duplexer2@0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "readable-stream@>=1.1.9 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" - } - } + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" }, "duplexify": { "version": "3.4.5", @@ -1147,7 +1093,7 @@ }, "errno": { "version": "0.1.4", - "from": "errno@>=0.1.3 <0.2.0", + "from": "errno@>=0.1.1 <0.2.0", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz" }, "error-ex": { @@ -1386,6 +1332,11 @@ "from": "flat-cache@>=1.2.1 <2.0.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.1.tgz" }, + "fobject": { + "version": "0.0.4", + "from": "fobject@0.0.4", + "resolved": "https://registry.npmjs.org/fobject/-/fobject-0.0.4.tgz" + }, "for-in": { "version": "0.1.5", "from": "for-in@>=0.1.5 <0.2.0", @@ -1396,21 +1347,11 @@ "from": "for-own@>=0.1.3 <0.2.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz" }, - "forever-agent": { - "version": "0.5.2", - "from": "forever-agent@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" - }, "fork-stream": { "version": "0.0.4", "from": "fork-stream@>=0.0.4 <0.0.5", "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz" }, - "form-data": { - "version": "0.1.4", - "from": "form-data@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz" - }, "from": { "version": "0.1.3", "from": "from@>=0.0.0 <1.0.0", @@ -1442,9 +1383,9 @@ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" }, "get-caller-file": { - "version": "1.0.1", + "version": "1.0.2", "from": "get-caller-file@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.1.tgz" + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz" }, "get-stdin": { "version": "4.0.1", @@ -1486,14 +1427,7 @@ "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" }, "through2": { "version": "0.6.5", @@ -1621,14 +1555,7 @@ "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.17 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" }, "through2": { "version": "0.5.1", @@ -1734,14 +1661,7 @@ "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.17 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" }, "strip-ansi": { "version": "0.3.0", @@ -1799,59 +1719,30 @@ } } }, + "gulp-filter": { + "version": "4.0.0", + "from": "gulp-filter@*", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-4.0.0.tgz" + }, "gulp-header": { - "version": "1.8.7", - "from": "gulp-header@>=1.8.7 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.7.tgz" + "version": "1.8.8", + "from": "gulp-header@>=1.8.8 <2.0.0", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.8.tgz" }, "gulp-if": { "version": "2.0.1", "from": "gulp-if@>=2.0.1 <3.0.0", "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.1.tgz" }, + "gulp-ignore": { + "version": "2.0.1", + "from": "gulp-ignore@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/gulp-ignore/-/gulp-ignore-2.0.1.tgz" + }, "gulp-less": { - "version": "1.3.6", - "from": "gulp-less@1.3.6", - "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-1.3.6.tgz", - "dependencies": { - "convert-source-map": { - "version": "0.4.1", - "from": "convert-source-map@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.4.1.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.17 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } - }, - "source-map": { - "version": "0.1.43", - "from": "source-map@>=0.1.39 <0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" - }, - "through2": { - "version": "0.5.1", - "from": "through2@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz" - }, - "vinyl-sourcemaps-apply": { - "version": "0.1.4", - "from": "vinyl-sourcemaps-apply@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz" - }, - "xtend": { - "version": "3.0.0", - "from": "xtend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz" - } - } + "version": "3.1.0", + "from": "gulp-less@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.1.0.tgz" }, "gulp-livereload": { "version": "3.8.1", @@ -1903,14 +1794,7 @@ "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" }, "through2": { "version": "0.6.5", @@ -1959,14 +1843,7 @@ "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.17 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" }, "strip-bom": { "version": "1.0.0", @@ -1992,7 +1869,7 @@ }, "gulp-uglify": { "version": "2.0.0", - "from": "gulp-uglify@2.0.0", + "from": "gulp-uglify@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-2.0.0.tgz" }, "gulp-util": { @@ -2037,16 +1914,6 @@ "from": "hash.js@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" }, - "hawk": { - "version": "1.1.1", - "from": "hawk@1.1.1", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz" - }, - "hoek": { - "version": "0.9.1", - "from": "hoek@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" - }, "home-or-tmp": { "version": "1.0.0", "from": "home-or-tmp@>=1.0.0 <2.0.0", @@ -2067,11 +1934,6 @@ "from": "http-errors@>=1.3.1 <1.4.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz" }, - "http-signature": { - "version": "0.10.1", - "from": "http-signature@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz" - }, "https-browserify": { "version": "0.0.1", "from": "https-browserify@0.0.1", @@ -2097,6 +1959,11 @@ "from": "ignore@>=3.1.2 <4.0.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.1.3.tgz" }, + "image-size": { + "version": "0.5.0", + "from": "image-size@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.0.tgz" + }, "imurmurhash": { "version": "0.1.4", "from": "imurmurhash@>=0.1.4 <0.2.0", @@ -2112,6 +1979,11 @@ "from": "indexof@0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" }, + "indx": { + "version": "0.2.3", + "from": "indx@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz" + }, "inflight": { "version": "1.0.5", "from": "inflight@>=1.0.4 <2.0.0", @@ -2290,9 +2162,9 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz" }, "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "isexe": { "version": "1.1.2", @@ -2302,7 +2174,14 @@ "isobject": { "version": "2.1.0", "from": "isobject@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + } + } }, "istextorbinary": { "version": "1.0.2", @@ -2384,11 +2263,6 @@ "from": "json-stable-stringify@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.0 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, "json3": { "version": "3.3.2", "from": "json3@>=3.3.2 <4.0.0", @@ -2447,31 +2321,9 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" }, "less": { - "version": "1.7.5", - "from": "less@>=1.7.4 <2.0.0", - "resolved": "https://registry.npmjs.org/less/-/less-1.7.5.tgz", - "dependencies": { - "clean-css": { - "version": "2.2.23", - "from": "clean-css@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.2.23.tgz" - }, - "commander": { - "version": "2.2.0", - "from": "commander@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz" - }, - "graceful-fs": { - "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <3.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "source-map": { - "version": "0.1.43", - "from": "source-map@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" - } - } + "version": "2.7.1", + "from": "less@>=2.6.0 <3.0.0", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.1.tgz" }, "levn": { "version": "0.3.0", @@ -2873,9 +2725,9 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz" }, "mime": { - "version": "1.2.11", - "from": "mime@>=1.2.11 <1.3.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" + "version": "1.3.4", + "from": "mime@>=1.2.11 <2.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" }, "mime-db": { "version": "1.23.0", @@ -2883,21 +2735,14 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" }, "mime-types": { - "version": "1.0.2", - "from": "mime-types@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz" + "version": "2.1.11", + "from": "mime-types@>=2.1.11 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" }, "mini-lr": { "version": "0.1.9", "from": "mini-lr@>=0.1.8 <0.2.0", - "resolved": "https://registry.npmjs.org/mini-lr/-/mini-lr-0.1.9.tgz", - "dependencies": { - "qs": { - "version": "2.2.5", - "from": "qs@>=2.2.3 <2.3.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.5.tgz" - } - } + "resolved": "https://registry.npmjs.org/mini-lr/-/mini-lr-0.1.9.tgz" }, "minimalistic-assert": { "version": "1.0.0", @@ -2926,11 +2771,6 @@ } } }, - "modify-babel-preset": { - "version": "1.2.0", - "from": "modify-babel-preset@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/modify-babel-preset/-/modify-babel-preset-1.2.0.tgz" - }, "moment": { "version": "2.14.1", "from": "moment@>=2.14.1 <3.0.0", @@ -2941,6 +2781,11 @@ "from": "ms@0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" }, + "multimatch": { + "version": "2.1.0", + "from": "multimatch@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz" + }, "multipipe": { "version": "0.1.2", "from": "multipipe@>=0.1.2 <0.2.0", @@ -3000,11 +2845,6 @@ } } }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@>=1.4.0 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, "node.extend": { "version": "1.1.5", "from": "node.extend@>=1.1.3 <2.0.0", @@ -3045,11 +2885,6 @@ "from": "number-is-nan@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" }, - "oauth-sign": { - "version": "0.3.0", - "from": "oauth-sign@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz" - }, "object-assign": { "version": "4.1.0", "from": "object-assign@*", @@ -3231,9 +3066,9 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz" }, "postcss": { - "version": "5.1.1", + "version": "5.1.2", "from": "postcss@>=5.0.4 <6.0.0", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.1.2.tgz", "dependencies": { "supports-color": { "version": "3.1.2", @@ -3268,9 +3103,9 @@ "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" }, "process": { - "version": "0.11.7", + "version": "0.11.8", "from": "process@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.7.tgz" + "resolved": "https://registry.npmjs.org/process/-/process-0.11.8.tgz" }, "process-nextick-args": { "version": "1.0.7", @@ -3287,6 +3122,11 @@ "from": "usablica/progress.js", "resolved": "git://github.com/usablica/progress.js.git#9727db6e3ce1c60d388729fccaebd6c7ac4e7da6" }, + "promise": { + "version": "7.1.1", + "from": "promise@>=7.1.1 <8.0.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz" + }, "proto-list": { "version": "1.2.4", "from": "proto-list@>=1.2.1 <1.3.0", @@ -3308,9 +3148,9 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" }, "qs": { - "version": "1.0.2", - "from": "qs@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz" + "version": "2.2.5", + "from": "qs@>=2.2.3 <2.3.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.5.tgz" }, "querystring": { "version": "0.2.0", @@ -3382,9 +3222,9 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" }, "readable-stream": { - "version": "2.0.6", - "from": "readable-stream@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" + "version": "1.1.14", + "from": "readable-stream@>=1.1.9 <1.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" }, "readdirp": { "version": "2.1.0", @@ -3502,11 +3342,6 @@ } } }, - "request": { - "version": "2.40.0", - "from": "request@>=2.40.0 <2.41.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz" - }, "require-directory": { "version": "2.1.1", "from": "require-directory@>=2.1.1 <3.0.0", @@ -3517,11 +3352,6 @@ "from": "require-main-filename@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" }, - "require-relative": { - "version": "0.8.7", - "from": "require-relative@>=0.8.7 <0.9.0", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz" - }, "require-uncached": { "version": "1.0.2", "from": "require-uncached@>=1.0.2 <2.0.0", @@ -3584,6 +3414,11 @@ "from": "run-async@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz" }, + "run-sequence": { + "version": "1.2.2", + "from": "run-sequence@*", + "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz" + }, "rx-lite": { "version": "3.1.2", "from": "rx-lite@>=3.1.2 <4.0.0", @@ -3620,9 +3455,9 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" }, "shelljs": { - "version": "0.6.0", + "version": "0.6.1", "from": "shelljs@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.0.tgz" + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz" }, "shellwords": { "version": "0.1.0", @@ -3654,11 +3489,6 @@ "from": "slice-ansi@0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" }, - "sntp": { - "version": "0.2.4", - "from": "sntp@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" - }, "source-list-map": { "version": "0.1.6", "from": "source-list-map@>=0.1.0 <0.2.0", @@ -3775,6 +3605,23 @@ "from": "stream-shift@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz" }, + "streamfilter": { + "version": "1.0.5", + "from": "streamfilter@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.5.tgz", + "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "readable-stream": { + "version": "2.1.4", + "from": "readable-stream@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz" + } + } + }, "string_decoder": { "version": "0.10.31", "from": "string_decoder@>=0.10.0 <0.11.0", @@ -3785,11 +3632,6 @@ "from": "string-width@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz" }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, "strip-ansi": { "version": "3.0.1", "from": "strip-ansi@>=3.0.0 <4.0.0", @@ -3848,7 +3690,19 @@ "through2": { "version": "2.0.1", "from": "through2@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz" + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", + "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "readable-stream": { + "version": "2.0.6", + "from": "readable-stream@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" + } + } }, "tildify": { "version": "1.2.0", @@ -3875,11 +3729,6 @@ "from": "to-fast-properties@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz" }, - "tough-cookie": { - "version": "2.3.1", - "from": "tough-cookie@>=0.12.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" - }, "trim-newlines": { "version": "1.0.0", "from": "trim-newlines@>=1.0.0 <2.0.0", @@ -3895,11 +3744,6 @@ "from": "tty-browserify@0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, "tv4": { "version": "1.2.7", "from": "tv4@>=1.2.7 <2.0.0", @@ -3913,14 +3757,7 @@ "type-is": { "version": "1.6.13", "from": "type-is@>=1.6.10 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "mime-types": { - "version": "2.1.11", - "from": "mime-types@>=2.1.11 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" - } - } + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz" }, "typedarray": { "version": "0.0.6", @@ -3929,15 +3766,8 @@ }, "uglify-js": { "version": "2.7.0", - "from": "uglify-js@2.7.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.0.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - } - } + "from": "uglify-js@>=2.6.0 <3.0.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.0.tgz" }, "uglify-save-license": { "version": "0.4.1", @@ -4034,14 +3864,7 @@ "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" }, "strip-bom": { "version": "1.0.0", @@ -4092,10 +3915,10 @@ "from": "async@>=1.3.0 <2.0.0", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" }, - "cliui": { - "version": "3.2.0", - "from": "cliui@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" }, "lodash.assign": { "version": "4.1.0", @@ -4116,33 +3939,28 @@ "version": "0.2.10", "from": "async@>=0.2.6 <0.3.0" }, - "cliui": { - "version": "2.1.0", - "from": "cliui@>=2.1.0 <3.0.0" - }, - "window-size": { - "version": "0.1.0", - "from": "window-size@0.1.0" - }, "yargs": { "version": "3.10.0", "from": "yargs@>=3.10.0 <3.11.0" } } }, - "window-size": { - "version": "0.2.0", - "from": "window-size@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@0.0.2" - }, "yargs": { "version": "4.8.1", "from": "yargs@>=4.7.1 <5.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "dependencies": { + "cliui": { + "version": "3.2.0", + "from": "cliui@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" + }, + "window-size": { + "version": "0.2.0", + "from": "window-size@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" + } + } } } }, @@ -4161,6 +3979,11 @@ "from": "websocket-extensions@>=0.1.1", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz" }, + "when": { + "version": "3.7.7", + "from": "when@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz" + }, "which": { "version": "1.2.10", "from": "which@>=1.2.10 <2.0.0", @@ -4214,7 +4037,14 @@ "yargs": { "version": "3.10.0", "from": "yargs@>=3.10.0 <3.11.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + } + } }, "yargs-parser": { "version": "2.4.1", diff --git a/package.json b/package.json index e0d7db032..738ea9eac 100644 --- a/package.json +++ b/package.json @@ -53,8 +53,7 @@ "babel-loader": "^6.1.0", "babel-plugin-transform-runtime": "^6.9.0", "babel-preset-es2015": "^6.13.2", - "babel-preset-es2015-loose": "^7.0.0", - "babel-preset-es2015-loose-native-modules": "^1.0.0", + "babel-preset-es2016": "^6.11.3", "babel-preset-stage-0": "^6.5.0", "babel-runtime": "^6.1.18", "es6-promise-polyfill": "^1.2.0", @@ -66,9 +65,11 @@ "gulp-concat-util": "^0.5.5", "gulp-eol": "^0.1.2", "gulp-eslint": "^3.0.1", - "gulp-header": "^1.8.7", + "gulp-filter": "^4.0.0", + "gulp-header": "^1.8.8", "gulp-if": "^2.0.1", - "gulp-less": "1.3.6", + "gulp-ignore": "^2.0.1", + "gulp-less": "^3.1.0", "gulp-livereload": "~3.8.0", "gulp-notify": "~2.2.0", "gulp-plumber": "^1.1.0", @@ -105,6 +106,7 @@ "raw-loader": "^0.5.1", "rifraf": "^2.0.2", "rimraf": "^2.5.4", + "run-sequence": "^1.2.2", "simplestatemanager": "^3.1.3", "tinycon": "github:tommoor/tinycon", "underscore": "^1.8.3", diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php index 1980fba18..5905497e4 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -1947,6 +1947,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack $aResult['StaticLibJsLink'] = $this->StaticPath('js/'.($bAppJsDebug ? '' : 'min/').'libs.js'); $aResult['StaticAppJsLink'] = $this->StaticPath('js/'.($bAppJsDebug ? '' : 'min/').($bAdmin ? 'admin' : 'app').'.js'); + $aResult['StaticAppJsNextLink'] = $this->StaticPath('js/'.($bAdmin ? 'admin' : 'app').'.next.js'); // todo min $aResult['StaticEditorJsLink'] = $this->StaticPath('ckeditor/ckeditor.js'); $aResult['EditorDefaultType'] = \in_array($aResult['EditorDefaultType'], array('Plain', 'Html', 'HtmlForced', 'PlainForced')) ? diff --git a/vendors/bootstrap/.code-changed b/vendors/bootstrap/.code-changed new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/vendors/bootstrap/.code-changed @@ -0,0 +1 @@ + diff --git a/vendors/bootstrap/less/navbar.less b/vendors/bootstrap/less/navbar.less index 70501e459..ffe1fafc0 100644 --- a/vendors/bootstrap/less/navbar.less +++ b/vendors/bootstrap/less/navbar.less @@ -1,469 +1,470 @@ -// -// Navbars (Redux) -// -------------------------------------------------- - - -// COMMON STYLES -// ------------- - -// Base class and wrapper -.navbar { - overflow: visible; - margin-bottom: @baseLineHeight; - color: @navbarText; - - // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar - *position: relative; - *z-index: 2; -} - -// Inner for background effects -// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present -.navbar-inner { - min-height: @navbarHeight; - padding-left: 20px; - padding-right: 20px; - #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground); - border: 1px solid @navbarBorder; - .border-radius(4px); - .box-shadow(0 1px 4px rgba(0,0,0,.065)); -} - -// Set width to auto for default container -// We then reset it for fixed navbars in the #gridSystem mixin -.navbar .container { - width: auto; -} - -// Override the default collapsed state -.nav-collapse.collapse { - height: auto; -} - - -// Brand: website or project name -// ------------------------- -.navbar .brand { - float: left; - display: block; - // Vertically center the text given @navbarHeight - padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2); - margin-left: -20px; // negative indent to left-align the text down the page - font-size: 20px; - font-weight: 200; - color: @navbarBrandColor; - text-shadow: 0 1px 0 @navbarBackgroundHighlight; - &:hover { - text-decoration: none; - } -} - -// Plain text in topbar -// ------------------------- -.navbar-text { - margin-bottom: 0; - line-height: @navbarHeight; -} - -// Janky solution for now to account for links outside the .nav -// ------------------------- -.navbar-link { - color: @navbarLinkColor; - &:hover { - color: @navbarLinkColorHover; - } -} - -// Dividers in navbar -// ------------------------- -.navbar .divider-vertical { - height: @navbarHeight; - margin: 0 9px; - border-left: 1px solid @navbarBackground; - border-right: 1px solid @navbarBackgroundHighlight; -} - -// Buttons in navbar -// ------------------------- -.navbar .btn, -.navbar .btn-group { - .navbarVerticalAlign(28px); // Vertically center in navbar -} -.navbar .btn-group .btn { - margin: 0; // then undo the margin here so we don't accidentally double it -} - -// Navbar forms -.navbar-form { - margin-bottom: 0; // remove default bottom margin - .clearfix(); - input, - select, - .radio, - .checkbox { - .navbarVerticalAlign(30px); // Vertically center in navbar - } - input, - select, - .btn { - display: inline-block; - margin-bottom: 0; - } - input[type="image"], - input[type="checkbox"], - input[type="radio"] { - margin-top: 3px; - } - .input-append, - .input-prepend { - margin-top: 6px; - white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left - input { - margin-top: 0; // remove the margin on top since it's on the parent - } - } -} - -// Navbar search -.navbar-search { - position: relative; - float: left; - .navbarVerticalAlign(30px); // Vertically center in navbar - margin-bottom: 0; - .search-query { - margin-bottom: 0; - padding: 4px 14px; - #font > .sans-serif(13px, normal, 1); - .border-radius(15px); // redeclare because of specificity of the type attribute - } -} - - - -// Static navbar -// ------------------------- - -.navbar-static-top { - position: static; - width: 100%; - margin-bottom: 0; // remove 18px margin for default navbar - .navbar-inner { - .border-radius(0); - } -} - - - -// Fixed navbar -// ------------------------- - -// Shared (top/bottom) styles -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: @zindexFixedNavbar; - margin-bottom: 0; // remove 18px margin for default navbar -} -.navbar-fixed-top, -.navbar-fixed-bottom, -.navbar-static-top { - .navbar-inner { - border: 0; - } -} -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-left: 0; - padding-right: 0; - .border-radius(0); -} - -// Reset container width -// Required here as we reset the width earlier on and the grid mixins don't override early enough -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - #grid > .core > .span(@gridColumns); -} - -// Fixed to top -.navbar-fixed-top { - top: 0; -} -.navbar-fixed-top, -.navbar-static-top { - .navbar-inner { - .box-shadow(~"inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)"); - } -} - -// Fixed to bottom -.navbar-fixed-bottom { - bottom: 0; - .navbar-inner { - .box-shadow(~"inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1)"); - } -} - - - -// NAVIGATION -// ---------- - -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} -.navbar .nav.pull-right { - float: right; // redeclare due to specificity -} -.navbar .nav > li { - float: left; -} - -// Links -.navbar .nav > li > a { - float: none; - // Vertically center the text given @navbarHeight - padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2); - color: @navbarLinkColor; - text-decoration: none; - text-shadow: 0 1px 0 @navbarBackgroundHighlight; -} -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} - -// Hover -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active - color: @navbarLinkColorHover; - text-decoration: none; -} - -// Active nav items -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: @navbarLinkColorActive; - text-decoration: none; - background-color: @navbarLinkBackgroundActive; - -webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,.125); - -moz-box-shadow: inset 0 3px 8px rgba(0,0,0,.125); - box-shadow: inset 0 3px 8px rgba(0,0,0,.125); -} - -// Navbar button for toggling navbar items in responsive layouts -// These definitions need to come after '.navbar .btn' -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%)); - .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)"); -} -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - .border-radius(1px); - .box-shadow(0 1px 0 rgba(0,0,0,.25)); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} - - - -// Dropdown menus -// -------------- - -// Menu position and menu carets -.navbar .nav > li > .dropdown-menu { - &:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: @dropdownBorder; - position: absolute; - top: -7px; - left: 9px; - } - &:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid @dropdownBackground; - position: absolute; - top: -6px; - left: 10px; - } -} -// Menu position and menu caret support for dropups via extra dropup class -.navbar-fixed-bottom .nav > li > .dropdown-menu { - &:before { - border-top: 7px solid #ccc; - border-top-color: @dropdownBorder; - border-bottom: 0; - bottom: -7px; - top: auto; - } - &:after { - border-top: 6px solid @dropdownBackground; - border-bottom: 0; - bottom: -6px; - top: auto; - } -} - -// Remove background color from open dropdown -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: @navbarLinkBackgroundActive; - color: @navbarLinkColorActive; -} -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: @navbarLinkColor; - border-bottom-color: @navbarLinkColor; -} -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: @navbarLinkColorActive; - border-bottom-color: @navbarLinkColorActive; -} - -// Right aligned menus need alt position -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; - &:before { - left: auto; - right: 12px; - } - &:after { - left: auto; - right: 13px; - } - .dropdown-menu { - left: auto; - right: 100%; - margin-left: 0; - margin-right: -1px; - .border-radius(6px 0 6px 6px); - } -} - - -// Inverted navbar -// ------------------------- - -.navbar-inverse { - color: @navbarInverseText; - - .navbar-inner { - #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground); - border-color: @navbarInverseBorder; - } - - .brand, - .nav > li > a { - color: @navbarInverseLinkColor; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - &:hover { - color: @navbarInverseLinkColorHover; - } - } - - .nav > li > a:focus, - .nav > li > a:hover { - background-color: @navbarInverseLinkBackgroundHover; - color: @navbarInverseLinkColorHover; - } - - .nav .active > a, - .nav .active > a:hover, - .nav .active > a:focus { - color: @navbarInverseLinkColorActive; - background-color: @navbarInverseLinkBackgroundActive; - } - - // Inline text links - .navbar-link { - color: @navbarInverseLinkColor; - &:hover { - color: @navbarInverseLinkColorHover; - } - } - - // Dividers in navbar - .divider-vertical { - border-left-color: @navbarInverseBackground; - border-right-color: @navbarInverseBackgroundHighlight; - } - - // Dropdowns - .nav li.dropdown.open > .dropdown-toggle, - .nav li.dropdown.active > .dropdown-toggle, - .nav li.dropdown.open.active > .dropdown-toggle { - background-color: @navbarInverseLinkBackgroundActive; - color: @navbarInverseLinkColorActive; - } - .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: @navbarInverseLinkColor; - border-bottom-color: @navbarInverseLinkColor; - } - .nav li.dropdown.open > .dropdown-toggle .caret, - .nav li.dropdown.active > .dropdown-toggle .caret, - .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: @navbarInverseLinkColorActive; - border-bottom-color: @navbarInverseLinkColorActive; - } - - // Navbar search - .navbar-search { - .search-query { - color: @white; - background-color: @navbarInverseSearchBackground; - border-color: @navbarInverseSearchBorder; - .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)"); - .transition(none); - .placeholder(@navbarInverseSearchPlaceholderColor); - - // Focus states (we use .focused since IE7-8 and down doesn't support :focus) - &:focus, - &.focused { - padding: 5px 15px; - color: @grayDark; - text-shadow: 0 1px 0 @white; - background-color: @navbarInverseSearchBackgroundFocus; - border: 0; - .box-shadow(0 0 3px rgba(0,0,0,.15)); - outline: 0; - } - } - } - - // Navbar collapse button - .btn-navbar { - .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%)); - } - -} - - - +// +// Navbars (Redux) +// -------------------------------------------------- + + +// COMMON STYLES +// ------------- + +// Base class and wrapper +.navbar { + overflow: visible; + margin-bottom: @baseLineHeight; + color: @navbarText; + + // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar + *position: relative; + *z-index: 2; +} + +// Inner for background effects +// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present +.navbar-inner { + min-height: @navbarHeight; + padding-left: 20px; + padding-right: 20px; + #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground); + border: 1px solid @navbarBorder; + .border-radius(4px); + .box-shadow(0 1px 4px rgba(0,0,0,.065)); +} + +// Set width to auto for default container +// We then reset it for fixed navbars in the #gridSystem mixin +.navbar .container { + width: auto; +} + +// Override the default collapsed state +.nav-collapse.collapse { + height: auto; +} + + +// Brand: website or project name +// ------------------------- +.navbar .brand { + float: left; + display: block; + // Vertically center the text given @navbarHeight + padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2); + margin-left: -20px; // negative indent to left-align the text down the page + font-size: 20px; + font-weight: 200; + color: @navbarBrandColor; + text-shadow: 0 1px 0 @navbarBackgroundHighlight; + &:hover { + text-decoration: none; + } +} + +// Plain text in topbar +// ------------------------- +.navbar-text { + margin-bottom: 0; + line-height: @navbarHeight; +} + +// Janky solution for now to account for links outside the .nav +// ------------------------- +.navbar-link { + color: @navbarLinkColor; + &:hover { + color: @navbarLinkColorHover; + } +} + +// Dividers in navbar +// ------------------------- +.navbar .divider-vertical { + height: @navbarHeight; + margin: 0 9px; + border-left: 1px solid @navbarBackground; + border-right: 1px solid @navbarBackgroundHighlight; +} + +// Buttons in navbar +// ------------------------- +.navbar .btn, +.navbar .btn-group { + .navbarVerticalAlign(28px); // Vertically center in navbar +} +.navbar .btn-group .btn { + margin: 0; // then undo the margin here so we don't accidentally double it +} + +// Navbar forms +.navbar-form { + margin-bottom: 0; // remove default bottom margin + .clearfix(); + input, + select, + .radio, + .checkbox { + .navbarVerticalAlign(30px); // Vertically center in navbar + } + input, + select, + .btn { + display: inline-block; + margin-bottom: 0; + } + input[type="image"], + input[type="checkbox"], + input[type="radio"] { + margin-top: 3px; + } + .input-append, + .input-prepend { + margin-top: 6px; + white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left + input { + margin-top: 0; // remove the margin on top since it's on the parent + } + } +} + +// Navbar search +.navbar-search { + position: relative; + float: left; + .navbarVerticalAlign(30px); // Vertically center in navbar + margin-bottom: 0; + .search-query { + margin-bottom: 0; + padding: 4px 14px; + #font > .sans-serif(13px, normal, 1); + .border-radius(15px); // redeclare because of specificity of the type attribute + } +} + + + +// Static navbar +// ------------------------- + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; // remove 18px margin for default navbar + .navbar-inner { + .border-radius(0); + } +} + + + +// Fixed navbar +// ------------------------- + +// Shared (top/bottom) styles +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: @zindexFixedNavbar; + margin-bottom: 0; // remove 18px margin for default navbar +} +.navbar-fixed-top, +.navbar-fixed-bottom, +.navbar-static-top { + .navbar-inner { + border: 0; + } +} +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + .border-radius(0); +} + +// Reset container width +// Required here as we reset the width earlier on and the grid mixins don't override early enough +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + // #grid > .core > .span(@gridColumns); // (less 1.3.6 > 3.1.0) + width: (@gridColumnWidth * @gridColumns) + (@gridGutterWidth * (@gridColumns - 1)); +} + +// Fixed to top +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-top, +.navbar-static-top { + .navbar-inner { + .box-shadow(~"inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)"); + } +} + +// Fixed to bottom +.navbar-fixed-bottom { + bottom: 0; + .navbar-inner { + .box-shadow(~"inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1)"); + } +} + + + +// NAVIGATION +// ---------- + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; // redeclare due to specificity +} +.navbar .nav > li { + float: left; +} + +// Links +.navbar .nav > li > a { + float: none; + // Vertically center the text given @navbarHeight + padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2); + color: @navbarLinkColor; + text-decoration: none; + text-shadow: 0 1px 0 @navbarBackgroundHighlight; +} +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +// Hover +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active + color: @navbarLinkColorHover; + text-decoration: none; +} + +// Active nav items +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: @navbarLinkColorActive; + text-decoration: none; + background-color: @navbarLinkBackgroundActive; + -webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,.125); + -moz-box-shadow: inset 0 3px 8px rgba(0,0,0,.125); + box-shadow: inset 0 3px 8px rgba(0,0,0,.125); +} + +// Navbar button for toggling navbar items in responsive layouts +// These definitions need to come after '.navbar .btn' +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%)); + .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)"); +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + .border-radius(1px); + .box-shadow(0 1px 0 rgba(0,0,0,.25)); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + + + +// Dropdown menus +// -------------- + +// Menu position and menu carets +.navbar .nav > li > .dropdown-menu { + &:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: @dropdownBorder; + position: absolute; + top: -7px; + left: 9px; + } + &:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid @dropdownBackground; + position: absolute; + top: -6px; + left: 10px; + } +} +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .nav > li > .dropdown-menu { + &:before { + border-top: 7px solid #ccc; + border-top-color: @dropdownBorder; + border-bottom: 0; + bottom: -7px; + top: auto; + } + &:after { + border-top: 6px solid @dropdownBackground; + border-bottom: 0; + bottom: -6px; + top: auto; + } +} + +// Remove background color from open dropdown +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: @navbarLinkBackgroundActive; + color: @navbarLinkColorActive; +} +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: @navbarLinkColor; + border-bottom-color: @navbarLinkColor; +} +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: @navbarLinkColorActive; + border-bottom-color: @navbarLinkColorActive; +} + +// Right aligned menus need alt position +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; + &:before { + left: auto; + right: 12px; + } + &:after { + left: auto; + right: 13px; + } + .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + .border-radius(6px 0 6px 6px); + } +} + + +// Inverted navbar +// ------------------------- + +.navbar-inverse { + color: @navbarInverseText; + + .navbar-inner { + #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground); + border-color: @navbarInverseBorder; + } + + .brand, + .nav > li > a { + color: @navbarInverseLinkColor; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + &:hover { + color: @navbarInverseLinkColorHover; + } + } + + .nav > li > a:focus, + .nav > li > a:hover { + background-color: @navbarInverseLinkBackgroundHover; + color: @navbarInverseLinkColorHover; + } + + .nav .active > a, + .nav .active > a:hover, + .nav .active > a:focus { + color: @navbarInverseLinkColorActive; + background-color: @navbarInverseLinkBackgroundActive; + } + + // Inline text links + .navbar-link { + color: @navbarInverseLinkColor; + &:hover { + color: @navbarInverseLinkColorHover; + } + } + + // Dividers in navbar + .divider-vertical { + border-left-color: @navbarInverseBackground; + border-right-color: @navbarInverseBackgroundHighlight; + } + + // Dropdowns + .nav li.dropdown.open > .dropdown-toggle, + .nav li.dropdown.active > .dropdown-toggle, + .nav li.dropdown.open.active > .dropdown-toggle { + background-color: @navbarInverseLinkBackgroundActive; + color: @navbarInverseLinkColorActive; + } + .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: @navbarInverseLinkColor; + border-bottom-color: @navbarInverseLinkColor; + } + .nav li.dropdown.open > .dropdown-toggle .caret, + .nav li.dropdown.active > .dropdown-toggle .caret, + .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: @navbarInverseLinkColorActive; + border-bottom-color: @navbarInverseLinkColorActive; + } + + // Navbar search + .navbar-search { + .search-query { + color: @white; + background-color: @navbarInverseSearchBackground; + border-color: @navbarInverseSearchBorder; + .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)"); + .transition(none); + .placeholder(@navbarInverseSearchPlaceholderColor); + + // Focus states (we use .focused since IE7-8 and down doesn't support :focus) + &:focus, + &.focused { + padding: 5px 15px; + color: @grayDark; + text-shadow: 0 1px 0 @white; + background-color: @navbarInverseSearchBackgroundFocus; + border: 0; + .box-shadow(0 0 3px rgba(0,0,0,.15)); + outline: 0; + } + } + } + + // Navbar collapse button + .btn-navbar { + .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%)); + } + +} + + + diff --git a/vendors/inputosaurus/.code-changed b/vendors/inputosaurus/.code-changed new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/vendors/inputosaurus/.code-changed @@ -0,0 +1 @@ + diff --git a/vendors/jquery-nanoscroller/.code-changed b/vendors/jquery-nanoscroller/.code-changed new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/vendors/jquery-nanoscroller/.code-changed @@ -0,0 +1 @@ + diff --git a/vendors/keymaster/.code-changed b/vendors/keymaster/.code-changed new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/vendors/keymaster/.code-changed @@ -0,0 +1 @@ + diff --git a/webpack.config.builder.js b/webpack.config.builder.js new file mode 100644 index 000000000..ad2fb55df --- /dev/null +++ b/webpack.config.builder.js @@ -0,0 +1,125 @@ + +var + path = require('path'), + webpack = require('webpack'), + devPath = path.resolve(__dirname, 'dev'); + +module.exports = function(es6) { + return { + entry: es6 ? { + 'app.next': __dirname + '/dev/app.jsx', + 'admin.next': __dirname + '/dev/admin.jsx' + } : { + 'boot': __dirname + '/dev/boot.jsx', + 'app': __dirname + '/dev/app.jsx', + 'admin': __dirname + '/dev/admin.jsx' + }, + output: { + pathinfo: true, + path: __dirname + '/rainloop/v/0.0.0/static/js/', + filename: '[name].js', + publicPath: 'rainloop/v/0.0.0/static/js/' + }, + plugins: [ + new webpack.optimize.OccurrenceOrderPlugin() + ], + resolve: { + modules: [devPath, 'node_modules'], + extensions: ['', '.js', '.jsx'], + alias: { + 'Opentip': __dirname + '/dev/External/Opentip.js', + 'ko': __dirname + '/dev/External/ko.js' + } + }, + module: { + loaders: [ + { + test: /\.jsx?$/, + loader: 'babel', + include: [devPath], + query: !es6 ? { + cacheDirectory: true, + presets: [['es2015', {loose: true, modules: false}], 'es2016', 'stage-0'], + plugins: ['transform-runtime'] + } : { + cacheDirectory: true, + plugins: [ +// es2015 +["transform-es2015-template-literals", {loose: true}], +"transform-es2015-literals", +"transform-es2015-function-name", +// ["transform-es2015-arrow-functions")], +"transform-es2015-block-scoped-functions", +// ["transform-es2015-classes", loose], +// "transform-es2015-object-super", +"transform-es2015-shorthand-properties", +"transform-es2015-duplicate-keys", +["transform-es2015-computed-properties", {loose: true}], +["transform-es2015-for-of", {loose: true}], +"transform-es2015-sticky-regex", +"transform-es2015-unicode-regex", +// "check-es2015-constants", +//["transform-es2015-spread", {loose: true}], +// "transform-es2015-parameters", +//["transform-es2015-destructuring", {loose: true}], +// "transform-es2015-block-scoping", +"transform-es2015-typeof-symbol", +// ["transform-regenerator", { async: false, asyncGenerators: false }], + +// es2016 +"transform-exponentiation-operator", + +// stage-0 +"transform-do-expressions", +"transform-function-bind", + +// stage-1 +"transform-class-constructor-call", +"transform-export-extensions", + +// stage-2 +"transform-class-properties", +"transform-object-rest-spread", +"transform-decorators", + +// stage-3 +"syntax-trailing-function-commas", +"transform-async-to-generator", +"transform-exponentiation-operator", + +// runtime +'transform-runtime' + ] + } + }, + { + test: /\.(html|css)$/, + loader: 'raw', + include: [devPath] + }, + { + test: /\.json$/, + loader: 'json', + include: [devPath] + } + ] + }, + externals: { + 'window': 'window', + 'progressJs': 'window.progressJs', + 'moment': 'window.moment', + 'ifvisible': 'window.ifvisible', + 'crossroads': 'window.crossroads', + 'hasher': 'window.hasher', + 'Jua': 'window.Jua', + 'Autolinker': 'window.Autolinker', + 'Tinycon': 'window.Tinycon', + 'ssm': 'window.ssm', + 'key': 'window.key', + '_': 'window._', + 'qr': 'window.qr', + 'Promise': 'window.Promise', + '$': 'window.jQuery' + } + } +}; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index c578bdee6..000000000 --- a/webpack.config.js +++ /dev/null @@ -1,73 +0,0 @@ - -var - path = require('path'), - webpack = require('webpack'), - jsLoaderQuery = { - cacheDirectory: true, - presets: ['es2015-loose-native-modules', 'stage-0'] - } -; - -module.exports = { - entry: { - 'boot': __dirname + '/dev/boot.jsx', - 'app': __dirname + '/dev/app.jsx', - 'admin': __dirname + '/dev/admin.jsx' - }, - output: { - pathinfo: true, - path: __dirname + '/rainloop/v/0.0.0/static/js/', - filename: '[name].js', - publicPath: 'rainloop/v/0.0.0/static/js/' - }, -// devtool: "#source-map", - plugins: [ -// new webpack.optimize.CommonsChunkPlugin('common.js'), - new webpack.optimize.OccurrenceOrderPlugin() - ], - resolve: { - modules: [path.resolve(__dirname, 'dev'), 'node_modules'], - extensions: ['', '.js', '.jsx'], - alias: { - 'Opentip': __dirname + '/dev/External/Opentip.js', - 'ko': __dirname + '/dev/External/ko.js' - } - }, - module: { - loaders: [ - { - test: /\.(html|css)$/, - loader: 'raw', - exclude: /(node_modules|bower_components|vendors)/ - }, - { - test: /\.json$/, - loader: 'json', - exclude: /(node_modules|bower_components|vendors)/ - }, - { - test: /\.jsx$/, - loader: 'babel', - exclude: /(node_modules|bower_components|vendors)/, - query: jsLoaderQuery - } - ] - }, - externals: { - 'window': 'window', - 'progressJs': 'window.progressJs', - 'moment': 'window.moment', - 'ifvisible': 'window.ifvisible', - 'crossroads': 'window.crossroads', - 'hasher': 'window.hasher', - 'Jua': 'window.Jua', - 'Autolinker': 'window.Autolinker', - 'Tinycon': 'window.Tinycon', - 'ssm': 'window.ssm', - 'key': 'window.key', - '_': 'window._', - 'qr': 'window.qr', - 'Promise': 'window.Promise', - '$': 'window.jQuery' - } -}; \ No newline at end of file