mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 07:35:55 +08:00
Add prettier
This commit is contained in:
parent
08da3030b0
commit
450528ff00
4
.eslintignore
Normal file
4
.eslintignore
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
*.*
|
||||||
|
!/dev/**/*.js
|
||||||
|
!/tasks/**/*.js
|
||||||
|
!/*.js
|
293
.eslintrc.js
293
.eslintrc.js
|
@ -1,279 +1,36 @@
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
'extends': 'eslint:recommended',
|
parser: 'babel-eslint',
|
||||||
"parser": "babel-eslint",
|
extends: ['eslint:recommended', 'plugin:prettier/recommended'],
|
||||||
'parserOptions': {
|
plugins: ['prettier'],
|
||||||
'ecmaVersion': 6,
|
parserOptions: {
|
||||||
'sourceType': 'module'
|
ecmaVersion: 6,
|
||||||
|
sourceType: 'module'
|
||||||
},
|
},
|
||||||
'env': {
|
env: {
|
||||||
'node': true,
|
node: true,
|
||||||
'commonjs': true,
|
commonjs: true,
|
||||||
'es6': true
|
es6: true
|
||||||
},
|
},
|
||||||
// 'plugins': ['compat'],
|
globals: {
|
||||||
'globals': {
|
|
||||||
'RL_COMMUNITY': true,
|
'RL_COMMUNITY': true,
|
||||||
'RL_ES6': true
|
'RL_ES6': true
|
||||||
},
|
},
|
||||||
|
|
||||||
// http://eslint.org/docs/rules/
|
// http://eslint.org/docs/rules/
|
||||||
'rules': {
|
rules: {
|
||||||
// plugins
|
// plugins
|
||||||
// 'compat/compat': 2,
|
'prettier/prettier': 'error',
|
||||||
|
|
||||||
// errors
|
'no-console': 'error',
|
||||||
'no-cond-assign': [2, 'always'],
|
'max-len': [
|
||||||
'no-console': 0,
|
'error',
|
||||||
'no-constant-condition': 2,
|
120,
|
||||||
'no-control-regex': 2,
|
2,
|
||||||
'no-debugger': 2,
|
{
|
||||||
'no-dupe-args': 2,
|
ignoreComments: true,
|
||||||
'no-dupe-keys': 2,
|
ignoreUrls: true,
|
||||||
'no-duplicate-case': 2,
|
ignoreTrailingComments: true,
|
||||||
'no-empty': 2,
|
ignorePattern: '(^\\s*(const|let|var)\\s.+=\\s*require\\s*\\(|^import\\s.+\\sfrom\\s.+;$)'
|
||||||
'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, 2, 10, 100],
|
|
||||||
// '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': 0,
|
|
||||||
'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': ['error', 'tab', {
|
|
||||||
'SwitchCase': 1,
|
|
||||||
'VariableDeclarator': 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
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -10,9 +10,6 @@
|
||||||
/rainloop/v/0.0.0/static/*
|
/rainloop/v/0.0.0/static/*
|
||||||
/rainloop/v/0.0.0/app/localization/moment/*
|
/rainloop/v/0.0.0/app/localization/moment/*
|
||||||
!/rainloop/v/0.0.0/app/localization/moment/.gitempty
|
!/rainloop/v/0.0.0/app/localization/moment/.gitempty
|
||||||
/tests/e2e/configuration.js
|
|
||||||
/tests/e2e/output/*
|
|
||||||
!/tests/e2e/output/.gitempty
|
|
||||||
/vendors/.*
|
/vendors/.*
|
||||||
/node_modules
|
/node_modules
|
||||||
/build/local
|
/build/local
|
||||||
|
@ -26,6 +23,5 @@
|
||||||
/dist
|
/dist
|
||||||
/data
|
/data
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/tests/fix.php
|
|
||||||
/MULTIPLY
|
/MULTIPLY
|
||||||
/include.php
|
/include.php
|
||||||
|
|
4
.prettierignore
Normal file
4
.prettierignore
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
*.*
|
||||||
|
!/dev/**/*.js
|
||||||
|
!/tasks/**/*.js
|
||||||
|
!/*.js
|
26
.prettierrc
Normal file
26
.prettierrc
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"printWidth": 120,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"useTabs": true,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"arrowParens": "always",
|
||||||
|
"endOfLine": "lf",
|
||||||
|
"quoteProps": "preserve",
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": "*.js",
|
||||||
|
"options": {
|
||||||
|
"parser": "babel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"files": "*.jsx",
|
||||||
|
"options": {
|
||||||
|
"parser": "babel"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
8
Makefile
8
Makefile
|
@ -49,9 +49,11 @@ logs-tx:
|
||||||
rl-lint:
|
rl-lint:
|
||||||
@docker-compose run --no-deps --rm node gulp lint
|
@docker-compose run --no-deps --rm node gulp lint
|
||||||
rl-dev:
|
rl-dev:
|
||||||
@docker-compose run --no-deps --rm node gulp
|
@docker-compose run --no-deps --rm node npm run watch-js
|
||||||
rl-watch-css:
|
rl-compile:
|
||||||
@docker-compose run --no-deps --rm node npm run watch-css
|
@docker-compose run --no-deps --rm node gulp build
|
||||||
|
rl-compile-with-source:
|
||||||
|
@docker-compose run --no-deps --rm node gulp build --source
|
||||||
rl-watch-js:
|
rl-watch-js:
|
||||||
@docker-compose run --no-deps --rm node npm run watch-js
|
@docker-compose run --no-deps --rm node npm run watch-js
|
||||||
|
|
||||||
|
|
|
@ -1,32 +1,26 @@
|
||||||
|
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
import {isUnd} from 'Common/Utils';
|
import { isUnd } from 'Common/Utils';
|
||||||
import {AbstractComponent} from 'Component/Abstract';
|
import { AbstractComponent } from 'Component/Abstract';
|
||||||
|
|
||||||
class AbstracCheckbox extends AbstractComponent
|
class AbstractCheckbox extends AbstractComponent {
|
||||||
{
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} params = {}
|
* @param {Object} params = {}
|
||||||
*/
|
*/
|
||||||
constructor(params = {}) {
|
constructor(params = {}) {
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.value = params.value;
|
this.value = params.value;
|
||||||
if (isUnd(this.value) || !this.value.subscribe)
|
if (isUnd(this.value) || !this.value.subscribe) {
|
||||||
{
|
|
||||||
this.value = ko.observable(isUnd(this.value) ? false : !!this.value);
|
this.value = ko.observable(isUnd(this.value) ? false : !!this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.enable = params.enable;
|
this.enable = params.enable;
|
||||||
if (isUnd(this.enable) || !this.enable.subscribe)
|
if (isUnd(this.enable) || !this.enable.subscribe) {
|
||||||
{
|
|
||||||
this.enable = ko.observable(isUnd(this.enable) ? true : !!this.enable);
|
this.enable = ko.observable(isUnd(this.enable) ? true : !!this.enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.disable = params.disable;
|
this.disable = params.disable;
|
||||||
if (isUnd(this.disable) || !this.disable.subscribe)
|
if (isUnd(this.disable) || !this.disable.subscribe) {
|
||||||
{
|
|
||||||
this.disable = ko.observable(isUnd(this.disable) ? false : !!this.disable);
|
this.disable = ko.observable(isUnd(this.disable) ? false : !!this.disable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,11 +35,10 @@ class AbstracCheckbox extends AbstractComponent
|
||||||
}
|
}
|
||||||
|
|
||||||
click() {
|
click() {
|
||||||
if (!this.readOnly && this.enable() && !this.disable())
|
if (!this.readOnly && this.enable() && !this.disable()) {
|
||||||
{
|
|
||||||
this.value(!this.value());
|
this.value(!this.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export {AbstracCheckbox, AbstracCheckbox as default};
|
export { AbstractCheckbox, AbstractCheckbox as default };
|
|
@ -1,43 +1,37 @@
|
||||||
|
|
||||||
import _ from '_';
|
import _ from '_';
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
import {isUnd} from 'Common/Utils';
|
import { isUnd } from 'Common/Utils';
|
||||||
import {AbstractComponent} from 'Component/Abstract';
|
import { AbstractComponent } from 'Component/Abstract';
|
||||||
|
|
||||||
class AbstracRadio extends AbstractComponent
|
class AbstractRadio extends AbstractComponent {
|
||||||
{
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} params
|
* @param {Object} params
|
||||||
*/
|
*/
|
||||||
constructor(params) {
|
constructor(params) {
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.values = ko.observableArray([]);
|
this.values = ko.observableArray([]);
|
||||||
|
|
||||||
this.value = params.value;
|
this.value = params.value;
|
||||||
if (isUnd(this.value) || !this.value.subscribe)
|
if (isUnd(this.value) || !this.value.subscribe) {
|
||||||
{
|
|
||||||
this.value = ko.observable('');
|
this.value = ko.observable('');
|
||||||
}
|
}
|
||||||
|
|
||||||
this.inline = isUnd(params.inline) ? false : params.inline;
|
this.inline = isUnd(params.inline) ? false : params.inline;
|
||||||
this.readOnly = isUnd(params.readOnly) ? false : !!params.readOnly;
|
this.readOnly = isUnd(params.readOnly) ? false : !!params.readOnly;
|
||||||
|
|
||||||
if (params.values)
|
if (params.values) {
|
||||||
{
|
this.values(_.map(params.values, (label, value) => ({ label: label, value: value })));
|
||||||
this.values(_.map(params.values, (label, value) => ({label: label, value: value})));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.click = _.bind(this.click, this);
|
this.click = _.bind(this.click, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
click(value) {
|
click(value) {
|
||||||
if (!this.readOnly && value)
|
if (!this.readOnly && value) {
|
||||||
{
|
|
||||||
this.value(value.value);
|
this.value(value.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export {AbstracRadio, AbstracRadio as default};
|
export { AbstractRadio, AbstractRadio as default };
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
import {componentExportHelper} from 'Component/Abstract';
|
import {componentExportHelper} from 'Component/Abstract';
|
||||||
import {AbstracCheckbox} from 'Component/AbstracCheckbox';
|
import {AbstractCheckbox} from 'Component/AbstractCheckbox';
|
||||||
|
|
||||||
class CheckboxComponent extends AbstracCheckbox {}
|
class CheckboxComponent extends AbstractCheckbox {}
|
||||||
|
|
||||||
export default componentExportHelper(CheckboxComponent, 'CheckboxComponent');
|
export default componentExportHelper(CheckboxComponent, 'CheckboxComponent');
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
import {componentExportHelper} from 'Component/Abstract';
|
import {componentExportHelper} from 'Component/Abstract';
|
||||||
import {AbstracCheckbox} from 'Component/AbstracCheckbox';
|
import {AbstractCheckbox} from 'Component/AbstractCheckbox';
|
||||||
|
|
||||||
class ClassicCheckboxComponent extends AbstracCheckbox {}
|
class ClassicCheckboxComponent extends AbstractCheckbox {}
|
||||||
|
|
||||||
export default componentExportHelper(ClassicCheckboxComponent, 'ClassicCheckboxComponent');
|
export default componentExportHelper(ClassicCheckboxComponent, 'ClassicCheckboxComponent');
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
import _ from '_';
|
import _ from '_';
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
import {componentExportHelper} from 'Component/Abstract';
|
import {componentExportHelper} from 'Component/Abstract';
|
||||||
import {AbstracCheckbox} from 'Component/AbstracCheckbox';
|
import {AbstractCheckbox} from 'Component/AbstractCheckbox';
|
||||||
|
|
||||||
class CheckboxMaterialDesignComponent extends AbstracCheckbox
|
class CheckboxMaterialDesignComponent extends AbstractCheckbox
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param {Object} params
|
* @param {Object} params
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
import {componentExportHelper} from 'Component/Abstract';
|
import {componentExportHelper} from 'Component/Abstract';
|
||||||
import {AbstracRadio} from 'Component/AbstracRadio';
|
import {AbstractRadio} from 'Component/AbstractRadio';
|
||||||
|
|
||||||
class RadioComponent extends AbstracRadio {}
|
class RadioComponent extends AbstractRadio {}
|
||||||
|
|
||||||
export default componentExportHelper(RadioComponent, 'RadioComponent');
|
export default componentExportHelper(RadioComponent, 'RadioComponent');
|
||||||
|
|
|
@ -118,9 +118,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.e-contact-foreach {
|
// .e-contact-foreach {
|
||||||
border-bottom: 1px solid #ddd;
|
// border-bottom: 1px solid #ddd;
|
||||||
}
|
// }
|
||||||
|
|
||||||
.e-contact-item {
|
.e-contact-item {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -133,6 +133,7 @@
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
border: 0px solid transparent;
|
border: 0px solid transparent;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
|
||||||
.delimiter {
|
.delimiter {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -413,7 +414,7 @@
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
border: 0px solid transparent;
|
border: 0px solid transparent;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,9 +93,9 @@ class ContactsPopupView extends AbstractViewNext
|
||||||
(property) => -1 < inArray(property.type(), [ContactPropertyType.FirstName, ContactPropertyType.LastName])
|
(property) => -1 < inArray(property.type(), [ContactPropertyType.FirstName, ContactPropertyType.LastName])
|
||||||
);
|
);
|
||||||
|
|
||||||
this.viewPropertiesOther = this.viewProperties.filter(
|
// this.viewPropertiesOther = this.viewProperties.filter(
|
||||||
(property) => -1 < inArray(property.type(), [ContactPropertyType.Note])
|
// (property) => -1 < inArray(property.type(), [ContactPropertyType.Note])
|
||||||
);
|
// );
|
||||||
|
|
||||||
this.viewPropertiesOther = ko.computed(() => {
|
this.viewPropertiesOther = ko.computed(() => {
|
||||||
const list = _.filter(this.viewProperties(),
|
const list = _.filter(this.viewProperties(),
|
||||||
|
|
|
@ -3,13 +3,3 @@ import 'core-js/features/array/includes';
|
||||||
import 'core-js/features/string/includes';
|
import 'core-js/features/string/includes';
|
||||||
import 'core-js/features/promise';
|
import 'core-js/features/promise';
|
||||||
import 'raf/polyfill';
|
import 'raf/polyfill';
|
||||||
|
|
||||||
/* eslint-disable no-undefined, consistent-return */
|
|
||||||
const log = console && console.log ? console.log : undefined;
|
|
||||||
console.log = log ? (...props) => {
|
|
||||||
if (props && props[0] && 0 === props[0].indexOf('JQMIGRATE:')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return log(...props);
|
|
||||||
} : undefined;
|
|
||||||
|
|
16
gulpfile.js
16
gulpfile.js
|
@ -1,13 +1,13 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
|
|
||||||
const {cleanStatic} = require('./tasks/common');
|
const { cleanStatic } = require('./tasks/common');
|
||||||
const {assets} = require('./tasks/assets');
|
const { assets } = require('./tasks/assets');
|
||||||
const {js, jsLint} = require('./tasks/js');
|
const { js, jsLint } = require('./tasks/js');
|
||||||
const {css, cssLint} = require('./tasks/css');
|
const { css, cssLint } = require('./tasks/css');
|
||||||
const {vendors} = require('./tasks/vendors');
|
const { vendors } = require('./tasks/vendors');
|
||||||
const {rainloop} = require('./tasks/rainloop');
|
const { rainloop } = require('./tasks/rainloop');
|
||||||
const {owncloud} = require('./tasks/owncloud');
|
const { owncloud } = require('./tasks/owncloud');
|
||||||
|
|
||||||
const clean = gulp.series(cleanStatic);
|
const clean = gulp.series(cleanStatic);
|
||||||
|
|
||||||
|
@ -18,8 +18,10 @@ const buildState2 = gulp.series(clean, assets, buildState1);
|
||||||
|
|
||||||
const build = gulp.parallel(lint, buildState2);
|
const build = gulp.parallel(lint, buildState2);
|
||||||
|
|
||||||
|
exports.css = css;
|
||||||
exports.lint = lint;
|
exports.lint = lint;
|
||||||
exports.build = build;
|
exports.build = build;
|
||||||
|
exports.default = build;
|
||||||
|
|
||||||
exports.rainloop = gulp.series(build, rainloop);
|
exports.rainloop = gulp.series(build, rainloop);
|
||||||
exports.owncloud = gulp.series(build, owncloud);
|
exports.owncloud = gulp.series(build, owncloud);
|
||||||
|
|
|
@ -64,6 +64,8 @@
|
||||||
"element-dataset": "2.2.6",
|
"element-dataset": "2.2.6",
|
||||||
"emailjs-addressparser": "2.0.2",
|
"emailjs-addressparser": "2.0.2",
|
||||||
"eslint": "6.0.1",
|
"eslint": "6.0.1",
|
||||||
|
"eslint-config-prettier": "6.0.0",
|
||||||
|
"eslint-plugin-prettier": "3.1.0",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-autoprefixer": "6.1.0",
|
"gulp-autoprefixer": "6.1.0",
|
||||||
"gulp-cached": "1.1.1",
|
"gulp-cached": "1.1.1",
|
||||||
|
@ -83,6 +85,7 @@
|
||||||
"gulp-replace": "1.0.0",
|
"gulp-replace": "1.0.0",
|
||||||
"gulp-rimraf": "0.2.2",
|
"gulp-rimraf": "0.2.2",
|
||||||
"gulp-size": "3.0.0",
|
"gulp-size": "3.0.0",
|
||||||
|
"gulp-sourcemaps": "2.6.5",
|
||||||
"gulp-stripbom": "1.0.4",
|
"gulp-stripbom": "1.0.4",
|
||||||
"gulp-through": "0.4.0",
|
"gulp-through": "0.4.0",
|
||||||
"gulp-uglify": "3.0.2",
|
"gulp-uglify": "3.0.2",
|
||||||
|
@ -109,13 +112,14 @@
|
||||||
"openpgp": "2.6.2",
|
"openpgp": "2.6.2",
|
||||||
"opentip": "2.4.3",
|
"opentip": "2.4.3",
|
||||||
"pikaday": "1.8.0",
|
"pikaday": "1.8.0",
|
||||||
|
"prettier": "1.18.2",
|
||||||
"raf": "3.4.1",
|
"raf": "3.4.1",
|
||||||
"raw-loader": "3.0.0",
|
"raw-loader": "3.0.0",
|
||||||
"rimraf": "2.6.3",
|
"rimraf": "2.6.3",
|
||||||
"simplestatemanager": "4.1.1",
|
"simplestatemanager": "4.1.1",
|
||||||
"style-loader": "0.23.1",
|
"style-loader": "0.23.1",
|
||||||
"underscore": "1.9.1",
|
"underscore": "1.9.1",
|
||||||
"webpack": "4.35.0",
|
"webpack": "4.35.2",
|
||||||
"webpack-cli": "3.3.5"
|
"webpack-cli": "3.3.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<phpunit colors="true" stopOnFailure="true" syntaxCheck="true" bootstrap="tests/bootstrap.php">
|
|
||||||
<testsuites>
|
|
||||||
<testsuite name="RainLoop Test Suite">
|
|
||||||
<directory>tests</directory>
|
|
||||||
</testsuite>
|
|
||||||
</testsuites>
|
|
||||||
</phpunit>
|
|
|
@ -1,6 +1,11 @@
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
|
|
||||||
|
if (!window.rl)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
|
|
||||||
|
if (!window.rl)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
|
if (!window.rl)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var
|
var
|
||||||
sAccount = window.rl.pluginSettingsGet('google-analytics', 'account'),
|
sAccount = window.rl.pluginSettingsGet('google-analytics', 'account'),
|
||||||
sDomain = window.rl.pluginSettingsGet('google-analytics', 'domain_name'),
|
sDomain = window.rl.pluginSettingsGet('google-analytics', 'domain_name'),
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
|
if (!window.rl)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var
|
var
|
||||||
sPiwikURL = '' + window.rl.pluginSettingsGet('piwik-analytics', 'piwik_url'),
|
sPiwikURL = '' + window.rl.pluginSettingsGet('piwik-analytics', 'piwik_url'),
|
||||||
sSiteID = '' + window.rl.pluginSettingsGet('piwik-analytics', 'site_id')
|
sSiteID = '' + window.rl.pluginSettingsGet('piwik-analytics', 'site_id')
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
function ShowRecaptcha()
|
function ShowRecaptcha()
|
||||||
{
|
{
|
||||||
if (window.grecaptcha)
|
if (window.grecaptcha && window.rl)
|
||||||
{
|
{
|
||||||
if (null === nId)
|
if (null === nId)
|
||||||
{
|
{
|
||||||
|
|
|
@ -304,7 +304,7 @@ class Service
|
||||||
|
|
||||||
$aTemplateParameters = array(
|
$aTemplateParameters = array(
|
||||||
'{{BaseAppHeadScriptLink}}' => $sSentryDsn ?
|
'{{BaseAppHeadScriptLink}}' => $sSentryDsn ?
|
||||||
'<script type="text/javascript" data-cfasync="false" src="https://browser.sentry-cdn.com/5.0.8/bundle.min.js" crossorigin="anonymous"></script>' : '',
|
'<script type="text/javascript" data-cfasync="false" src="https://browser.sentry-cdn.com/5.4.3/bundle.min.js" crossorigin="anonymous"></script>' : '',
|
||||||
'{{BaseAppBodyScript}}' => $sSentryDsn ?
|
'{{BaseAppBodyScript}}' => $sSentryDsn ?
|
||||||
'<script type="text/javascript" data-cfasync="false">window && window.Sentry && window.Sentry.init({dsn:\''.$sSentryDsn.'\',ignoreErrors:[\'Document not active\']});</script>' : '',
|
'<script type="text/javascript" data-cfasync="false">window && window.Sentry && window.Sentry.init({dsn:\''.$sSentryDsn.'\',ignoreErrors:[\'Document not active\']});</script>' : '',
|
||||||
'{{BaseAppFaviconPngLinkTag}}' => $sFaviconPngLink ? '<link type="image/png" rel="shortcut icon" href="'.$sFaviconPngLink.'" />' : '',
|
'{{BaseAppFaviconPngLinkTag}}' => $sFaviconPngLink ? '<link type="image/png" rel="shortcut icon" href="'.$sFaviconPngLink.'" />' : '',
|
||||||
|
|
|
@ -243,7 +243,7 @@
|
||||||
<span class="from" data-bind="html: viewFromShort, title: viewFrom"></span>
|
<span class="from" data-bind="html: viewFromShort, title: viewFrom"></span>
|
||||||
<span data-bind="visible: viewFromDkimVisibility">
|
<span data-bind="visible: viewFromDkimVisibility">
|
||||||
|
|
||||||
<i data-bind="css: viewFromDkimStatusIconClass, title: viewFromDkimStatusTitle" />
|
<i data-bind="css: viewFromDkimStatusIconClass, title: viewFromDkimStatusTitle"></i>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span data-bind="visible: 0 < viewTimeStamp()">
|
<span data-bind="visible: 0 < viewTimeStamp()">
|
||||||
|
|
|
@ -91,7 +91,6 @@
|
||||||
<div class="sidebarParent">
|
<div class="sidebarParent">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="delimiter"></div>
|
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="checkedParent">
|
<div class="checkedParent">
|
||||||
<i class="checkboxItem" data-bind="css: checked() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
<i class="checkboxItem" data-bind="css: checked() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||||
|
@ -183,7 +182,7 @@
|
||||||
<div class="controls fix-width">
|
<div class="controls fix-width">
|
||||||
<div data-bind="foreach: viewPropertiesNames">
|
<div data-bind="foreach: viewPropertiesNames">
|
||||||
<div class="property-line">
|
<div class="property-line">
|
||||||
<span class="contactValueStatic" data-bind="text: value" />
|
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||||
<input type="text" class="contactValueInput"
|
<input type="text" class="contactValueInput"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
||||||
|
@ -192,13 +191,13 @@
|
||||||
<div data-bind="visible: 0 < viewPropertiesOther().length, foreach: viewPropertiesOther">
|
<div data-bind="visible: 0 < viewPropertiesOther().length, foreach: viewPropertiesOther">
|
||||||
<div class="property-line">
|
<div class="property-line">
|
||||||
<!-- ko if: !largeValue() -->
|
<!-- ko if: !largeValue() -->
|
||||||
<span class="contactValueStatic" data-bind="text: value" />
|
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||||
<input type="text" class="contactValueInput"
|
<input type="text" class="contactValueInput"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
||||||
<!-- /ko -->
|
<!-- /ko -->
|
||||||
<!-- ko if: largeValue -->
|
<!-- ko if: largeValue -->
|
||||||
<span class="contactValueTextAreaStatic" data-bind="text: value" />
|
<span class="contactValueTextAreaStatic" data-bind="text: value"></span>
|
||||||
<textarea class="contactValueTextArea"
|
<textarea class="contactValueTextArea"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}"></textarea>
|
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}"></textarea>
|
||||||
|
@ -214,7 +213,7 @@
|
||||||
<div class="controls fix-width">
|
<div class="controls fix-width">
|
||||||
<div data-bind="foreach: viewPropertiesEmails">
|
<div data-bind="foreach: viewPropertiesEmails">
|
||||||
<div class="property-line">
|
<div class="property-line">
|
||||||
<span class="contactValueStatic" data-bind="text: value" />
|
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||||
<input type="text" class="contactValueInput"
|
<input type="text" class="contactValueInput"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||||
|
@ -230,7 +229,7 @@
|
||||||
<div class="controls fix-width">
|
<div class="controls fix-width">
|
||||||
<div data-bind="foreach: viewPropertiesPhones">
|
<div data-bind="foreach: viewPropertiesPhones">
|
||||||
<div class="property-line">
|
<div class="property-line">
|
||||||
<span class="contactValueStatic" data-bind="text: value" />
|
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||||
<input type="text" class="contactValueInput"
|
<input type="text" class="contactValueInput"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||||
|
@ -245,7 +244,7 @@
|
||||||
<div class="controls fix-width">
|
<div class="controls fix-width">
|
||||||
<div data-bind="foreach: viewPropertiesWeb">
|
<div data-bind="foreach: viewPropertiesWeb">
|
||||||
<div class="property-line">
|
<div class="property-line">
|
||||||
<span class="contactValueLargeStatic" data-bind="text: value" />
|
<span class="contactValueLargeStatic" data-bind="text: value"></span>
|
||||||
<input type="text" class="contactValueInputLarge" placeholder="http://"
|
<input type="text" class="contactValueInputLarge" placeholder="http://"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div>
|
<div>
|
||||||
<i class="icon-warning" style="color:red" />
|
<i class="icon-warning" style="color:red"></i>
|
||||||
|
|
||||||
<strong>
|
<strong>
|
||||||
<span class="i18n" data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_WARNING"></span>
|
<span class="i18n" data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_WARNING"></span>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
<div class="control-group" data-bind="visible: capaTwoFactor">
|
<div class="control-group" data-bind="visible: capaTwoFactor">
|
||||||
<label class="control-label"></label>
|
<label class="control-label"></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<i class="icon-lock" />
|
<i class="icon-lock"></i>
|
||||||
|
|
||||||
<span class="i18n g-ui-link" tabindex="0" data-i18n="SETTINGS_SECURITY/LABEL_CONFIGURE_TWO_FACTOR" data-bind="click: configureTwoFactor, onSpace: configureTwoFactor, onEnter: configureTwoFactor"></span>
|
<span class="i18n g-ui-link" tabindex="0" data-i18n="SETTINGS_SECURITY/LABEL_CONFIGURE_TWO_FACTOR" data-bind="click: configureTwoFactor, onSpace: configureTwoFactor, onEnter: configureTwoFactor"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
|
|
||||||
const assetsCopy = () =>
|
const assetsCopy = () => gulp.src(config.paths.assets.src).pipe(gulp.dest(config.paths.static));
|
||||||
gulp.src(config.paths.assets.src)
|
|
||||||
.pipe(gulp.dest(config.paths.static));
|
|
||||||
|
|
||||||
exports.assets = gulp.series(assetsCopy);
|
exports.assets = gulp.series(assetsCopy);
|
||||||
|
|
|
@ -3,11 +3,9 @@ const gulp = require('gulp');
|
||||||
const rimraf = require('gulp-rimraf');
|
const rimraf = require('gulp-rimraf');
|
||||||
const fs = require('node-fs');
|
const fs = require('node-fs');
|
||||||
|
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
|
|
||||||
exports.del = (dir) =>
|
exports.del = (dir) => gulp.src(dir, { read: false, allowEmpty: true }).pipe(rimraf());
|
||||||
gulp.src(dir, {read: false, allowEmpty: true})
|
|
||||||
.pipe(rimraf());
|
|
||||||
|
|
||||||
exports.copy = (sFile, sNewFile, done) => {
|
exports.copy = (sFile, sNewFile, done) => {
|
||||||
fs.writeFileSync(sNewFile, fs.readFileSync(sFile));
|
fs.writeFileSync(sNewFile, fs.readFileSync(sFile));
|
||||||
|
@ -15,11 +13,11 @@ exports.copy = (sFile, sNewFile, done) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.zip = (srcDir, destDir, fileName) =>
|
exports.zip = (srcDir, destDir, fileName) =>
|
||||||
gulp.src(srcDir + '**/*')
|
gulp
|
||||||
|
.src(srcDir + '**/*')
|
||||||
.pipe(require('gulp-zip')(fileName))
|
.pipe(require('gulp-zip')(fileName))
|
||||||
.pipe(gulp.dest(destDir));
|
.pipe(gulp.dest(destDir));
|
||||||
|
|
||||||
exports.getHead = () => (!config.community ? config.head.rainloop : config.head.agpl);
|
exports.getHead = () => (!config.community ? config.head.rainloop : config.head.agpl);
|
||||||
|
|
||||||
exports.cleanStatic = () => exports.del(config.paths.static);
|
exports.cleanStatic = () => exports.del(config.paths.static);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const {argv} = require('yargs');
|
const { argv } = require('yargs');
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
head: {
|
head: {
|
||||||
|
@ -9,7 +9,8 @@ const config = {
|
||||||
},
|
},
|
||||||
devVersion: '0.0.0',
|
devVersion: '0.0.0',
|
||||||
releasesPath: 'build/dist/releases',
|
releasesPath: 'build/dist/releases',
|
||||||
community: true,
|
community: !argv.pro,
|
||||||
|
source: !!argv.source,
|
||||||
watch: false,
|
watch: false,
|
||||||
watchInterval: 1000,
|
watchInterval: 1000,
|
||||||
googleCompile: false,
|
googleCompile: false,
|
||||||
|
@ -24,8 +25,6 @@ const config = {
|
||||||
paths: {}
|
paths: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
config.community = !argv.pro;
|
|
||||||
|
|
||||||
config.paths.globjs = 'dev/**/*.js';
|
config.paths.globjs = 'dev/**/*.js';
|
||||||
config.paths.static = 'rainloop/v/' + config.devVersion + '/static/';
|
config.paths.static = 'rainloop/v/' + config.devVersion + '/static/';
|
||||||
config.paths.staticJS = 'rainloop/v/' + config.devVersion + '/static/js/';
|
config.paths.staticJS = 'rainloop/v/' + config.devVersion + '/static/js/';
|
||||||
|
@ -42,10 +41,7 @@ config.paths.less = {
|
||||||
src: 'dev/Styles/@Main.less',
|
src: 'dev/Styles/@Main.less',
|
||||||
watch: ['dev/Styles/*.less'],
|
watch: ['dev/Styles/*.less'],
|
||||||
options: {
|
options: {
|
||||||
paths: [
|
paths: [path.join(__dirname, 'dev', 'Styles'), path.join(__dirname, 'vendors', 'bootstrap', 'less')]
|
||||||
path.join(__dirname, 'dev', 'Styles'),
|
|
||||||
path.join(__dirname, 'vendors', 'bootstrap', 'less')
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -71,18 +67,13 @@ config.paths.css = {
|
||||||
},
|
},
|
||||||
social: {
|
social: {
|
||||||
name: 'social.css',
|
name: 'social.css',
|
||||||
src: [
|
src: ['vendors/fontastic/styles.css', 'dev/Styles/_social.css']
|
||||||
'vendors/fontastic/styles.css',
|
|
||||||
'dev/Styles/_social.css'
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
config.paths.js = {
|
config.paths.js = {
|
||||||
moment: {
|
moment: {
|
||||||
locales: [
|
locales: ['node_modules/moment/locale/*.js']
|
||||||
'node_modules/moment/locale/*.js'
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
libs: {
|
libs: {
|
||||||
name: 'libs.js',
|
name: 'libs.js',
|
||||||
|
|
53
tasks/css.js
53
tasks/css.js
|
@ -1,35 +1,37 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
|
|
||||||
const
|
const concat = require('gulp-concat-util');
|
||||||
concat = require('gulp-concat-util'),
|
const rename = require('gulp-rename');
|
||||||
rename = require('gulp-rename'),
|
const replace = require('gulp-replace');
|
||||||
replace = require('gulp-replace'),
|
const plumber = require('gulp-plumber');
|
||||||
plumber = require('gulp-plumber'),
|
const gulpif = require('gulp-if');
|
||||||
gulpif = require('gulp-if'),
|
const eol = require('gulp-eol');
|
||||||
eol = require('gulp-eol'),
|
const livereload = require('gulp-livereload');
|
||||||
livereload = require('gulp-livereload'),
|
const filter = require('gulp-filter');
|
||||||
filter = require('gulp-filter'),
|
const expect = require('gulp-expect-file');
|
||||||
expect = require('gulp-expect-file');
|
|
||||||
|
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
const {del} = require('./common');
|
const { del } = require('./common');
|
||||||
|
|
||||||
const cssClean = () => del(config.paths.staticCSS + '/*.css');
|
const cssClean = () => del(config.paths.staticCSS + '/*.css');
|
||||||
|
|
||||||
const cssMainBuild = () => {
|
const cssMainBuild = () => {
|
||||||
const autoprefixer = require('gulp-autoprefixer'),
|
const autoprefixer = require('gulp-autoprefixer'),
|
||||||
less = require('gulp-less'),
|
less = require('gulp-less'),
|
||||||
lessFilter = filter('**/*.less', {restore: true}),
|
lessFilter = filter('**/*.less', { restore: true }),
|
||||||
src = config.paths.css.main.src.concat([config.paths.less.main.src]);
|
src = config.paths.css.main.src.concat([config.paths.less.main.src]);
|
||||||
|
|
||||||
return gulp.src(src)
|
return gulp
|
||||||
.pipe(expect.real({errorOnFailure: true}, src))
|
.src(src)
|
||||||
|
.pipe(expect.real({ errorOnFailure: true }, src))
|
||||||
.pipe(lessFilter)
|
.pipe(lessFilter)
|
||||||
.pipe(gulpif(config.watch, plumber()))
|
.pipe(gulpif(config.watch, plumber()))
|
||||||
.pipe(less({
|
.pipe(
|
||||||
'paths': config.paths.less.main.options.paths
|
less({
|
||||||
}))
|
'paths': config.paths.less.main.options.paths
|
||||||
|
})
|
||||||
|
)
|
||||||
.pipe(lessFilter.restore)
|
.pipe(lessFilter.restore)
|
||||||
.pipe(concat(config.paths.css.main.name))
|
.pipe(concat(config.paths.css.main.name))
|
||||||
.pipe(autoprefixer())
|
.pipe(autoprefixer())
|
||||||
|
@ -42,8 +44,9 @@ const cssMainBuild = () => {
|
||||||
const cssSocialBuild = () => {
|
const cssSocialBuild = () => {
|
||||||
const autoprefixer = require('gulp-autoprefixer'),
|
const autoprefixer = require('gulp-autoprefixer'),
|
||||||
src = config.paths.css.social.src;
|
src = config.paths.css.social.src;
|
||||||
return gulp.src(src)
|
return gulp
|
||||||
.pipe(expect.real({errorOnFailure: true}, src))
|
.src(src)
|
||||||
|
.pipe(expect.real({ errorOnFailure: true }, src))
|
||||||
.pipe(concat(config.paths.css.social.name))
|
.pipe(concat(config.paths.css.social.name))
|
||||||
.pipe(autoprefixer())
|
.pipe(autoprefixer())
|
||||||
.pipe(replace(/\.\.\/(img|images|fonts|svg)\//g, '$1/'))
|
.pipe(replace(/\.\.\/(img|images|fonts|svg)\//g, '$1/'))
|
||||||
|
@ -53,18 +56,20 @@ const cssSocialBuild = () => {
|
||||||
|
|
||||||
const cssMainMin = () => {
|
const cssMainMin = () => {
|
||||||
const cleanCss = require('gulp-clean-css');
|
const cleanCss = require('gulp-clean-css');
|
||||||
return gulp.src(config.paths.staticCSS + config.paths.css.main.name)
|
return gulp
|
||||||
|
.src(config.paths.staticCSS + config.paths.css.main.name)
|
||||||
.pipe(cleanCss())
|
.pipe(cleanCss())
|
||||||
.pipe(rename({suffix: '.min'}))
|
.pipe(rename({ suffix: '.min' }))
|
||||||
.pipe(eol('\n', true))
|
.pipe(eol('\n', true))
|
||||||
.pipe(gulp.dest(config.paths.staticCSS));
|
.pipe(gulp.dest(config.paths.staticCSS));
|
||||||
};
|
};
|
||||||
|
|
||||||
const cssSocialMin = () => {
|
const cssSocialMin = () => {
|
||||||
const cleanCss = require('gulp-clean-css');
|
const cleanCss = require('gulp-clean-css');
|
||||||
return gulp.src(config.paths.staticCSS + config.paths.css.social.name)
|
return gulp
|
||||||
|
.src(config.paths.staticCSS + config.paths.css.social.name)
|
||||||
.pipe(cleanCss())
|
.pipe(cleanCss())
|
||||||
.pipe(rename({suffix: '.min'}))
|
.pipe(rename({ suffix: '.min' }))
|
||||||
.pipe(eol('\n', true))
|
.pipe(eol('\n', true))
|
||||||
.pipe(gulp.dest(config.paths.staticCSS));
|
.pipe(gulp.dest(config.paths.staticCSS));
|
||||||
};
|
};
|
||||||
|
|
74
tasks/js.js
74
tasks/js.js
|
@ -1,8 +1,7 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
|
|
||||||
const
|
const concat = require('gulp-concat-util'),
|
||||||
concat = require('gulp-concat-util'),
|
|
||||||
header = require('gulp-header'),
|
header = require('gulp-header'),
|
||||||
rename = require('gulp-rename'),
|
rename = require('gulp-rename'),
|
||||||
replace = require('gulp-replace'),
|
replace = require('gulp-replace'),
|
||||||
|
@ -14,64 +13,79 @@ const
|
||||||
cache = require('gulp-cached'),
|
cache = require('gulp-cached'),
|
||||||
expect = require('gulp-expect-file'),
|
expect = require('gulp-expect-file'),
|
||||||
size = require('gulp-size'),
|
size = require('gulp-size'),
|
||||||
|
sourcemaps = require('gulp-sourcemaps'),
|
||||||
gutil = require('gulp-util');
|
gutil = require('gulp-util');
|
||||||
|
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
const {del, getHead} = require('./common');
|
const { del, getHead } = require('./common');
|
||||||
|
|
||||||
const {webpack} = require('./webpack');
|
const { webpack } = require('./webpack');
|
||||||
|
|
||||||
const jsClean = () => del(config.paths.staticJS + '/**/*.js');
|
const jsClean = () => del(config.paths.staticJS + '/**/*.{js,map}');
|
||||||
|
|
||||||
// libs
|
// libs
|
||||||
const jsLibs = () => {
|
const jsLibs = () => {
|
||||||
const src = config.paths.js.libs.src;
|
const src = config.paths.js.libs.src;
|
||||||
return gulp.src(src)
|
return gulp
|
||||||
.pipe(expect.real({errorOnFailure: true}, src))
|
.src(src)
|
||||||
.pipe(concat(config.paths.js.libs.name, {separator: '\n\n'}))
|
.pipe(expect.real({ errorOnFailure: true }, src))
|
||||||
|
.pipe(concat(config.paths.js.libs.name, { separator: '\n\n' }))
|
||||||
.pipe(eol('\n', true))
|
.pipe(eol('\n', true))
|
||||||
.pipe(replace(/sourceMappingURL=[a-z0-9\.\-_]{1,20}\.map/ig, ''))
|
.pipe(replace(/sourceMappingURL=[a-z0-9.\-_]{1,20}\.map/gi, ''))
|
||||||
.pipe(gulp.dest(config.paths.staticJS));
|
.pipe(gulp.dest(config.paths.staticJS));
|
||||||
};
|
};
|
||||||
|
|
||||||
// app
|
// app
|
||||||
const jsApp = () =>
|
const jsApp = () =>
|
||||||
gulp.src(config.paths.staticJS + config.paths.js.app.name)
|
gulp
|
||||||
|
.src(config.paths.staticJS + config.paths.js.app.name)
|
||||||
.pipe(header(getHead() + '\n'))
|
.pipe(header(getHead() + '\n'))
|
||||||
.pipe(eol('\n', true))
|
.pipe(eol('\n', true))
|
||||||
.pipe(gulp.dest(config.paths.staticJS))
|
.pipe(gulp.dest(config.paths.staticJS))
|
||||||
.on('error', gutil.log);
|
.on('error', gutil.log);
|
||||||
|
|
||||||
const jsAdmin = () =>
|
const jsAdmin = () =>
|
||||||
gulp.src(config.paths.staticJS + config.paths.js.admin.name)
|
gulp
|
||||||
|
.src(config.paths.staticJS + config.paths.js.admin.name)
|
||||||
.pipe(header(getHead() + '\n'))
|
.pipe(header(getHead() + '\n'))
|
||||||
.pipe(eol('\n', true))
|
.pipe(eol('\n', true))
|
||||||
.pipe(gulp.dest(config.paths.staticJS))
|
.pipe(gulp.dest(config.paths.staticJS))
|
||||||
.on('error', gutil.log);
|
.on('error', gutil.log);
|
||||||
|
|
||||||
const jsMin = () =>
|
const jsMin = () =>
|
||||||
gulp.src(config.paths.staticJS + '*.js')
|
gulp
|
||||||
.pipe(replace(/"rainloop\/v\/([^\/]+)\/static\/js\/"/g, '"rainloop/v/$1/static/js/min/"'))
|
.src(config.paths.staticJS + '*.js')
|
||||||
.pipe(size({
|
.pipe(
|
||||||
showFiles: true,
|
size({
|
||||||
showTotal: false
|
showFiles: true,
|
||||||
}))
|
showTotal: false
|
||||||
.pipe(rename({suffix: '.min'}))
|
})
|
||||||
.pipe(uglify({
|
)
|
||||||
mangle: true,
|
.pipe(gulpif(config.source, sourcemaps.init({ loadMaps: true })))
|
||||||
compress: true,
|
.pipe(replace(/"rainloop\/v\/([^/]+)\/static\/js\/"/g, '"rainloop/v/$1/static/js/min/"'))
|
||||||
ie8: false
|
.pipe(rename({ suffix: '.min' }))
|
||||||
}))
|
.pipe(
|
||||||
|
uglify({
|
||||||
|
mangle: true,
|
||||||
|
compress: true,
|
||||||
|
ie8: false
|
||||||
|
})
|
||||||
|
)
|
||||||
.pipe(eol('\n', true))
|
.pipe(eol('\n', true))
|
||||||
.pipe(size({
|
.pipe(gulpif(config.source, sourcemaps.write('./')))
|
||||||
showFiles: true,
|
.pipe(
|
||||||
showTotal: false
|
size({
|
||||||
}))
|
showFiles: true,
|
||||||
|
showTotal: false
|
||||||
|
})
|
||||||
|
)
|
||||||
.pipe(gulp.dest(config.paths.staticMinJS))
|
.pipe(gulp.dest(config.paths.staticMinJS))
|
||||||
.on('error', gutil.log);
|
.on('error', gutil.log);
|
||||||
|
|
||||||
const jsLint = () =>
|
const jsLint = (cb) => cb();
|
||||||
gulp.src(config.paths.globjs)
|
const jsLint1 = () =>
|
||||||
|
gulp
|
||||||
|
.src(config.paths.globjs)
|
||||||
.pipe(cache('eslint'))
|
.pipe(cache('eslint'))
|
||||||
.pipe(eslint())
|
.pipe(eslint())
|
||||||
.pipe(gulpif(config.watch, plumber()))
|
.pipe(gulpif(config.watch, plumber()))
|
||||||
|
|
|
@ -5,33 +5,27 @@ const gulp = require('gulp');
|
||||||
const fs = require('node-fs');
|
const fs = require('node-fs');
|
||||||
|
|
||||||
const pkg = require('../package.json');
|
const pkg = require('../package.json');
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
const {copy, zip, del} = require('./common');
|
const { copy, zip, del } = require('./common');
|
||||||
const {rainloopBuild} = require('./rainloop');
|
const { rainloopBuild } = require('./rainloop');
|
||||||
|
|
||||||
const owncloudCopy = () => {
|
const owncloudCopy = () => {
|
||||||
const
|
const versionFull = pkg.ownCloudVersion,
|
||||||
versionFull = pkg.ownCloudVersion,
|
dist = config.releasesPath + '/owncloud/' + versionFull + '/src/';
|
||||||
dist = config.releasesPath + '/owncloud/' + versionFull + '/src/'
|
|
||||||
;
|
|
||||||
|
|
||||||
fs.mkdirSync(dist, '0777', true);
|
fs.mkdirSync(dist, '0777', true);
|
||||||
fs.mkdirSync(dist + 'rainloop', '0777', true);
|
fs.mkdirSync(dist + 'rainloop', '0777', true);
|
||||||
|
|
||||||
return gulp.src('build/owncloud/rainloop-app/**/*', {base: 'build/owncloud/rainloop-app/'})
|
return gulp
|
||||||
|
.src('build/owncloud/rainloop-app/**/*', { base: 'build/owncloud/rainloop-app/' })
|
||||||
.pipe(gulp.dest(dist + 'rainloop'));
|
.pipe(gulp.dest(dist + 'rainloop'));
|
||||||
};
|
};
|
||||||
|
|
||||||
const owncloudCopyRainLoop = () => {
|
const owncloudCopyRainLoop = () => {
|
||||||
const
|
const versionFull = pkg.ownCloudVersion,
|
||||||
versionFull = pkg.ownCloudVersion,
|
dist = config.releasesPath + '/owncloud/' + versionFull + '/src/rainloop/';
|
||||||
dist = config.releasesPath + '/owncloud/' + versionFull + '/src/rainloop/'
|
if (config.rainloopBuilded && config.destPath) {
|
||||||
;
|
return gulp.src(config.destPath + '/src/**/*', { base: config.destPath + '/src/' }).pipe(gulp.dest(dist + 'app/'));
|
||||||
|
|
||||||
if (config.rainloopBuilded && config.destPath)
|
|
||||||
{
|
|
||||||
return gulp.src(config.destPath + '/src/**/*', {base: config.destPath + '/src/'})
|
|
||||||
.pipe(gulp.dest(dist + 'app/'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -45,15 +39,17 @@ const owncloudCopyRainLoopClean = (done) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const owncloudSetup = (done) => {
|
const owncloudSetup = (done) => {
|
||||||
const
|
const versionFull = pkg.ownCloudVersion,
|
||||||
versionFull = pkg.ownCloudVersion,
|
dist = config.releasesPath + '/owncloud/' + versionFull + '/src/';
|
||||||
dist = config.releasesPath + '/owncloud/' + versionFull + '/src/'
|
fs.writeFileSync(
|
||||||
;
|
dist + 'rainloop/appinfo/info.xml',
|
||||||
|
fs
|
||||||
fs.writeFileSync(dist + 'rainloop/appinfo/info.xml',
|
.readFileSync(dist + 'rainloop/appinfo/info.xml', 'utf8')
|
||||||
fs.readFileSync(dist + 'rainloop/appinfo/info.xml', 'utf8')
|
|
||||||
.replace('<version>0.0</version>', '<version>' + versionFull + '</version>')
|
.replace('<version>0.0</version>', '<version>' + versionFull + '</version>')
|
||||||
.replace('<licence></licence>', '<licence>' + (config.community ? 'AGPLv3' : 'RainLoop Software License') + '</licence>')
|
.replace(
|
||||||
|
'<licence></licence>',
|
||||||
|
'<licence>' + (config.community ? 'AGPLv3' : 'RainLoop Software License') + '</licence>'
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
fs.writeFileSync(dist + 'rainloop/appinfo/version', versionFull);
|
fs.writeFileSync(dist + 'rainloop/appinfo/version', versionFull);
|
||||||
|
|
|
@ -1,47 +1,46 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
/* eslint-disable consistent-return */
|
/* eslint-disable consistent-return */
|
||||||
|
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const fs = require('node-fs');
|
const fs = require('node-fs');
|
||||||
const chmod = require('gulp-chmod');
|
const chmod = require('gulp-chmod');
|
||||||
|
|
||||||
const pkg = require('../package.json');
|
const pkg = require('../package.json');
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
const {copy, zip, del} = require('./common');
|
const { copy, zip, del } = require('./common');
|
||||||
|
|
||||||
const rainloopCopy = () => {
|
const rainloopCopy = () => {
|
||||||
const
|
const versionFull = pkg.version,
|
||||||
versionFull = pkg.version,
|
dist = config.releasesPath + '/webmail/' + versionFull + '/src/';
|
||||||
dist = config.releasesPath + '/webmail/' + versionFull + '/src/'
|
|
||||||
;
|
|
||||||
|
|
||||||
fs.mkdirSync(dist, '0777', true);
|
fs.mkdirSync(dist, '0777', true);
|
||||||
fs.mkdirSync(dist + 'data');
|
fs.mkdirSync(dist + 'data');
|
||||||
fs.mkdirSync(dist + 'rainloop/v/' + versionFull, '0777', true);
|
fs.mkdirSync(dist + 'rainloop/v/' + versionFull, '0777', true);
|
||||||
|
|
||||||
return gulp.src('rainloop/v/' + config.devVersion + '/**/*', {base: 'rainloop/v/' + config.devVersion})
|
return gulp
|
||||||
|
.src('rainloop/v/' + config.devVersion + '/**/*', { base: 'rainloop/v/' + config.devVersion })
|
||||||
.pipe(chmod(0o644, 0o755))
|
.pipe(chmod(0o644, 0o755))
|
||||||
.pipe(gulp.dest(dist + 'rainloop/v/' + versionFull));
|
.pipe(gulp.dest(dist + 'rainloop/v/' + versionFull));
|
||||||
};
|
};
|
||||||
|
|
||||||
const rainloopSetup = (done) => {
|
const rainloopSetup = (done) => {
|
||||||
const
|
const versionFull = pkg.version,
|
||||||
versionFull = pkg.version,
|
dist = config.releasesPath + '/webmail/' + versionFull + '/src/';
|
||||||
dist = config.releasesPath + '/webmail/' + versionFull + '/src/'
|
|
||||||
;
|
|
||||||
|
|
||||||
fs.writeFileSync(dist + 'data/VERSION', versionFull);
|
fs.writeFileSync(dist + 'data/VERSION', versionFull);
|
||||||
fs.writeFileSync(dist + 'data/EMPTY', versionFull);
|
fs.writeFileSync(dist + 'data/EMPTY', versionFull);
|
||||||
|
|
||||||
fs.writeFileSync(dist + 'index.php', fs.readFileSync('index.php', 'utf8')
|
fs.writeFileSync(
|
||||||
.replace('\'APP_VERSION\', \'0.0.0\'', '\'APP_VERSION\', \'' + versionFull + '\'')
|
dist + 'index.php',
|
||||||
.replace('\'APP_VERSION_TYPE\', \'source\'', '\'APP_VERSION_TYPE\', \'' + (config.community ? 'community' : 'standard') + '\'')
|
fs
|
||||||
|
.readFileSync('index.php', 'utf8')
|
||||||
|
.replace("'APP_VERSION', '0.0.0'", "'APP_VERSION', '" + versionFull + "'")
|
||||||
|
.replace(
|
||||||
|
"'APP_VERSION_TYPE', 'source'",
|
||||||
|
"'APP_VERSION_TYPE', '" + (config.community ? 'community' : 'standard') + "'"
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
fs.writeFileSync(dist + 'rainloop/v/' + versionFull + '/index.php.root', fs.readFileSync(dist + 'index.php'));
|
fs.writeFileSync(dist + 'rainloop/v/' + versionFull + '/index.php.root', fs.readFileSync(dist + 'index.php'));
|
||||||
|
|
||||||
if (config.community)
|
if (config.community) {
|
||||||
{
|
|
||||||
require('rimraf').sync(dist + 'rainloop/v/' + versionFull + '/app/libraries/RainLoop/Providers/Prem.php');
|
require('rimraf').sync(dist + 'rainloop/v/' + versionFull + '/app/libraries/RainLoop/Providers/Prem.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,14 +73,6 @@ const rainloopClean = (done) => {
|
||||||
|
|
||||||
const rainloopShortName = (done) => copy(config.destPath + config.zipFile, config.destPath + config.zipFileShort, done);
|
const rainloopShortName = (done) => copy(config.destPath + config.zipFile, config.destPath + config.zipFileShort, done);
|
||||||
|
|
||||||
exports.rainloopBuild = gulp.series(
|
exports.rainloopBuild = gulp.series(rainloopCopy, rainloopSetup);
|
||||||
rainloopCopy,
|
|
||||||
rainloopSetup,
|
|
||||||
);
|
|
||||||
|
|
||||||
exports.rainloop = gulp.series(
|
exports.rainloop = gulp.series(exports.rainloopBuild, rainloopZip, rainloopClean, rainloopShortName);
|
||||||
exports.rainloopBuild,
|
|
||||||
rainloopZip,
|
|
||||||
rainloopClean,
|
|
||||||
rainloopShortName
|
|
||||||
);
|
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
|
||||||
const gulp = require('gulp'),
|
const gulp = require('gulp');
|
||||||
header = require('gulp-header'),
|
const header = require('gulp-header');
|
||||||
stripbom = require('gulp-stripbom');
|
const stripbom = require('gulp-stripbom');
|
||||||
|
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
const {del} = require('./common');
|
const { del } = require('./common');
|
||||||
|
|
||||||
// moment
|
// moment
|
||||||
const momentLocalesClear = () => del('rainloop/v/' + config.devVersion + '/app/localization/moment/*.js');
|
const momentLocalesClear = () => del('rainloop/v/' + config.devVersion + '/app/localization/moment/*.js');
|
||||||
|
|
||||||
const momentLocales = () =>
|
const momentLocales = () => gulp.src(config.paths.js.moment.locales).pipe(gulp.dest(config.paths.momentLocales));
|
||||||
gulp.src(config.paths.js.moment.locales)
|
|
||||||
.pipe(gulp.dest(config.paths.momentLocales));
|
|
||||||
|
|
||||||
const moment = gulp.series(momentLocalesClear, momentLocales);
|
const moment = gulp.series(momentLocalesClear, momentLocales);
|
||||||
|
|
||||||
|
@ -19,7 +17,8 @@ const moment = gulp.series(momentLocalesClear, momentLocales);
|
||||||
const lightgalleryFontsClear = () => del('rainloop/v/' + config.devVersion + '/static/css/fonts/lg.*');
|
const lightgalleryFontsClear = () => del('rainloop/v/' + config.devVersion + '/static/css/fonts/lg.*');
|
||||||
|
|
||||||
const lightgalleryFontsCopy = () =>
|
const lightgalleryFontsCopy = () =>
|
||||||
gulp.src('vendors/lightgallery/dist/fonts/lg.*')
|
gulp
|
||||||
|
.src('vendors/lightgallery/dist/fonts/lg.*')
|
||||||
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/css/fonts'));
|
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/css/fonts'));
|
||||||
|
|
||||||
const lightgallery = gulp.series(lightgalleryFontsClear, lightgalleryFontsCopy);
|
const lightgallery = gulp.series(lightgalleryFontsClear, lightgalleryFontsCopy);
|
||||||
|
@ -28,7 +27,8 @@ const lightgallery = gulp.series(lightgalleryFontsClear, lightgalleryFontsCopy);
|
||||||
const fontasticFontsClear = () => del('rainloop/v/' + config.devVersion + '/static/css/fonts/rainloop.*');
|
const fontasticFontsClear = () => del('rainloop/v/' + config.devVersion + '/static/css/fonts/rainloop.*');
|
||||||
|
|
||||||
const fontasticFontsCopy = () =>
|
const fontasticFontsCopy = () =>
|
||||||
gulp.src('vendors/fontastic/fonts/rainloop.*')
|
gulp
|
||||||
|
.src('vendors/fontastic/fonts/rainloop.*')
|
||||||
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/css/fonts'));
|
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/css/fonts'));
|
||||||
|
|
||||||
const fontastic = gulp.series(fontasticFontsClear, fontasticFontsCopy);
|
const fontastic = gulp.series(fontasticFontsClear, fontasticFontsCopy);
|
||||||
|
@ -37,18 +37,26 @@ const fontastic = gulp.series(fontasticFontsClear, fontasticFontsCopy);
|
||||||
const ckeditorClear = () => del('rainloop/v/' + config.devVersion + '/static/ckeditor');
|
const ckeditorClear = () => del('rainloop/v/' + config.devVersion + '/static/ckeditor');
|
||||||
|
|
||||||
const ckeditorCopy = () =>
|
const ckeditorCopy = () =>
|
||||||
gulp.src(['vendors/ckeditor/**/*', '!vendors/ckeditor/samples{,/**}', '!vendors/ckeditor/adapters{,/**}', '!vendors/ckeditor/*.md'])
|
gulp
|
||||||
|
.src([
|
||||||
|
'vendors/ckeditor/**/*',
|
||||||
|
'!vendors/ckeditor/samples{,/**}',
|
||||||
|
'!vendors/ckeditor/adapters{,/**}',
|
||||||
|
'!vendors/ckeditor/*.md'
|
||||||
|
])
|
||||||
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/ckeditor'));
|
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/ckeditor'));
|
||||||
|
|
||||||
const ckeditorCopyPlugins = () =>
|
const ckeditorCopyPlugins = () =>
|
||||||
gulp.src('vendors/ckeditor-plugins/**/*')
|
gulp
|
||||||
|
.src('vendors/ckeditor-plugins/**/*')
|
||||||
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/ckeditor/plugins'));
|
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/ckeditor/plugins'));
|
||||||
|
|
||||||
const ckeditorSetup = () =>
|
const ckeditorSetup = () =>
|
||||||
gulp.src('rainloop/v/' + config.devVersion + '/static/ckeditor/*.js')
|
gulp
|
||||||
|
.src('rainloop/v/' + config.devVersion + '/static/ckeditor/*.js')
|
||||||
.pipe(stripbom())
|
.pipe(stripbom())
|
||||||
// eslint-disable-next-line quotes
|
// eslint-disable-next-line quotes
|
||||||
.pipe(header("\uFEFF")) // BOM
|
.pipe(header('\uFEFF')) // BOM
|
||||||
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/ckeditor'));
|
.pipe(gulp.dest('rainloop/v/' + config.devVersion + '/static/ckeditor'));
|
||||||
|
|
||||||
const ckeditor = gulp.series(ckeditorClear, ckeditorCopy, ckeditorCopyPlugins, ckeditorSetup);
|
const ckeditor = gulp.series(ckeditorClear, ckeditorCopy, ckeditorCopyPlugins, ckeditorSetup);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const gutil = require('gulp-util');
|
const gutil = require('gulp-util');
|
||||||
|
|
||||||
const {config} = require('./config');
|
const { config } = require('./config');
|
||||||
|
|
||||||
const webpackCfgBuilder = require('../webpack.config.builder.js');
|
const webpackCfgBuilder = require('../webpack.config.builder.js');
|
||||||
|
|
||||||
|
@ -34,8 +34,5 @@ const webpackCallback = (done) => (err, stats) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.webpack = (done) => {
|
exports.webpack = (done) => {
|
||||||
webpack(
|
webpack(webpackCfgBuilder(config.paths.staticJS, !config.community, 'production'), webpackCallback(done));
|
||||||
webpackCfgBuilder(config.paths.staticJS, !config.community, 'production'),
|
|
||||||
webpackCallback(done)
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace MailSoTests;
|
|
||||||
|
|
||||||
class HtmlUtilsTest extends \PHPUnit_Framework_TestCase
|
|
||||||
{
|
|
||||||
public function testCommon()
|
|
||||||
{
|
|
||||||
$this->assertTrue(true);
|
|
||||||
$this->assertTrue(class_exists('\\RainLoop\\Api'));
|
|
||||||
$this->assertTrue(class_exists('\\MailSo\\Base\\HtmlUtils'));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testClearHtml()
|
|
||||||
{
|
|
||||||
$i = 0;
|
|
||||||
while (++$i < 3)
|
|
||||||
{
|
|
||||||
$this->assertEquals(file_get_contents(TEST_DATA_FOLDER."/html/{$i}-ok.html"),
|
|
||||||
\MailSo\Base\HtmlUtils::ClearHtmlSimple(file_get_contents(TEST_DATA_FOLDER."/html/{$i}.html"), false, false, false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,96 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace MailSoTests;
|
|
||||||
|
|
||||||
class LinkFinderTest extends \PHPUnit_Framework_TestCase
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var \MailSo\Base\LinkFinder
|
|
||||||
*/
|
|
||||||
protected $object;
|
|
||||||
|
|
||||||
protected function setUp()
|
|
||||||
{
|
|
||||||
$this->object = \MailSo\Base\LinkFinder::NewInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function tearDown()
|
|
||||||
{
|
|
||||||
$this->object = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testNewInstance()
|
|
||||||
{
|
|
||||||
$this->assertTrue($this->object instanceof \MailSo\Base\LinkFinder);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testClear()
|
|
||||||
{
|
|
||||||
$this->object->Text('111');
|
|
||||||
$this->assertEquals('111', $this->object->CompileText());
|
|
||||||
$this->object->Clear();
|
|
||||||
$this->assertEquals('', $this->object->CompileText());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testText()
|
|
||||||
{
|
|
||||||
$this->object->Text('222');
|
|
||||||
$this->assertEquals('222', $this->object->CompileText());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testLinkWrapper()
|
|
||||||
{
|
|
||||||
$this->object
|
|
||||||
->Text('333 http://domain.com 333')
|
|
||||||
->LinkWrapper(function ($sLink) {
|
|
||||||
return '!'.$sLink.'!';
|
|
||||||
})
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->assertEquals('333 !http://domain.com! 333', $this->object->CompileText());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testMailWrapper()
|
|
||||||
{
|
|
||||||
$this->object
|
|
||||||
->Text('444 user@domain.com 444')
|
|
||||||
->MailWrapper(function ($sMail) {
|
|
||||||
return '!'.$sMail.'!';
|
|
||||||
})
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->assertEquals('444 !user@domain.com! 444', $this->object->CompileText());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testUseDefaultWrappers()
|
|
||||||
{
|
|
||||||
$this->object
|
|
||||||
->Text('555 http://domain.com user@domain.com 555')
|
|
||||||
->UseDefaultWrappers()
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->assertEquals('555 <a href="http://domain.com">http://domain.com</a> <a href="mailto:user@domain.com">user@domain.com</a> 555',
|
|
||||||
$this->object->CompileText());
|
|
||||||
|
|
||||||
$this->object->UseDefaultWrappers(true);
|
|
||||||
|
|
||||||
$this->assertEquals('555 <a target="_blank" href="http://domain.com">http://domain.com</a> <a target="_blank" href="mailto:user@domain.com">user@domain.com</a> 555',
|
|
||||||
$this->object->CompileText());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCompileText()
|
|
||||||
{
|
|
||||||
$this->object
|
|
||||||
->Text('777 http://domain.com domain.com user@domain.com <> 777')
|
|
||||||
->LinkWrapper(function ($sLink) {
|
|
||||||
return '~'.$sLink.'~';
|
|
||||||
})
|
|
||||||
->MailWrapper(function ($sMail) {
|
|
||||||
return '~'.$sMail.'~';
|
|
||||||
})
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->assertEquals('777 ~http://domain.com~ domain.com ~user@domain.com~ <> 777', $this->object->CompileText(true));
|
|
||||||
$this->assertEquals('777 ~http://domain.com~ domain.com ~user@domain.com~ <> 777', $this->object->CompileText(false));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,85 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace MailSoTests;
|
|
||||||
|
|
||||||
class ImapClientTest extends \PHPUnit_Framework_TestCase
|
|
||||||
{
|
|
||||||
const CRLF = "\r\n";
|
|
||||||
|
|
||||||
public function testNamespace()
|
|
||||||
{
|
|
||||||
$rConnect = \MailSo\Base\StreamWrappers\Test::CreateStream(
|
|
||||||
'* NAMESPACE (("" "/")) NIL NIL'.self::CRLF.
|
|
||||||
'TAG1 OK Success'.self::CRLF
|
|
||||||
);
|
|
||||||
|
|
||||||
$oImapClient = \MailSo\Imap\ImapClient::NewInstance()->TestSetValues($rConnect, array('NAMESPACE'));
|
|
||||||
$oResult = $oImapClient->GetNamespace();
|
|
||||||
|
|
||||||
$this->assertTrue($oResult instanceof \MailSo\Imap\NamespaceResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testQuota()
|
|
||||||
{
|
|
||||||
$rConnect = \MailSo\Base\StreamWrappers\Test::CreateStream(
|
|
||||||
'* QUOTAROOT "INBOX" ""'.self::CRLF.
|
|
||||||
'* QUOTA "" (STORAGE 55163 10511217)'.self::CRLF.
|
|
||||||
'TAG1 OK Success'.self::CRLF
|
|
||||||
);
|
|
||||||
|
|
||||||
$oImapClient = \MailSo\Imap\ImapClient::NewInstance()->TestSetValues($rConnect, array('QUOTA'));
|
|
||||||
|
|
||||||
$aResult = $oImapClient->Quota();
|
|
||||||
$this->assertTrue(is_array($aResult));
|
|
||||||
$this->assertEquals(4, count($aResult));
|
|
||||||
$this->assertEquals(55163, $aResult[0]);
|
|
||||||
$this->assertEquals(10511217, $aResult[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testFolderList()
|
|
||||||
{
|
|
||||||
$rConnect = \MailSo\Base\StreamWrappers\Test::CreateStream(
|
|
||||||
'* LIST (\Noselect) "/" 0'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked) "/" 0/1'.self::CRLF.
|
|
||||||
'* LIST (\Noselect) "/" 1'.self::CRLF.
|
|
||||||
'* LIST (\Noselect) "/" 1/2'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked) "/" 1/2/3'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked \Inbox) "/" INBOX'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked) "/" "INBOX/XXX XXX"'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked) "/" &-BT,MAQBDoEM'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked) "NIL" NILDelimiteFolder'.self::CRLF.
|
|
||||||
'* LIST (\UnMarked) "" EmptyDelimiteFolder'.self::CRLF.
|
|
||||||
'TAG1 OK Success'.self::CRLF
|
|
||||||
);
|
|
||||||
|
|
||||||
$oImapClient = \MailSo\Imap\ImapClient::NewInstance()->TestSetValues($rConnect);
|
|
||||||
|
|
||||||
$aResult = $oImapClient->FolderList();
|
|
||||||
$this->assertTrue(is_array($aResult) && 0 < count($aResult));
|
|
||||||
$this->assertTrue($aResult[0] instanceof \MailSo\Imap\Folder);
|
|
||||||
|
|
||||||
$this->assertEquals('0', $aResult[0]->FullNameRaw());
|
|
||||||
$this->assertEquals('0', $aResult[0]->NameRaw());
|
|
||||||
$this->assertEquals('0/1', $aResult[1]->FullNameRaw());
|
|
||||||
$this->assertEquals('1', $aResult[1]->NameRaw());
|
|
||||||
$this->assertEquals('1', $aResult[2]->FullNameRaw());
|
|
||||||
$this->assertEquals('1/2', $aResult[3]->FullNameRaw());
|
|
||||||
$this->assertEquals('1/2/3', $aResult[4]->FullNameRaw());
|
|
||||||
$this->assertEquals('3', $aResult[4]->NameRaw());
|
|
||||||
$this->assertEquals('INBOX', $aResult[5]->FullNameRaw());
|
|
||||||
$this->assertEquals('INBOX/XXX XXX', $aResult[6]->FullNameRaw());
|
|
||||||
$this->assertEquals('XXX XXX', $aResult[6]->NameRaw());
|
|
||||||
$this->assertEquals('&-BT,MAQBDoEM', $aResult[7]->FullNameRaw());
|
|
||||||
|
|
||||||
$this->assertTrue($aResult[5] instanceof \MailSo\Imap\Folder);
|
|
||||||
$this->assertEquals('/', $aResult[5]->Delimiter());
|
|
||||||
$this->assertEquals(2, count($aResult[5]->FlagsLowerCase()));
|
|
||||||
$this->assertTrue(in_array('\inbox', $aResult[5]->FlagsLowerCase()));
|
|
||||||
|
|
||||||
$this->assertTrue($aResult[8] instanceof \MailSo\Imap\Folder);
|
|
||||||
$this->assertEquals('.', $aResult[8]->Delimiter());
|
|
||||||
|
|
||||||
$this->assertTrue($aResult[9] instanceof \MailSo\Imap\Folder);
|
|
||||||
$this->assertEquals('.', $aResult[8]->Delimiter());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace MailSoTests;
|
|
||||||
|
|
||||||
class EmailCollectionTest extends \PHPUnit_Framework_TestCase
|
|
||||||
{
|
|
||||||
public function testNewInstance()
|
|
||||||
{
|
|
||||||
$oMails = \MailSo\Mime\EmailCollection::NewInstance('admin@example.com');
|
|
||||||
$this->assertEquals(1, $oMails->Count());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testNewInstance1()
|
|
||||||
{
|
|
||||||
$oMails = \MailSo\Mime\EmailCollection::NewInstance('User Name <username@domain.com>, User D\'Name <username@domain.com>, "User Name" <username@domain.com>');
|
|
||||||
$this->assertEquals(3, $oMails->Count());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,127 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace MailSoTests;
|
|
||||||
|
|
||||||
class EmailTest extends \PHPUnit_Framework_TestCase
|
|
||||||
{
|
|
||||||
public function testNewInstance()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::NewInstance('admin@example.com', 'Administrator');
|
|
||||||
$this->assertEquals('admin@example.com', $oMail->GetEmail());
|
|
||||||
$this->assertEquals('Administrator', $oMail->GetDisplayName());
|
|
||||||
$this->assertEquals('admin', $oMail->GetAccountName());
|
|
||||||
$this->assertEquals('example.com', $oMail->GetDomain());
|
|
||||||
$this->assertEquals('"Administrator" <admin@example.com>', $oMail->ToString());
|
|
||||||
$this->assertEquals(array('Administrator', 'admin@example.com', 'none', ''), $oMail->ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testNewInstance1()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::NewInstance('admin@example.com');
|
|
||||||
$this->assertEquals('admin@example.com', $oMail->GetEmail());
|
|
||||||
$this->assertEquals('', $oMail->GetDisplayName());
|
|
||||||
$this->assertEquals('admin@example.com', $oMail->ToString());
|
|
||||||
$this->assertEquals(array('', 'admin@example.com', 'none', ''), $oMail->ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testNewInstance2()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::NewInstance('admin@example.com', 'Administrator');
|
|
||||||
$this->assertEquals('admin@example.com', $oMail->GetEmail());
|
|
||||||
$this->assertEquals('Administrator', $oMail->GetDisplayName());
|
|
||||||
$this->assertEquals('"Administrator" <admin@example.com>', $oMail->ToString());
|
|
||||||
$this->assertEquals(array('Administrator', 'admin@example.com', 'none', ''), $oMail->ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testNewInstance3()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::NewInstance('admin@example.com', '');
|
|
||||||
$this->assertEquals('admin@example.com', $oMail->GetEmail());
|
|
||||||
$this->assertEquals('', $oMail->GetDisplayName());
|
|
||||||
$this->assertEquals('admin@example.com', $oMail->ToString());
|
|
||||||
$this->assertEquals(array('', 'admin@example.com', 'none', ''), $oMail->ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @expectedException \MailSo\Base\Exceptions\InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function testNewInstance4()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::NewInstance('');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testParse1()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::Parse('help@example.com');
|
|
||||||
$this->assertEquals('help@example.com', $oMail->GetEmail());
|
|
||||||
|
|
||||||
$oMail = \MailSo\Mime\Email::Parse('<help@example.com>');
|
|
||||||
$this->assertEquals('help@example.com', $oMail->GetEmail());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testParse2()
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::Parse('"Тест" <help@example.com>');
|
|
||||||
$this->assertEquals('"Тест" <help@example.com>', $oMail->ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function providerForParse()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
array('test <help@example.com>',
|
|
||||||
array('test', 'help@example.com')),
|
|
||||||
array('test<help@example.com>',
|
|
||||||
array('test', 'help@example.com')),
|
|
||||||
array('test< help@example.com >',
|
|
||||||
array('test', 'help@example.com')),
|
|
||||||
array('"New \" Admin" <help@example.com>',
|
|
||||||
array('New " Admin', 'help@example.com')),
|
|
||||||
array('"Тест" <help@example.com>',
|
|
||||||
array('Тест', 'help@example.com')),
|
|
||||||
array('Microsoft Outlook<MicrosoftExchange329e71ec88ae4615bbc36ab6ce41109e@PPTH.PRIVATE>',
|
|
||||||
array('Microsoft Outlook', 'MicrosoftExchange329e71ec88ae4615bbc36ab6ce41109e@ppth.private')),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function providerForParse2()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
array('help@xn--d1abbgf6aiiy.xn--p1ai',
|
|
||||||
array('', 'help@президент.рф')),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerForParse
|
|
||||||
*/
|
|
||||||
public function testParseWithProvider($sValue, $aResult)
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::Parse($sValue);
|
|
||||||
$this->assertEquals($aResult, $oMail->ToArray(false, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerForParse2
|
|
||||||
*/
|
|
||||||
public function testParseWithProvider2($sValue, $aResult)
|
|
||||||
{
|
|
||||||
$oMail = \MailSo\Mime\Email::Parse($sValue);
|
|
||||||
$this->assertEquals($aResult, $oMail->ToArray(true, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @expectedException \MailSo\Base\Exceptions\InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function testParse5()
|
|
||||||
{
|
|
||||||
\MailSo\Mime\Email::Parse('');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @expectedException \MailSo\Base\Exceptions\InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function testParse6()
|
|
||||||
{
|
|
||||||
\MailSo\Mime\Email::Parse('example.com');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
define('TEST_DATA_FOLDER', __DIR__.'/data');
|
|
||||||
|
|
||||||
$_ENV['RAINLOOP_INCLUDE_AS_API'] = true;
|
|
||||||
include __DIR__.'/../index.php';
|
|
|
@ -1 +0,0 @@
|
||||||
123
|
|
|
@ -1,11 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style type="text/css">
|
|
||||||
body {color:red}
|
|
||||||
p {margin:0; padding:0}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
123
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1 +0,0 @@
|
||||||
123
|
|
|
@ -1,12 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style type="text/css">
|
|
||||||
body {color:red}
|
|
||||||
p {margin:0; padding:0}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
123
|
|
||||||
<script>alert(1)</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,232 +0,0 @@
|
||||||
MIME-Version: 1.0
|
|
||||||
Message-ID: <45a92f7.0e89f233c32fbd2b9d191d4cb28775c9@domain.com>
|
|
||||||
From: from@domain.com
|
|
||||||
To: test@domain.com
|
|
||||||
Subject: TEST HTML MESSAGE WITH ATTACHMENT
|
|
||||||
Date: Thu, 6 May 2010 07:26:37 -0700 (PDT)
|
|
||||||
Content-Type: multipart/mixed;
|
|
||||||
boundary="--=_NextPart_11de424d3d872ac110be4ecfffc45411"
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411
|
|
||||||
Content-Type: text/html;
|
|
||||||
charset="utf-8"
|
|
||||||
Content-Transfer-Encoding: Quoted-Printable
|
|
||||||
|
|
||||||
<html><body>TEST HTML MESSAGE WITH ATTACHMENT</body></html>
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411
|
|
||||||
Content-Type: image/gif;
|
|
||||||
name="av-7.gif"
|
|
||||||
Content-Transfer-Encoding: base64
|
|
||||||
Content-Disposition: attachment;
|
|
||||||
filename="av-7.gif"
|
|
||||||
|
|
||||||
R0lGODdhMgAyAOfXAAAAADMAAGYAAJkAAMwAAP8AAAAzADMzAGYzAJkzAMwzAP8zAABmADNmAGZm
|
|
||||||
AJlmAMxmAP9mAACZADOZAGaZAJmZAMyZAP+ZAADMADPMAGbMAJnMAMzMAP/MAAD/ADP/AGb/AJn/
|
|
||||||
AMz/AP//AAAAMzMAM2YAM5kAM8wAM/8AMwAzMzMzM2YzM5kzM8wzM/8zMwBmMzNmM2ZmM5lmM8xm
|
|
||||||
M/9mMwCZMzOZM2aZM5mZM8yZM/+ZMwDMMzPMM2bMM5nMM8zMM//MMwD/MzP/M2b/M5n/M8z/M///
|
|
||||||
MwAAZjMAZmYAZpkAZswAZv8AZgAzZjMzZmYzZpkzZswzZv8zZgBmZjNmZmZmZplmZsxmZv9mZgCZ
|
|
||||||
ZjOZZmaZZpmZZsyZZv+ZZgDMZjPMZmbMZpnMZszMZv/MZgD/ZjP/Zmb/Zpn/Zsz/Zv//ZgAAmTMA
|
|
||||||
mWYAmZkAmcwAmf8AmQAzmTMzmWYzmZkzmcwzmf8zmQBmmTNmmWZmmZlmmcxmmf9mmQCZmTOZmWaZ
|
|
||||||
mZmZmcyZmf+ZmQDMmTPMmWbMmZnMmczMmf/MmQD/mTP/mWb/mZn/mcz/mf//mQAAzDMAzGYAzJkA
|
|
||||||
zMwAzP8AzAAzzDMzzGYzzJkzzMwzzP8zzABmzDNmzGZmzJlmzMxmzP9mzACZzDOZzGaZzJmZzMyZ
|
|
||||||
zP+ZzADMzDPMzGbMzJnMzMzMzP/MzAD/zDP/zGb/zJn/zMz/zP//zAAA/zMA/2YA/5kA/8wA//8A
|
|
||||||
/wAz/zMz/2Yz/5kz/8wz//8z/wBm/zNm/2Zm/5lm/8xm//9m/wCZ/zOZ/2aZ/5mZ/8yZ//+Z/wDM
|
|
||||||
/zPM/2bM/5nM/8zM///M/wD//zP//2b//5n//8z//////////wAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEA
|
|
||||||
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
|
|
||||||
IUMkPQhhTMlNSFBCRa12oEceJajhThKpZFNAADs=
|
|
||||||
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411--
|
|
||||||
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
MIME-Version: 1.0
|
|
||||||
From: test@domain.com
|
|
||||||
To: test@domain.com
|
|
||||||
Subject: TEST MESSAGE
|
|
||||||
Content-Type: text/plain; charset="UTF-8"
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Date: Wed, 28 Apr 2010 02:04:20 -0700
|
|
||||||
Message-ID: <16800462619664130307453@TEST-TEST>
|
|
||||||
|
|
||||||
TEST
|
|
||||||
|
|
||||||
.
|
|
||||||
|
|
||||||
. MESSGAE
|
|
||||||
|
|
||||||
BODY
|
|
|
@ -1,18 +0,0 @@
|
||||||
Envelope-to: webmail@test.com
|
|
||||||
Delivery-date: Tue, 15 Jun 2010 22:48:56 -0700
|
|
||||||
Received: from [84.51.195.105] (helo=workstation5.dom2.local)
|
|
||||||
by mail.test.com with esmtpa (Exim 4.71)
|
|
||||||
(envelope-from <sss@test.com>)
|
|
||||||
id 1OOlUe-0002EQ-IJ
|
|
||||||
for webmail@test.com; Tue, 15 Jun 2010 22:48:56 -0700
|
|
||||||
Date: Wed, 16 Jun 2010 09:48:42 +0400
|
|
||||||
From: sss <sss@test.com>
|
|
||||||
X-Mailer: The Bat! (v4.0.24) Professional
|
|
||||||
Reply-To: sss <sss@test.com>
|
|
||||||
X-Priority: 3 (Normal)
|
|
||||||
Message-ID: <708372127.20100616094842@test.com>
|
|
||||||
To: webmail@test.com
|
|
||||||
Subject: =?iso-8859-5?B?v+DY4eLj39DvIA==?= =?iso-8859-5?B?2iDg0NHe4tUg4Q==?= =?iso-8859-5?B?3iDh2+PW0d7ZIA==?= =?iso-8859-5?B?V2luZG93cyBMaQ==?= =?iso-8859-5?B?dmUgSG90bWFpbA==?=
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=windows-1251
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
|
@ -1,55 +0,0 @@
|
||||||
MIME-Version: 1.0
|
|
||||||
Message-ID: <45a92f7.0e89f233c32fbd2b9d191d4cb28775c9@domain.com>
|
|
||||||
From: from@domain.com
|
|
||||||
To: test@domain.com
|
|
||||||
Subject: TEST HTML MESSAGE WITH ATTACHMENT
|
|
||||||
Date: Thu, 6 May 2010 07:26:37 -0700 (PDT)
|
|
||||||
Content-Type: multipart/mixed;
|
|
||||||
boundary="--=_NextPart_11de424d3d872ac110be4ecfffc45411"
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411
|
|
||||||
Content-Type: text/html;
|
|
||||||
charset="utf-8"
|
|
||||||
Content-Transfer-Encoding: Quoted-Printable
|
|
||||||
|
|
||||||
<html><body>TEST HTML MESSAGE WITH ATTACHMENT</body></html>
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411
|
|
||||||
Content-Type: image/gif;
|
|
||||||
name="av-7.gif"
|
|
||||||
Content-Transfer-Encoding: base64
|
|
||||||
Content-Disposition: attachment;
|
|
||||||
filename="av-7.gif"
|
|
||||||
|
|
||||||
R0lGODdhMgAyAOfXAAAAADMAAGYAAJkAAMwAAP8AAAAzADMzAGYzAJkzAMwzAP8zAABmADNmAGZm
|
|
||||||
AJlmAMxmAP9mAACZADOZAGaZAJmZAMyZAP+ZAADMADPMAGbMAJnMAMzMAP/MAAD/ADP/AGb/AJn/
|
|
||||||
AMz/AP//AAAAMzMAM2YAM5kAM8wAM/8AMwAzMzMzM2YzM5kzM8wzM/8zMwBmMzNmM2ZmM5lmM8xm
|
|
||||||
JkGbFiixJtrNgEcjNIo0ocmUcmc33Viyo9qSKnOzrTmx89CTGmUv5zm4NUiyPD02ZkVZtEvGnmVU
|
|
||||||
whaJcCZdn0/NYpzsPHxQkF/lPk0PNepOtFeFduwKVqPd2QZdB2BDOZk3oEObHeiQTAqG5l2DBHEH
|
|
||||||
IUMkPQhhTMlNSFBCRa12oEceJajhThKpZFNAADs=
|
|
||||||
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411
|
|
||||||
Content-Type: image/gif;
|
|
||||||
Content-Transfer-Encoding: base64
|
|
||||||
|
|
||||||
R0lGODdhMgAyAOfXAAAAADMAAGYAAJkAAMwAAP8AAAAzADMzAGYzAJkzAMwzAP8zAABmADNmAGZm
|
|
||||||
AJlmAMxmAP9mAACZADOZAGaZAJmZAMyZAP+ZAADMADPMAGbMAJnMAMzMAP/MAAD/ADP/AGb/AJn/
|
|
||||||
AMz/AP//AAAAMzMAM2YAM5kAM8wAM/8AMwAzMzMzM2YzM5kzM8wzM/8zMwBmMzNmM2ZmM5lmM8xm
|
|
||||||
JkGbFiixJtrNgEcjNIo0ocmUcmc33Viyo9qSKnOzrTmx89CTGmUv5zm4NUiyPD02ZkVZtEvGnmVU
|
|
||||||
whaJcCZdn0/NYpzsPHxQkF/lPk0PNepOtFeFduwKVqPd2QZdB2BDOZk3oEObHeiQTAqG5l2DBHEH
|
|
||||||
IUMkPQhhTMlNSFBCRa12oEceJajhThKpZFNAADs=
|
|
||||||
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411
|
|
||||||
Content-Type: image/png
|
|
||||||
Content-Transfer-Encoding: Quoted-Printable
|
|
||||||
Content-Disposition: attachment;
|
|
||||||
filename*0*=111; filename*1*=222.gif;
|
|
||||||
|
|
||||||
<html><body>TEST HTML MESSAGE WITH ATTACHMENT</body></html>
|
|
||||||
|
|
||||||
|
|
||||||
----=_NextPart_11de424d3d872ac110be4ecfffc45411--
|
|
||||||
|
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
From: alex1 <alex1@omninet.local>
|
|
||||||
To: alex1 <alex1@OMNINET.LOCAL>
|
|
||||||
Date: Thu, 22 Nov 2012 09:42:17 +0100
|
|
||||||
Subject:
|
|
||||||
-------1---------2---------3---------4---------5---------1---------2---------3---------4---------5---------1---------2---------3---------4---------5---------1---------2---------3---------4---------5---------1---------2---------3---------4---------5----...
|
|
||||||
Thread-Topic:
|
|
||||||
-------1---------2---------3---------4---------5---------1---------2---------3---------4---------5---------1---------2---------3---------4---------5---------1---------2---------3---------4---------5---------1---------2---------3---------4---------5----...
|
|
||||||
Message-ID: <50ADE569.2000807@omninet.local>
|
|
||||||
Accept-Language: de-DE
|
|
||||||
Content-Language: de-DE
|
|
||||||
X-MS-Has-Attach:
|
|
||||||
X-MS-TNEF-Correlator:
|
|
||||||
user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121026
|
|
||||||
Thunderbird/16.0.2
|
|
||||||
Content-Type: multipart/alternative;
|
|
||||||
boundary="_000_50ADE5692000807omninetlocal_"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
|
|
||||||
--_000_50ADE5692000807omninetlocal_
|
|
||||||
Content-Type: text/plain; charset="iso-8859-15"
|
|
||||||
Content-Transfer-Encoding: quoted-printable
|
|
||||||
|
|
||||||
Test
|
|
||||||
-------1---------2---------3---------4---------5---------1---------2-------=
|
|
||||||
--3---------4---------5---------1---------2---------3---------4---------5--=
|
|
||||||
-------1---------2---------3---------4---------5---------1---------2-------=
|
|
||||||
--3---------4---------5---------1---------2---------3---------4---------5--
|
|
||||||
|
|
||||||
--_000_50ADE5692000807omninetlocal_
|
|
||||||
Content-Type: text/html; charset="iso-8859-15"
|
|
||||||
Content-Transfer-Encoding: quoted-printable
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta http-equiv=3D"content-type" content=3D"text/html; charset=3DISO-8=
|
|
||||||
859-15">
|
|
||||||
</head>
|
|
||||||
<body bgcolor=3D"#FFFFFF" text=3D"#000000">
|
|
||||||
Test<br>
|
|
||||||
<meta http-equiv=3D"Content-Type" content=3D"text/html;
|
|
||||||
charset=3DISO-8859-15">
|
|
||||||
<span>-------1---------2---------3---------4---------5---------1-------=
|
|
||||||
--2---------3---------4---------5---------1---------2---------3---------4--=
|
|
||||||
-------5---------1---------2---------3---------4---------5---------1-------=
|
|
||||||
--2---------3---------4---------5---------1---------2---------3---------4--=
|
|
||||||
-------5--</span>
|
|
||||||
<title>HTML clipboard</title>
|
|
||||||
<meta http-equiv=3D"Content-Type" content=3D"text/html;
|
|
||||||
charset=3DISO-8859-15">
|
|
||||||
<title>HTML clipboard</title>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
--_000_50ADE5692000807omninetlocal_--
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
# phantomjs
|
|
||||||
phantomjs --webdriver=4444
|
|
||||||
|
|
||||||
# codecept
|
|
||||||
codeceptjs run
|
|
|
@ -1,18 +0,0 @@
|
||||||
|
|
||||||
var cfg = require('./configuration');
|
|
||||||
|
|
||||||
exports.config = {
|
|
||||||
"tests": "./tests/*_test.js",
|
|
||||||
"timeout": 10000,
|
|
||||||
"output": "./output",
|
|
||||||
"helpers": {
|
|
||||||
"WebDriverIO": {
|
|
||||||
"url": cfg.url,
|
|
||||||
"browser": "phantomjs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"include": {},
|
|
||||||
"bootstrap": false,
|
|
||||||
"mocha": {},
|
|
||||||
"name": "RainLoop e2e tests"
|
|
||||||
};
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
url: 'http://rainloop.domain.com/',
|
|
||||||
user: 'user"domain.com',
|
|
||||||
pass: '12345'
|
|
||||||
};
|
|
|
@ -1,30 +0,0 @@
|
||||||
|
|
||||||
Feature('login');
|
|
||||||
|
|
||||||
Before(function(I) {
|
|
||||||
I.amOnPage('/');
|
|
||||||
I.resizeWindow(1000, 1000);
|
|
||||||
I.waitForElement('.e-powered', 10);
|
|
||||||
});
|
|
||||||
|
|
||||||
Scenario('login/page', function(I) {
|
|
||||||
I.see('Powered by RainLoop', '.e-powered');
|
|
||||||
I.see('Remember Me');
|
|
||||||
});
|
|
||||||
|
|
||||||
Scenario('login/auth-error', function(I) {
|
|
||||||
I.fillField('.inputEmail', 'xxx');
|
|
||||||
I.fillField('.inputPassword', 'yyy');
|
|
||||||
I.click('.login-submit-icon');
|
|
||||||
I.waitForVisible('.alertError', 3);
|
|
||||||
I.see('Authentication failed', '.alertError');
|
|
||||||
});
|
|
||||||
|
|
||||||
Scenario('login/language-popup', function(I) {
|
|
||||||
I.click('.flag-name');
|
|
||||||
I.wait(1);
|
|
||||||
I.see('Choose your language', '.b-languages-content');
|
|
||||||
I.click('.close', '.b-languages-content');
|
|
||||||
I.wait(1);
|
|
||||||
I.dontSee('Choose your language');
|
|
||||||
});
|
|
|
@ -1,25 +0,0 @@
|
||||||
|
|
||||||
var cfg = require('../configuration');
|
|
||||||
|
|
||||||
Feature('mailbox');
|
|
||||||
|
|
||||||
Before((I) => {
|
|
||||||
I.amOnPage('/');
|
|
||||||
I.resizeWindow(1000, 1000);
|
|
||||||
I.waitForElement('.e-powered', 10);
|
|
||||||
I.fillField('.inputEmail', cfg.user);
|
|
||||||
I.fillField('.inputPassword', cfg.pass);
|
|
||||||
I.click('.login-submit-icon');
|
|
||||||
I.waitForText('test@rainloop.de', 10, '.accountPlace');
|
|
||||||
I.resizeWindow(1000, 1000);
|
|
||||||
});
|
|
||||||
|
|
||||||
Scenario('mailbox/main', (I) => {
|
|
||||||
I.see('Select message in list to view it here.');
|
|
||||||
I.see('Inbox', '.b-folders-system');
|
|
||||||
|
|
||||||
I.click('#top-system-dropdown-id');
|
|
||||||
I.see('Logout', '.RL-SystemDropDown');
|
|
||||||
I.click('Logout', '.RL-SystemDropDown');
|
|
||||||
I.waitForText('Powered by RainLoop', 10, '.e-powered');
|
|
||||||
});
|
|
|
@ -1,40 +1,46 @@
|
||||||
|
const path = require('path');
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||||
|
|
||||||
const
|
const devPath = path.resolve(__dirname, 'dev');
|
||||||
path = require('path'),
|
const devPathJoin = path.join(__dirname, 'dev');
|
||||||
webpack = require('webpack'),
|
const externalPathJoin = path.join(__dirname, 'dev', 'External');
|
||||||
|
const loose = true;
|
||||||
CopyWebpackPlugin = require('copy-webpack-plugin'),
|
|
||||||
|
|
||||||
devPath = path.resolve(__dirname, 'dev'),
|
|
||||||
devPathJoin = path.join(__dirname, 'dev'),
|
|
||||||
externalPathJoin = path.join(__dirname, 'dev', 'External'),
|
|
||||||
loose = true;
|
|
||||||
|
|
||||||
const babelLoaderOptions = function() {
|
const babelLoaderOptions = function() {
|
||||||
return {
|
return {
|
||||||
ignore: [
|
ignore: [/\/core-js/],
|
||||||
/\/core-js/
|
|
||||||
],
|
|
||||||
cacheDirectory: true,
|
cacheDirectory: true,
|
||||||
overrides: [{
|
overrides: [
|
||||||
test: './node_modules/',
|
{
|
||||||
sourceType: 'unambiguous'
|
test: './node_modules/',
|
||||||
}],
|
sourceType: 'unambiguous'
|
||||||
|
}
|
||||||
|
],
|
||||||
presets: [
|
presets: [
|
||||||
['@babel/preset-env', {
|
[
|
||||||
useBuiltIns: 'usage',
|
'@babel/preset-env',
|
||||||
corejs: {version: 3, proposals: true},
|
{
|
||||||
loose: loose,
|
useBuiltIns: 'usage',
|
||||||
modules: false
|
corejs: { version: 3, proposals: true },
|
||||||
}]
|
loose: loose,
|
||||||
|
modules: false
|
||||||
|
}
|
||||||
|
]
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
['@babel/plugin-transform-runtime', {
|
[
|
||||||
corejs: 3
|
'@babel/plugin-transform-runtime',
|
||||||
}],
|
{
|
||||||
['@babel/plugin-proposal-decorators', {
|
corejs: 3
|
||||||
legacy: true
|
}
|
||||||
}],
|
],
|
||||||
|
[
|
||||||
|
'@babel/plugin-proposal-decorators',
|
||||||
|
{
|
||||||
|
legacy: true
|
||||||
|
}
|
||||||
|
],
|
||||||
'@babel/plugin-proposal-class-properties'
|
'@babel/plugin-proposal-class-properties'
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@ -44,6 +50,7 @@ process.noDeprecation = true;
|
||||||
module.exports = function(publicPath, pro, mode) {
|
module.exports = function(publicPath, pro, mode) {
|
||||||
return {
|
return {
|
||||||
mode: mode || 'development',
|
mode: mode || 'development',
|
||||||
|
devtool: 'inline-source-map',
|
||||||
entry: {
|
entry: {
|
||||||
'js/polyfills': path.join(devPathJoin, 'polyfills.js'),
|
'js/polyfills': path.join(devPathJoin, 'polyfills.js'),
|
||||||
'js/boot': path.join(devPathJoin, 'boot.js'),
|
'js/boot': path.join(devPathJoin, 'boot.js'),
|
||||||
|
@ -71,11 +78,10 @@ module.exports = function(publicPath, pro, mode) {
|
||||||
NODE_ENV: JSON.stringify('production')
|
NODE_ENV: JSON.stringify('production')
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({}),
|
||||||
}),
|
|
||||||
new CopyWebpackPlugin([
|
new CopyWebpackPlugin([
|
||||||
{from: 'node_modules/openpgp/dist/openpgp.min.js', to: 'js/min/openpgp.min.js'},
|
{ from: 'node_modules/openpgp/dist/openpgp.min.js', to: 'js/min/openpgp.min.js' },
|
||||||
{from: 'node_modules/openpgp/dist/openpgp.worker.min.js', to: 'js/min/openpgp.worker.min.js'}
|
{ from: 'node_modules/openpgp/dist/openpgp.worker.min.js', to: 'js/min/openpgp.worker.min.js' }
|
||||||
])
|
])
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
|
|
||||||
module.exports = require('./webpack.config.builder')();
|
module.exports = require('./webpack.config.builder')();
|
||||||
|
|
234
yarn.lock
234
yarn.lock
|
@ -720,6 +720,25 @@
|
||||||
lodash "^4.17.11"
|
lodash "^4.17.11"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@gulp-sourcemaps/identity-map@1.X":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9"
|
||||||
|
integrity sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==
|
||||||
|
dependencies:
|
||||||
|
acorn "^5.0.3"
|
||||||
|
css "^2.2.1"
|
||||||
|
normalize-path "^2.1.1"
|
||||||
|
source-map "^0.6.0"
|
||||||
|
through2 "^2.0.3"
|
||||||
|
|
||||||
|
"@gulp-sourcemaps/map-sources@1.X":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda"
|
||||||
|
integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o=
|
||||||
|
dependencies:
|
||||||
|
normalize-path "^2.0.1"
|
||||||
|
through2 "^2.0.3"
|
||||||
|
|
||||||
"@types/minimatch@^3.0.3":
|
"@types/minimatch@^3.0.3":
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
||||||
|
@ -892,6 +911,11 @@ acorn-jsx@^5.0.0:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
|
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
|
||||||
|
|
||||||
|
acorn@5.X, acorn@^5.0.3:
|
||||||
|
version "5.7.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
|
||||||
|
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
|
||||||
|
|
||||||
acorn@^6.0.5:
|
acorn@^6.0.5:
|
||||||
version "6.0.6"
|
version "6.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.6.tgz#cd75181670d5b99bdb1b1c993941d3a239ab1f56"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.6.tgz#cd75181670d5b99bdb1b1c993941d3a239ab1f56"
|
||||||
|
@ -1822,7 +1846,7 @@ continuable-cache@^0.3.1:
|
||||||
version "0.3.1"
|
version "0.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f"
|
resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f"
|
||||||
|
|
||||||
convert-source-map@^1.1.0, convert-source-map@^1.5.0:
|
convert-source-map@1.X, convert-source-map@^1.1.0, convert-source-map@^1.5.0:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
|
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -1968,6 +1992,16 @@ css-loader@3.0.0:
|
||||||
postcss-value-parser "^4.0.0"
|
postcss-value-parser "^4.0.0"
|
||||||
schema-utils "^1.0.0"
|
schema-utils "^1.0.0"
|
||||||
|
|
||||||
|
css@2.X, css@^2.2.1:
|
||||||
|
version "2.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
|
||||||
|
integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.3"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
source-map-resolve "^0.5.2"
|
||||||
|
urix "^0.1.0"
|
||||||
|
|
||||||
cssesc@^3.0.0:
|
cssesc@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||||
|
@ -1998,18 +2032,27 @@ dateformat@^2.0.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
|
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
|
||||||
|
|
||||||
|
debug-fabulous@1.X:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e"
|
||||||
|
integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==
|
||||||
|
dependencies:
|
||||||
|
debug "3.X"
|
||||||
|
memoizee "0.4.X"
|
||||||
|
object-assign "4.X"
|
||||||
|
|
||||||
|
debug@3.X, debug@^3.1.0:
|
||||||
|
version "3.2.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||||
|
dependencies:
|
||||||
|
ms "^2.1.1"
|
||||||
|
|
||||||
debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
|
debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
|
||||||
version "2.6.9"
|
version "2.6.9"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@^3.1.0:
|
|
||||||
version "3.2.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
|
||||||
dependencies:
|
|
||||||
ms "^2.1.1"
|
|
||||||
|
|
||||||
debug@^4.0.1, debug@^4.1.0:
|
debug@^4.0.1, debug@^4.1.0:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||||
|
@ -2099,6 +2142,11 @@ detect-libc@^1.0.2:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||||
|
|
||||||
|
detect-newline@2.X:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||||
|
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
|
||||||
|
|
||||||
diffie-hellman@^5.0.0:
|
diffie-hellman@^5.0.0:
|
||||||
version "5.0.3"
|
version "5.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
|
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
|
||||||
|
@ -2246,7 +2294,7 @@ error@^7.0.0:
|
||||||
string-template "~0.2.1"
|
string-template "~0.2.1"
|
||||||
xtend "~4.0.0"
|
xtend "~4.0.0"
|
||||||
|
|
||||||
es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14:
|
es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
|
||||||
version "0.10.50"
|
version "0.10.50"
|
||||||
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
|
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
|
||||||
integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
|
integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
|
||||||
|
@ -2272,7 +2320,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1:
|
||||||
d "1"
|
d "1"
|
||||||
es5-ext "~0.10.14"
|
es5-ext "~0.10.14"
|
||||||
|
|
||||||
es6-weak-map@^2.0.1:
|
es6-weak-map@^2.0.1, es6-weak-map@^2.0.2:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
|
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
|
||||||
integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
|
integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
|
||||||
|
@ -2286,6 +2334,20 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||||
|
|
||||||
|
eslint-config-prettier@6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz#f429a53bde9fc7660e6353910fd996d6284d3c25"
|
||||||
|
integrity sha512-vDrcCFE3+2ixNT5H83g28bO/uYAwibJxerXPj+E7op4qzBCsAV36QfvdAyVOoNxKAH2Os/e01T/2x++V0LPukA==
|
||||||
|
dependencies:
|
||||||
|
get-stdin "^6.0.0"
|
||||||
|
|
||||||
|
eslint-plugin-prettier@3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#8695188f95daa93b0dc54b249347ca3b79c4686d"
|
||||||
|
integrity sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==
|
||||||
|
dependencies:
|
||||||
|
prettier-linter-helpers "^1.0.0"
|
||||||
|
|
||||||
eslint-scope@3.7.1:
|
eslint-scope@3.7.1:
|
||||||
version "3.7.1"
|
version "3.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
|
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
|
||||||
|
@ -2390,6 +2452,14 @@ esutils@^2.0.2:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||||
|
|
||||||
|
event-emitter@^0.3.5:
|
||||||
|
version "0.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
|
||||||
|
integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
|
||||||
|
dependencies:
|
||||||
|
d "1"
|
||||||
|
es5-ext "~0.10.14"
|
||||||
|
|
||||||
event-stream@3.3.4:
|
event-stream@3.3.4:
|
||||||
version "3.3.4"
|
version "3.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
|
resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
|
||||||
|
@ -2508,6 +2578,11 @@ fast-deep-equal@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
||||||
|
|
||||||
|
fast-diff@^1.1.2:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
|
||||||
|
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
|
||||||
|
|
||||||
fast-json-stable-stringify@^2.0.0:
|
fast-json-stable-stringify@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||||
|
@ -2759,6 +2834,11 @@ get-caller-file@^2.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||||
|
|
||||||
|
get-stdin@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
|
||||||
|
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
||||||
|
|
||||||
get-stream@^4.0.0:
|
get-stream@^4.0.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
||||||
|
@ -2895,7 +2975,7 @@ glogg@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
sparkles "^1.0.0"
|
sparkles "^1.0.0"
|
||||||
|
|
||||||
graceful-fs@^4.0.0, graceful-fs@^4.1.6:
|
graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.6:
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
|
||||||
integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
|
integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
|
||||||
|
@ -2904,10 +2984,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
||||||
version "4.1.15"
|
version "4.1.15"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
||||||
|
|
||||||
growly@^1.3.0:
|
|
||||||
version "1.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
|
|
||||||
|
|
||||||
gulp-autoprefixer@6.1.0:
|
gulp-autoprefixer@6.1.0:
|
||||||
version "6.1.0"
|
version "6.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/gulp-autoprefixer/-/gulp-autoprefixer-6.1.0.tgz#5f7f78468fe99a589ce353fa5891b7bee16b8f1e"
|
resolved "https://registry.yarnpkg.com/gulp-autoprefixer/-/gulp-autoprefixer-6.1.0.tgz#5f7f78468fe99a589ce353fa5891b7bee16b8f1e"
|
||||||
|
@ -3106,6 +3182,23 @@ gulp-size@3.0.0:
|
||||||
stream-counter "^1.0.0"
|
stream-counter "^1.0.0"
|
||||||
through2 "^2.0.0"
|
through2 "^2.0.0"
|
||||||
|
|
||||||
|
gulp-sourcemaps@2.6.5:
|
||||||
|
version "2.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6"
|
||||||
|
integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==
|
||||||
|
dependencies:
|
||||||
|
"@gulp-sourcemaps/identity-map" "1.X"
|
||||||
|
"@gulp-sourcemaps/map-sources" "1.X"
|
||||||
|
acorn "5.X"
|
||||||
|
convert-source-map "1.X"
|
||||||
|
css "2.X"
|
||||||
|
debug-fabulous "1.X"
|
||||||
|
detect-newline "2.X"
|
||||||
|
graceful-fs "4.X"
|
||||||
|
source-map "~0.6.0"
|
||||||
|
strip-bom-string "1.X"
|
||||||
|
through2 "2.X"
|
||||||
|
|
||||||
gulp-stripbom@1.0.4:
|
gulp-stripbom@1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/gulp-stripbom/-/gulp-stripbom-1.0.4.tgz#58c1d03e85e008a7aab47d81b1297c8c1bc828eb"
|
resolved "https://registry.yarnpkg.com/gulp-stripbom/-/gulp-stripbom-1.0.4.tgz#58c1d03e85e008a7aab47d81b1297c8c1bc828eb"
|
||||||
|
@ -3575,7 +3668,7 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
is-promise@^2.1.0:
|
is-promise@^2.1, is-promise@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
|
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
|
||||||
|
|
||||||
|
@ -3612,10 +3705,6 @@ is-windows@^1.0.1, is-windows@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
|
|
||||||
is-wsl@^1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
|
||||||
|
|
||||||
isarray@0.0.1:
|
isarray@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||||
|
@ -3802,6 +3891,7 @@ knockout-transformations@2.1.0:
|
||||||
knockout@3.4.2:
|
knockout@3.4.2:
|
||||||
version "3.4.2"
|
version "3.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/knockout/-/knockout-3.4.2.tgz#e87958de77ad1e936f7ce645bab8b5d7c456d937"
|
resolved "https://registry.yarnpkg.com/knockout/-/knockout-3.4.2.tgz#e87958de77ad1e936f7ce645bab8b5d7c456d937"
|
||||||
|
integrity sha1-6HlY3netHpNvfOZFuri118RW2Tc=
|
||||||
|
|
||||||
last-run@^1.1.0:
|
last-run@^1.1.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -4101,6 +4191,13 @@ lru-cache@^5.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
yallist "^3.0.2"
|
yallist "^3.0.2"
|
||||||
|
|
||||||
|
lru-queue@0.1:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
|
||||||
|
integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=
|
||||||
|
dependencies:
|
||||||
|
es5-ext "~0.10.2"
|
||||||
|
|
||||||
make-dir@^1.0.0:
|
make-dir@^1.0.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||||
|
@ -4190,6 +4287,20 @@ mem@^4.0.0:
|
||||||
mimic-fn "^1.0.0"
|
mimic-fn "^1.0.0"
|
||||||
p-is-promise "^2.0.0"
|
p-is-promise "^2.0.0"
|
||||||
|
|
||||||
|
memoizee@0.4.X:
|
||||||
|
version "0.4.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
|
||||||
|
integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==
|
||||||
|
dependencies:
|
||||||
|
d "1"
|
||||||
|
es5-ext "^0.10.45"
|
||||||
|
es6-weak-map "^2.0.2"
|
||||||
|
event-emitter "^0.3.5"
|
||||||
|
is-promise "^2.1"
|
||||||
|
lru-queue "0.1"
|
||||||
|
next-tick "1"
|
||||||
|
timers-ext "^0.1.5"
|
||||||
|
|
||||||
memory-fs@^0.4.0, memory-fs@~0.4.1:
|
memory-fs@^0.4.0, memory-fs@~0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
|
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
|
||||||
|
@ -4399,7 +4510,7 @@ neo-async@^2.5.0:
|
||||||
version "2.6.0"
|
version "2.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
|
||||||
|
|
||||||
next-tick@^1.0.0:
|
next-tick@1, next-tick@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
||||||
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
||||||
|
@ -4453,16 +4564,6 @@ node-localstorage@~1.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
write-file-atomic "^1.1.4"
|
write-file-atomic "^1.1.4"
|
||||||
|
|
||||||
node-notifier@5.4.0:
|
|
||||||
version "5.4.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a"
|
|
||||||
dependencies:
|
|
||||||
growly "^1.3.0"
|
|
||||||
is-wsl "^1.1.0"
|
|
||||||
semver "^5.5.0"
|
|
||||||
shellwords "^0.1.1"
|
|
||||||
which "^1.3.0"
|
|
||||||
|
|
||||||
node-pre-gyp@^0.10.0:
|
node-pre-gyp@^0.10.0:
|
||||||
version "0.10.3"
|
version "0.10.3"
|
||||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
|
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
|
||||||
|
@ -4518,7 +4619,7 @@ normalize-package-data@^2.3.2:
|
||||||
semver "2 || 3 || 4 || 5"
|
semver "2 || 3 || 4 || 5"
|
||||||
validate-npm-package-license "^3.0.1"
|
validate-npm-package-license "^3.0.1"
|
||||||
|
|
||||||
normalize-path@^2.1.1:
|
normalize-path@^2.0.1, normalize-path@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
|
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -4581,14 +4682,14 @@ oauth-sign@~0.9.0:
|
||||||
version "0.9.0"
|
version "0.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
|
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
|
||||||
|
|
||||||
|
object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0:
|
||||||
|
version "4.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||||
|
|
||||||
object-assign@^3.0.0:
|
object-assign@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
|
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
|
||||||
|
|
||||||
object-assign@^4.0.1, object-assign@^4.1.0:
|
|
||||||
version "4.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
|
||||||
|
|
||||||
object-copy@^0.1.0:
|
object-copy@^0.1.0:
|
||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
|
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
|
||||||
|
@ -5029,6 +5130,18 @@ prelude-ls@~1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||||
|
|
||||||
|
prettier-linter-helpers@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
|
||||||
|
integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
|
||||||
|
dependencies:
|
||||||
|
fast-diff "^1.1.2"
|
||||||
|
|
||||||
|
prettier@1.18.2:
|
||||||
|
version "1.18.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
|
||||||
|
integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
|
||||||
|
|
||||||
pretty-bytes@^4.0.2:
|
pretty-bytes@^4.0.2:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
||||||
|
@ -5505,14 +5618,6 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
aproba "^1.1.1"
|
aproba "^1.1.1"
|
||||||
|
|
||||||
run-sequence@2.2.1:
|
|
||||||
version "2.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.2.1.tgz#1ce643da36fd8c7ea7e1a9329da33fc2b8898495"
|
|
||||||
dependencies:
|
|
||||||
chalk "^1.1.3"
|
|
||||||
fancy-log "^1.3.2"
|
|
||||||
plugin-error "^0.1.2"
|
|
||||||
|
|
||||||
rxjs@^6.4.0:
|
rxjs@^6.4.0:
|
||||||
version "6.4.0"
|
version "6.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504"
|
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504"
|
||||||
|
@ -5621,10 +5726,6 @@ shebang-regex@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
||||||
|
|
||||||
shellwords@^0.1.1:
|
|
||||||
version "0.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
|
|
||||||
|
|
||||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||||
|
@ -5680,7 +5781,7 @@ source-list-map@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
|
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
|
||||||
|
|
||||||
source-map-resolve@^0.5.0:
|
source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
|
||||||
version "0.5.2"
|
version "0.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
|
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5916,6 +6017,11 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^4.1.0"
|
ansi-regex "^4.1.0"
|
||||||
|
|
||||||
|
strip-bom-string@1.X:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
|
||||||
|
integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=
|
||||||
|
|
||||||
strip-bom@^1.0.0:
|
strip-bom@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794"
|
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794"
|
||||||
|
@ -6040,6 +6146,13 @@ through2-filter@^3.0.0:
|
||||||
through2 "~2.0.0"
|
through2 "~2.0.0"
|
||||||
xtend "~4.0.0"
|
xtend "~4.0.0"
|
||||||
|
|
||||||
|
through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0:
|
||||||
|
version "2.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
||||||
|
dependencies:
|
||||||
|
readable-stream "~2.3.6"
|
||||||
|
xtend "~4.0.1"
|
||||||
|
|
||||||
through2@3.0.1, through2@^3.0.1:
|
through2@3.0.1, through2@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a"
|
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a"
|
||||||
|
@ -6054,13 +6167,6 @@ through2@^0.5.1:
|
||||||
readable-stream "~1.0.17"
|
readable-stream "~1.0.17"
|
||||||
xtend "~3.0.0"
|
xtend "~3.0.0"
|
||||||
|
|
||||||
through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0:
|
|
||||||
version "2.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
|
||||||
dependencies:
|
|
||||||
readable-stream "~2.3.6"
|
|
||||||
xtend "~4.0.1"
|
|
||||||
|
|
||||||
through2@^3.0.0:
|
through2@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2"
|
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2"
|
||||||
|
@ -6089,6 +6195,14 @@ timers-browserify@^2.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
setimmediate "^1.0.4"
|
setimmediate "^1.0.4"
|
||||||
|
|
||||||
|
timers-ext@^0.1.5:
|
||||||
|
version "0.1.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
|
||||||
|
integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
|
||||||
|
dependencies:
|
||||||
|
es5-ext "~0.10.46"
|
||||||
|
next-tick "1"
|
||||||
|
|
||||||
tiny-lr@^1.1.1:
|
tiny-lr@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab"
|
resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab"
|
||||||
|
@ -6491,10 +6605,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0:
|
||||||
source-list-map "^2.0.0"
|
source-list-map "^2.0.0"
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
webpack@4.35.0:
|
webpack@4.35.2:
|
||||||
version "4.35.0"
|
version "4.35.2"
|
||||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.35.0.tgz#ad3f0f8190876328806ccb7a36f3ce6e764b8378"
|
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.35.2.tgz#5c8b8a66602cbbd6ec65c6e6747914a61c1449b1"
|
||||||
integrity sha512-M5hL3qpVvtr8d4YaJANbAQBc4uT01G33eDpl/psRTBCfjxFTihdhin1NtAKB1ruDwzeVdcsHHV3NX+QsAgOosw==
|
integrity sha512-TZAmorNymV4q66gAM/h90cEjG+N3627Q2MnkSgKlX/z3DlNVKUtqy57lz1WmZU2+FUZwzM+qm7cGaO95PyrX5A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@webassemblyjs/ast" "1.8.5"
|
"@webassemblyjs/ast" "1.8.5"
|
||||||
"@webassemblyjs/helper-module-context" "1.8.5"
|
"@webassemblyjs/helper-module-context" "1.8.5"
|
||||||
|
@ -6545,7 +6659,7 @@ which-module@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||||
|
|
||||||
which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
|
which@^1.2.14, which@^1.2.9, which@^1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in a new issue