mirror of https://github.com/lidarr/Lidarr
UI Formatting Cleanup
This commit is contained in:
parent
b963f2aa82
commit
52e3d96f4a
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"paths": [
|
||||||
|
"frontend/src/**/*.js"
|
||||||
|
],
|
||||||
|
"ignored": [
|
||||||
|
"**/node_modules/**/*"
|
||||||
|
],
|
||||||
|
"port": 5004
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
#addin "Cake.Npm"
|
#addin "Cake.Npm"
|
||||||
|
#addin "Cake.Yarn"
|
||||||
#addin "SharpZipLib"
|
#addin "SharpZipLib"
|
||||||
#addin "Cake.Compression"
|
#addin "Cake.Compression"
|
||||||
|
|
||||||
|
|
23
build.sh
23
build.sh
|
@ -74,6 +74,17 @@ BuildWithXbuild()
|
||||||
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
|
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LintUI()
|
||||||
|
{
|
||||||
|
ProgressStart 'ESLint'
|
||||||
|
CheckExitCode yarn eslint
|
||||||
|
ProgressEnd 'ESLint'
|
||||||
|
|
||||||
|
ProgressStart 'Stylelint'
|
||||||
|
CheckExitCode yarn stylelint
|
||||||
|
ProgressEnd 'Stylelint'
|
||||||
|
}
|
||||||
|
|
||||||
Build()
|
Build()
|
||||||
{
|
{
|
||||||
echo "##teamcity[progressStart 'Build']"
|
echo "##teamcity[progressStart 'Build']"
|
||||||
|
@ -98,13 +109,14 @@ Build()
|
||||||
|
|
||||||
RunGulp()
|
RunGulp()
|
||||||
{
|
{
|
||||||
echo "##teamcity[progressStart 'npm install']"
|
ProgressStart 'npm install'
|
||||||
npm-cache install npm || CheckExitCode npm install --no-optional --no-bin-links
|
yarn install
|
||||||
echo "##teamcity[progressFinish 'npm install']"
|
#npm-cache install npm || CheckExitCode npm install --no-optional --no-bin-links
|
||||||
|
ProgressEnd 'npm install'
|
||||||
|
|
||||||
echo "##teamcity[progressStart 'Running gulp']"
|
ProgressStart 'Running gulp'
|
||||||
CheckExitCode npm run build -- --production
|
CheckExitCode npm run build -- --production
|
||||||
echo "##teamcity[progressFinish 'Running gulp']"
|
ProgressEnd 'Running gulp'
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateMdbs()
|
CreateMdbs()
|
||||||
|
@ -253,6 +265,7 @@ case "$(uname -s)" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
LintUI
|
||||||
Build
|
Build
|
||||||
RunGulp
|
RunGulp
|
||||||
PackageMono
|
PackageMono
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
"globals": {
|
"globals": {
|
||||||
"expect": false,
|
"expect": false,
|
||||||
"chai": false,
|
"chai": false,
|
||||||
"sinon": false,
|
"sinon": false
|
||||||
},
|
},
|
||||||
|
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"ecmaFeatures": {
|
"ecmaFeatures": {
|
||||||
"modules": true,
|
"modules": true,
|
||||||
"impliedStrict": true
|
"impliedStrict": true
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
@ -33,32 +33,32 @@
|
||||||
|
|
||||||
# ECMAScript 6
|
# ECMAScript 6
|
||||||
|
|
||||||
arrow-body-style: [0],
|
"arrow-body-style": [0],
|
||||||
arrow-parens: ["error", "always"],
|
"arrow-parens": ["error", "always"],
|
||||||
arrow-spacing: ["error", { "before": true, "after": true }],
|
"arrow-spacing": ["error", { "before": true, "after": true }],
|
||||||
constructor-super: "error",
|
"constructor-super": "error",
|
||||||
generator-star-spacing: "off",
|
"generator-star-spacing": "off",
|
||||||
no-class-assign: "error",
|
"no-class-assign": "error",
|
||||||
no-confusing-arrow: "error",
|
"no-confusing-arrow": "error",
|
||||||
no-const-assign: "error",
|
"no-const-assign": "error",
|
||||||
no-dupe-class-members: "error",
|
"no-dupe-class-members": "error",
|
||||||
no-duplicate-imports: "error",
|
"no-duplicate-imports": "error",
|
||||||
no-new-symbol: "error",
|
"no-new-symbol": "error",
|
||||||
no-this-before-super: "error",
|
"no-this-before-super": "error",
|
||||||
no-useless-escape: "error",
|
"no-useless-escape": "error",
|
||||||
no-useless-computed-key: "error",
|
"no-useless-computed-key": "error",
|
||||||
no-useless-constructor: "error",
|
"no-useless-constructor": "error",
|
||||||
no-var: "warn",
|
"no-var": "warn",
|
||||||
object-shorthand: ["error", "properties"],
|
"object-shorthand": ["error", "properties"],
|
||||||
prefer-arrow-callback: "error",
|
"prefer-arrow-callback": "error",
|
||||||
prefer-const: "warn",
|
"prefer-const": "warn",
|
||||||
prefer-reflect: "off",
|
"prefer-reflect": "off",
|
||||||
prefer-rest-params: "off",
|
"prefer-rest-params": "off",
|
||||||
prefer-spread: "warn",
|
"prefer-spread": "warn",
|
||||||
prefer-template: "error",
|
"prefer-template": "error",
|
||||||
require-yield: "off",
|
"require-yield": "off",
|
||||||
template-curly-spacing: ["error", "never"],
|
"template-curly-spacing": ["error", "never"],
|
||||||
yield-star-spacing: "off",
|
"yield-star-spacing": "off",
|
||||||
|
|
||||||
# Possible Errors
|
# Possible Errors
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
"no-div-regex": "error",
|
"no-div-regex": "error",
|
||||||
"no-else-return": "error",
|
"no-else-return": "error",
|
||||||
"no-empty-function": ["error", {"allow": ["arrowFunctions"]}],
|
"no-empty-function": ["error", {"allow": ["arrowFunctions"]}],
|
||||||
no-empty-pattern: "error",
|
"no-empty-pattern": "error",
|
||||||
"no-eval": "error",
|
"no-eval": "error",
|
||||||
"no-extend-native": "error",
|
"no-extend-native": "error",
|
||||||
"no-extra-bind": "error",
|
"no-extra-bind": "error",
|
||||||
|
@ -122,158 +122,159 @@
|
||||||
"string": true,
|
"string": true,
|
||||||
"allow": [/* "!!", "~", "*", "+" */]
|
"allow": [/* "!!", "~", "*", "+" */]
|
||||||
}],
|
}],
|
||||||
no-implicit-globals: "error",
|
"no-implicit-globals": "error",
|
||||||
no-implied-eval: "error",
|
"no-implied-eval": "error",
|
||||||
no-invalid-this: "off",
|
"no-invalid-this": "off",
|
||||||
no-iterator: "error",
|
"no-iterator": "error",
|
||||||
no-labels: "error",
|
"no-labels": "error",
|
||||||
no-lone-blocks: "error",
|
"no-lone-blocks": "error",
|
||||||
no-loop-func: "error",
|
"no-loop-func": "error",
|
||||||
no-magic-numbers: ["off", {"ignoreArrayIndexes": true, "ignore": [0, 1] }],
|
"no-magic-numbers": ["off", {"ignoreArrayIndexes": true, "ignore": [0, 1] }],
|
||||||
no-multi-spaces: "error",
|
"no-multi-spaces": "error",
|
||||||
no-multi-str: "error",
|
"no-multi-str": "error",
|
||||||
"no-native-reassign": ["error", {"exceptions": ["console"]}],
|
"no-native-reassign": ["error", {"exceptions": ["console"]}],
|
||||||
no-new: "off",
|
"no-new": "off",
|
||||||
no-new-func: "error",
|
"no-new-func": "error",
|
||||||
no-new-wrappers: "error",
|
"no-new-wrappers": "error",
|
||||||
no-octal: "error",
|
"no-octal": "error",
|
||||||
no-octal-escape: "error",
|
"no-octal-escape": "error",
|
||||||
no-param-reassign: "off",
|
"no-param-reassign": "off",
|
||||||
no-process-env: "off",
|
"no-process-env": "off",
|
||||||
no-proto: "error",
|
"no-proto": "error",
|
||||||
no-redeclare: "error",
|
"no-redeclare": "error",
|
||||||
no-return-assign: "warn",
|
"no-return-assign": "warn",
|
||||||
no-script-url: "error",
|
"no-script-url": "error",
|
||||||
no-self-assign: "error",
|
"no-self-assign": "error",
|
||||||
no-self-compare: "error",
|
"no-self-compare": "error",
|
||||||
no-sequences: "error",
|
"no-sequences": "error",
|
||||||
no-throw-literal: "error",
|
"no-throw-literal": "error",
|
||||||
no-unmodified-loop-condition: "error",
|
"no-unmodified-loop-condition": "error",
|
||||||
no-unused-expressions: "error",
|
"no-unused-expressions": "error",
|
||||||
no-unused-labels: "error",
|
"no-unused-labels": "error",
|
||||||
no-useless-call: "error",
|
"no-useless-call": "error",
|
||||||
no-useless-concat: "error",
|
"no-useless-concat": "error",
|
||||||
no-void: "error",
|
"no-void": "error",
|
||||||
no-warning-comments: "off",
|
"no-warning-comments": "off",
|
||||||
no-with: "error",
|
"no-with": "error",
|
||||||
radix: ["error", "as-needed"],
|
"radix": ["error", "as-needed"],
|
||||||
vars-on-top: "off",
|
"vars-on-top": "off",
|
||||||
wrap-iife: ["error", "inside"],
|
"wrap-iife": ["error", "inside"],
|
||||||
yoda: "error",
|
"yoda": "error",
|
||||||
|
|
||||||
# Strict Mode
|
# Strict Mode
|
||||||
|
|
||||||
strict: ["error", "never"],
|
"strict": ["error", "never"],
|
||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
|
|
||||||
init-declarations: ["error", "always"],
|
"init-declarations": ["error", "always"],
|
||||||
no-catch-shadow: "error",
|
"no-catch-shadow": "error",
|
||||||
no-delete-var: "error",
|
"no-delete-var": "error",
|
||||||
no-label-var: "error",
|
"no-label-var": "error",
|
||||||
no-restricted-globals: "off",
|
"no-restricted-globals": "off",
|
||||||
no-shadow: "error",
|
"no-shadow": "error",
|
||||||
no-shadow-restricted-names: "error",
|
"no-shadow-restricted-names": "error",
|
||||||
no-undef: "error",
|
"no-undef": "error",
|
||||||
no-undef-init: "off",
|
"no-undef-init": "off",
|
||||||
no-undefined: "off",
|
"no-undefined": "off",
|
||||||
no-unused-vars: ["error", { "args": "none" }],
|
"no-unused-vars": ["error", { "args": "none" }],
|
||||||
no-use-before-define: "error",
|
"no-use-before-define": "error",
|
||||||
|
|
||||||
# Node.js and CommonJS
|
# Node.js and CommonJS
|
||||||
|
|
||||||
callback-return: "warn",
|
"callback-return": "warn",
|
||||||
global-require: "error",
|
"global-require": "error",
|
||||||
handle-callback-err: "warn",
|
"handle-callback-err": "warn",
|
||||||
no-mixed-requires: "error",
|
"no-mixed-requires": "error",
|
||||||
no-new-require: "error",
|
"no-new-require": "error",
|
||||||
no-path-concat: "error",
|
"no-path-concat": "error",
|
||||||
no-process-exit: "error",
|
"no-process-exit": "error",
|
||||||
|
|
||||||
# Stylistic Issues
|
# Stylistic Issues
|
||||||
|
|
||||||
array-bracket-spacing: ["error", "never"],
|
"array-bracket-spacing": ["error", "never"],
|
||||||
block-spacing: ["error", "always"],
|
"block-spacing": ["error", "always"],
|
||||||
brace-style: ["error", "1tbs", { "allowSingleLine": false }],
|
"brace-style": ["error", "1tbs", { "allowSingleLine": false }],
|
||||||
camelcase: "off",
|
"camelcase": "off",
|
||||||
comma-spacing: ["error", {"before": false, "after": true}],
|
"comma-spacing": ["error", {"before": false, "after": true}],
|
||||||
comma-style: ["error", "last"],
|
"comma-style": ["error", "last"],
|
||||||
computed-property-spacing: ["error", "never"],
|
"computed-property-spacing": ["error", "never"],
|
||||||
consistent-this: ["error", "self"],
|
"consistent-this": ["error", "self"],
|
||||||
eol-last: "error",
|
"eol-last": "error",
|
||||||
func-names: "off",
|
"func-names": "off",
|
||||||
func-style: ["error", "declaration"],
|
"func-style": ["error", "declaration"],
|
||||||
indent: ["error", 2, {"SwitchCase": 1}],
|
"indent": ["error", 2, {"SwitchCase": 1}],
|
||||||
key-spacing: ["error", {"beforeColon": false, "afterColon": true}],
|
"key-spacing": ["error", {"beforeColon": false, "afterColon": true}],
|
||||||
keyword-spacing: ["error", {before: true, after: true}],
|
"keyword-spacing": ["error", {before: true, after: true}],
|
||||||
lines-around-comment: ["error", { "beforeBlockComment": true, "afterBlockComment": false }],
|
"lines-around-comment": ["error", { "beforeBlockComment": true, "afterBlockComment": false }],
|
||||||
max-depth: ["error", {"maximum": 5}],
|
"max-depth": ["error", {"maximum": 5}],
|
||||||
max-nested-callbacks: ["error", 4],
|
"max-nested-callbacks": ["error", 4],
|
||||||
max-params: ["error", 4],
|
"max-params": ["error", 4],
|
||||||
max-statements: "off",
|
"max-statements": "off",
|
||||||
max-statements-per-line: ["error", { "max": 1 }],
|
"max-statements-per-line": ["error", { "max": 1 }],
|
||||||
new-cap: ["error", {"capIsNewExceptions": ["$.Deferred"]}],
|
"new-cap": ["error", {"capIsNewExceptions": ["$.Deferred"]}],
|
||||||
new-parens: "error",
|
"new-parens": "error",
|
||||||
newline-after-var: "off",
|
"newline-after-var": "off",
|
||||||
newline-before-return: "off",
|
"newline-before-return": "off",
|
||||||
newline-per-chained-call: "off",
|
"newline-per-chained-call": "off",
|
||||||
no-array-constructor: "error",
|
"no-array-constructor": "error",
|
||||||
no-bitwise: "error",
|
"no-bitwise": "error",
|
||||||
no-continue: "error",
|
"no-continue": "error",
|
||||||
no-inline-comments: "off",
|
"no-inline-comments": "off",
|
||||||
no-lonely-if: "warn",
|
"no-lonely-if": "warn",
|
||||||
no-mixed-spaces-and-tabs: "error",
|
"no-mixed-spaces-and-tabs": "error",
|
||||||
no-multiple-empty-lines: ["error", {max: 1}],
|
"no-multiple-empty-lines": ["error", {max: 1}],
|
||||||
no-negated-condition: "warn",
|
"no-negated-condition": "warn",
|
||||||
no-nested-ternary: "error",
|
"no-nested-ternary": "error",
|
||||||
no-new-object: "error",
|
"no-new-object": "error",
|
||||||
no-plusplus: "off",
|
"no-plusplus": "off",
|
||||||
no-restricted-syntax: "off",
|
"no-restricted-syntax": "off",
|
||||||
no-spaced-func: "error",
|
"no-spaced-func": "error",
|
||||||
no-ternary: "off",
|
"no-ternary": "off",
|
||||||
no-trailing-spaces: "error",
|
"no-trailing-spaces": "error",
|
||||||
no-underscore-dangle: ["error", { "allowAfterThis": true }],
|
"no-underscore-dangle": ["error", { "allowAfterThis": true }],
|
||||||
no-unneeded-ternary: "error",
|
"no-unneeded-ternary": "error",
|
||||||
no-whitespace-before-property: "error",
|
"no-whitespace-before-property": "error",
|
||||||
object-curly-spacing: ["error", "always"],
|
"object-curly-spacing": ["error", "always"],
|
||||||
one-var: ["error", "never"],
|
"one-var": ["error", "never"],
|
||||||
one-var-declaration-per-line: ["error", "always"],
|
"one-var-declaration-per-line": ["error", "always"],
|
||||||
operator-assignment: ["off", "never"],
|
"operator-assignment": ["off", "never"],
|
||||||
operator-linebreak: ["error", "after"],
|
"operator-linebreak": ["error", "after"],
|
||||||
quote-props: ["error", "as-needed"],
|
"quote-props": ["error", "as-needed"],
|
||||||
quotes: ["error", "single"],
|
"quotes": ["error", "single"],
|
||||||
require-jsdoc: "off",
|
"require-jsdoc": "off",
|
||||||
semi: "error",
|
"semi": "error",
|
||||||
semi-spacing: ["error", { "before": false, "after": true }],
|
"semi-spacing": ["error", { "before": false, "after": true }],
|
||||||
sort-vars: "off",
|
"sort-vars": "off",
|
||||||
space-before-blocks: ["error", "always"],
|
"space-before-blocks": ["error", "always"],
|
||||||
space-before-function-paren: ["error", "never"],
|
"space-before-function-paren": ["error", "never"],
|
||||||
space-in-parens: "off",
|
"space-in-parens": "off",
|
||||||
space-infix-ops: "off",
|
"space-infix-ops": "off",
|
||||||
space-unary-ops: "off",
|
"space-unary-ops": "off",
|
||||||
spaced-comment: "error",
|
"spaced-comment": "error",
|
||||||
wrap-regex: "error",
|
"wrap-regex": "error",
|
||||||
|
|
||||||
# React
|
# React
|
||||||
|
|
||||||
"react/jsx-boolean-value": [2, "always"],
|
"react/jsx-boolean-value": [2, "always"],
|
||||||
"react/jsx-uses-vars": 2,
|
"react/jsx-uses-vars": 2,
|
||||||
"react/jsx-closing-bracket-location": 2,
|
"react/jsx-closing-bracket-location": 2,
|
||||||
"react/jsx-space-before-closing": 2,
|
"react/jsx-tag-spacing": ["error"],
|
||||||
"react/jsx-curly-spacing": [2, "never"],
|
"react/jsx-curly-spacing": [2, "never"],
|
||||||
"react/jsx-equals-spacing": [2, "never"],
|
"react/jsx-equals-spacing": [2, "never"],
|
||||||
"react/jsx-indent-props": [2, 2],
|
"react/jsx-indent-props": [2, 2],
|
||||||
"react/jsx-indent": [2, 2],
|
"react/jsx-indent": [2, 2],
|
||||||
"react/jsx-key": 2,
|
"react/jsx-key": 2,
|
||||||
"react/jsx-no-bind": [2, { allowArrowFunctions: true }],
|
"react/jsx-no-bind": [2, { "allowArrowFunctions": true }],
|
||||||
"react/jsx-no-duplicate-props": [2, { "ignoreCase": true }],
|
"react/jsx-no-duplicate-props": [2, { "ignoreCase": true }],
|
||||||
"react/jsx-max-props-per-line": [2, { "maximum": 2 }],
|
"react/jsx-max-props-per-line": [2, { "maximum": 2 }],
|
||||||
"react/jsx-handler-names": [2, { "eventHandlerPrefix": "on", "eventHandlerPropPrefix": "on" }],
|
"react/jsx-handler-names": [2, { "eventHandlerPrefix": "on", "eventHandlerPropPrefix": "on" }],
|
||||||
"react/jsx-no-undef": 2,
|
"react/jsx-no-undef": 2,
|
||||||
"react/jsx-pascal-case": 2,
|
"react/jsx-pascal-case": 2,
|
||||||
"react/jsx-uses-react": 2,
|
"react/jsx-uses-react": 2,
|
||||||
"react/no-did-mount-set-state": 2,
|
// Explicitly disabled in case we want to enable them again
|
||||||
"react/no-did-update-set-state": 2,
|
"react/no-did-mount-set-state": 0,
|
||||||
|
"react/no-did-update-set-state": 0,
|
||||||
"react/no-direct-mutation-state": 2,
|
"react/no-direct-mutation-state": 2,
|
||||||
"react/no-multi-comp": [2, { "ignoreStateless": true }],
|
"react/no-multi-comp": [2, { "ignoreStateless": true }],
|
||||||
"react/no-unknown-property": 2,
|
"react/no-unknown-property": 2,
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"stylelint-order"
|
"stylelint-order"
|
||||||
],
|
],
|
||||||
|
"ignoreFiles": [
|
||||||
|
"frontend/src/Styles/scaffolding.css",
|
||||||
|
"frontend/src/Content/Fonts/font-awesome.css"
|
||||||
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"at-rule-empty-line-before": [
|
"at-rule-empty-line-before": [
|
||||||
"always",
|
"always",
|
||||||
|
|
|
@ -3,6 +3,11 @@ const reload = require('require-nocache')(module);
|
||||||
module.exports = (ctx, configPath, options) => {
|
module.exports = (ctx, configPath, options) => {
|
||||||
const config = {
|
const config = {
|
||||||
plugins: {
|
plugins: {
|
||||||
|
'postcss-mixins': {
|
||||||
|
mixinsDir: [
|
||||||
|
'frontend/src/Styles/Mixins'
|
||||||
|
]
|
||||||
|
},
|
||||||
'postcss-simple-vars': {
|
'postcss-simple-vars': {
|
||||||
variables: () =>
|
variables: () =>
|
||||||
ctx.options.cssVarsFiles.reduce((acc, vars) => {
|
ctx.options.cssVarsFiles.reduce((acc, vars) => {
|
||||||
|
@ -10,11 +15,6 @@ module.exports = (ctx, configPath, options) => {
|
||||||
}, {})
|
}, {})
|
||||||
},
|
},
|
||||||
'postcss-nested': {},
|
'postcss-nested': {},
|
||||||
'postcss-mixins': {
|
|
||||||
mixinsDir: [
|
|
||||||
'frontend/src/Styles/Mixins'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
autoprefixer: {
|
autoprefixer: {
|
||||||
browsers: [
|
browsers: [
|
||||||
'Chrome >= 30',
|
'Chrome >= 30',
|
||||||
|
|
|
@ -142,6 +142,8 @@ class BlacklistRow extends Component {
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,8 @@ class HistoryRow extends Component {
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -268,6 +268,8 @@ class QueueRow extends Component {
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -161,9 +161,7 @@ class AddNewArtist extends Component {
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
<div>
|
<div />
|
||||||
|
|
||||||
</div>
|
|
||||||
</PageContentBodyConnector>
|
</PageContentBodyConnector>
|
||||||
</PageContent>
|
</PageContent>
|
||||||
);
|
);
|
||||||
|
|
|
@ -66,7 +66,6 @@
|
||||||
.searchInput {
|
.searchInput {
|
||||||
composes: text from 'Components/Form/TextInput.css';
|
composes: text from 'Components/Form/TextInput.css';
|
||||||
|
|
||||||
/*border-left: 0;*/
|
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,8 +116,7 @@ class ImportArtistSelectArtist extends Component {
|
||||||
isPopulated,
|
isPopulated,
|
||||||
error,
|
error,
|
||||||
items,
|
items,
|
||||||
queued,
|
queued
|
||||||
onArtistSelect
|
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const errorMessage = error &&
|
const errorMessage = error &&
|
||||||
|
|
|
@ -4,7 +4,6 @@ import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { push } from 'react-router-redux';
|
import { push } from 'react-router-redux';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
|
||||||
import { fetchRootFolders, addRootFolder, deleteRootFolder } from 'Store/Actions/rootFolderActions';
|
import { fetchRootFolders, addRootFolder, deleteRootFolder } from 'Store/Actions/rootFolderActions';
|
||||||
import ImportArtistSelectFolder from './ImportArtistSelectFolder';
|
import ImportArtistSelectFolder from './ImportArtistSelectFolder';
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,6 @@
|
||||||
.changes {
|
.changes {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
padding-bottom: 5px;
|
padding-bottom: 5px;
|
||||||
font-size: 18px;
|
|
||||||
border-bottom: 1px solid #e5e5e5;
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds, sizes } from 'Helpers/Props';
|
import { kinds, sizes } from 'Helpers/Props';
|
||||||
import Label from 'Components/Label';
|
import Label from 'Components/Label';
|
||||||
import styles from './ArtistTags.css';
|
|
||||||
|
|
||||||
function ArtistTags({ tags }) {
|
function ArtistTags({ tags }) {
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -51,8 +51,7 @@ class TagsModalContent extends Component {
|
||||||
const {
|
const {
|
||||||
artistTags,
|
artistTags,
|
||||||
tagList,
|
tagList,
|
||||||
onModalClose,
|
onModalClose
|
||||||
onApplyTagsPress
|
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import _ from 'lodash';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
@ -151,6 +150,7 @@ class ArtistIndexConnector extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
ArtistIndexConnector.propTypes = {
|
ArtistIndexConnector.propTypes = {
|
||||||
|
isSmallScreen: PropTypes.bool.isRequired,
|
||||||
view: PropTypes.string.isRequired,
|
view: PropTypes.string.isRequired,
|
||||||
scrollTop: PropTypes.number.isRequired,
|
scrollTop: PropTypes.number.isRequired,
|
||||||
fetchArtist: PropTypes.func.isRequired,
|
fetchArtist: PropTypes.func.isRequired,
|
||||||
|
|
|
@ -31,22 +31,22 @@ function ArtistIndexFooter({ series }) {
|
||||||
<div className={styles.footer}>
|
<div className={styles.footer}>
|
||||||
<div>
|
<div>
|
||||||
<div className={styles.legendItem}>
|
<div className={styles.legendItem}>
|
||||||
<div className={styles.continuing}></div>
|
<div className={styles.continuing} />
|
||||||
<div>Continuing (All tracks downloaded)</div>
|
<div>Continuing (All tracks downloaded)</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.legendItem}>
|
<div className={styles.legendItem}>
|
||||||
<div className={styles.ended}></div>
|
<div className={styles.ended} />
|
||||||
<div>Ended (All tracks downloaded)</div>
|
<div>Ended (All tracks downloaded)</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.legendItem}>
|
<div className={styles.legendItem}>
|
||||||
<div className={styles.missingMonitored}></div>
|
<div className={styles.missingMonitored} />
|
||||||
<div>Missing Tracks (Artist monitored)</div>
|
<div>Missing Tracks (Artist monitored)</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.legendItem}>
|
<div className={styles.legendItem}>
|
||||||
<div className={styles.missingUnmonitored}></div>
|
<div className={styles.missingUnmonitored} />
|
||||||
<div>Missing Tracks (Artist not monitored)</div>
|
<div>Missing Tracks (Artist not monitored)</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,9 +12,6 @@ $hoverScale: 1.05;
|
||||||
box-shadow: 0 0 12px $black;
|
box-shadow: 0 0 12px $black;
|
||||||
transition: all 200ms ease-in;
|
transition: all 200ms ease-in;
|
||||||
|
|
||||||
// Transforming causes the content to shift slightly
|
|
||||||
// transform: scale($hoverScale);
|
|
||||||
|
|
||||||
.controls {
|
.controls {
|
||||||
opacity: 0.9;
|
opacity: 0.9;
|
||||||
transition: opacity 200ms linear 150ms;
|
transition: opacity 200ms linear 150ms;
|
||||||
|
|
|
@ -72,6 +72,8 @@ function calculateRowHeight(bannerHeight, sortKey, isSmallScreen, bannerOptions)
|
||||||
heights.push(19);
|
heights.push(19);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
// No need to add a height of 0
|
||||||
}
|
}
|
||||||
|
|
||||||
return heights.reduce((acc, height) => acc + height, 0);
|
return heights.reduce((acc, height) => acc + height, 0);
|
||||||
|
|
|
@ -12,9 +12,6 @@ $hoverScale: 1.05;
|
||||||
box-shadow: 0 0 12px $black;
|
box-shadow: 0 0 12px $black;
|
||||||
transition: all 200ms ease-in;
|
transition: all 200ms ease-in;
|
||||||
|
|
||||||
// Transforming causes the content to shift slightly
|
|
||||||
// transform: scale($hoverScale);
|
|
||||||
|
|
||||||
.controls {
|
.controls {
|
||||||
opacity: 0.9;
|
opacity: 0.9;
|
||||||
transition: opacity 200ms linear 150ms;
|
transition: opacity 200ms linear 150ms;
|
||||||
|
|
|
@ -72,6 +72,8 @@ function calculateRowHeight(posterHeight, sortKey, isSmallScreen, posterOptions)
|
||||||
heights.push(19);
|
heights.push(19);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
// No need to add a height of 0
|
||||||
}
|
}
|
||||||
|
|
||||||
return heights.reduce((acc, height) => acc + height, 0);
|
return heights.reduce((acc, height) => acc + height, 0);
|
||||||
|
|
|
@ -20,7 +20,8 @@ function CalendarDay(props) {
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
styles.day,
|
styles.day,
|
||||||
view === calendarViews.DAY && styles.isSingleDay
|
view === calendarViews.DAY && styles.isSingleDay
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
{
|
{
|
||||||
view === calendarViews.MONTH &&
|
view === calendarViews.MONTH &&
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
|
|
|
@ -134,7 +134,8 @@ class CalendarDays extends Component {
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
styles.days,
|
styles.days,
|
||||||
styles[view]
|
styles[view]
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
{
|
{
|
||||||
dates.map((date) => {
|
dates.map((date) => {
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -36,7 +36,8 @@ class DayOfWeek extends Component {
|
||||||
styles.dayOfWeek,
|
styles.dayOfWeek,
|
||||||
view === calendarViews.DAY && styles.isSingleDay,
|
view === calendarViews.DAY && styles.isSingleDay,
|
||||||
highlightToday && styles.isToday
|
highlightToday && styles.isToday
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
{formatedDate}
|
{formatedDate}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* eslint max-params: 0 */
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
function getStatusStyle(episodeNumber, downloading, startTime, isMonitored) {
|
function getStatusStyle(episodeNumber, downloading, startTime, isMonitored) {
|
||||||
|
|
|
@ -103,8 +103,7 @@ class CircularProgressBar extends Component {
|
||||||
strokeWidth,
|
strokeWidth,
|
||||||
strokeDashoffset
|
strokeDashoffset
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
</circle>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { icons, inputTypes } from 'Helpers/Props';
|
import { inputTypes } from 'Helpers/Props';
|
||||||
import Icon from 'Components/Icon';
|
|
||||||
import Link from 'Components/Link/Link';
|
import Link from 'Components/Link/Link';
|
||||||
import CaptchaInputConnector from './CaptchaInputConnector';
|
import CaptchaInputConnector from './CaptchaInputConnector';
|
||||||
import CheckInput from './CheckInput';
|
import CheckInput from './CheckInput';
|
||||||
|
|
|
@ -23,7 +23,8 @@ function FormInputHelpText(props) {
|
||||||
isError && styles.isError,
|
isError && styles.isError,
|
||||||
isWarning && styles.isWarning,
|
isWarning && styles.isWarning,
|
||||||
isCheckInput && styles.isCheckInput
|
isCheckInput && styles.isCheckInput
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
{text}
|
{text}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -98,8 +98,13 @@ RootFolderSelectInput.propTypes = {
|
||||||
values: PropTypes.arrayOf(PropTypes.object).isRequired,
|
values: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||||
isSaving: PropTypes.bool.isRequired,
|
isSaving: PropTypes.bool.isRequired,
|
||||||
saveError: PropTypes.object,
|
saveError: PropTypes.object,
|
||||||
|
includeNoChange: PropTypes.bool.isRequired,
|
||||||
onChange: PropTypes.func.isRequired,
|
onChange: PropTypes.func.isRequired,
|
||||||
onNewRootFolderSelect: PropTypes.func.isRequired
|
onNewRootFolderSelect: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RootFolderSelectInput.defaultProps = {
|
||||||
|
includeNoChange: false
|
||||||
|
};
|
||||||
|
|
||||||
export default RootFolderSelectInput;
|
export default RootFolderSelectInput;
|
||||||
|
|
|
@ -21,7 +21,8 @@ function RootFolderSelectInputOption(props) {
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
styles.optionText,
|
styles.optionText,
|
||||||
isMobile && styles.isMobile
|
isMobile && styles.isMobile
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
<div>{value}</div>
|
<div>{value}</div>
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,8 @@ function RootFolderSelectInputSelectedValue(props) {
|
||||||
{...otherProps}
|
{...otherProps}
|
||||||
>
|
>
|
||||||
<div className={styles.path}>
|
<div className={styles.path}>
|
||||||
{value
|
{value}
|
||||||
}</div>
|
</div>
|
||||||
|
|
||||||
{
|
{
|
||||||
freeSpace != null && includeFreeSpace &&
|
freeSpace != null && includeFreeSpace &&
|
||||||
|
|
|
@ -24,8 +24,7 @@ function Icon(props) {
|
||||||
style={{
|
style={{
|
||||||
fontSize: `${size}px`
|
fontSize: `${size}px`
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
</i>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,6 @@ class ClipboardButton extends Component {
|
||||||
...otherProps
|
...otherProps
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
showSuccess,
|
showSuccess,
|
||||||
showError
|
showError
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&:global(.isDisabled) {
|
&:global(.isDisabled) {
|
||||||
/*color: $disabledColor;*/
|
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,24 +28,8 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: 2px solid #3a3f51;
|
border: 2px solid #3a3f51;
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
animation-fill-mode: both;
|
|
||||||
animation: rippleContainer 1.25s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8);
|
animation: rippleContainer 1.25s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8);
|
||||||
}
|
animation-fill-mode: both;
|
||||||
|
|
||||||
@-webkit-keyframes rippleContainer {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: scale(0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
70% {
|
|
||||||
opacity: 0.7;
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes rippleContainer {
|
@keyframes rippleContainer {
|
||||||
|
|
|
@ -1,21 +1,16 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React from 'react';
|
||||||
import { icons } from 'Helpers/Props';
|
import { icons } from 'Helpers/Props';
|
||||||
import Menu from 'Components/Menu/Menu';
|
import Menu from 'Components/Menu/Menu';
|
||||||
import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton';
|
import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton';
|
||||||
import styles from './FilterMenu.css';
|
import styles from './FilterMenu.css';
|
||||||
|
|
||||||
class FilterMenu extends Component {
|
function FilterMenu(props) {
|
||||||
|
|
||||||
//
|
|
||||||
// Render
|
|
||||||
|
|
||||||
render() {
|
|
||||||
const {
|
const {
|
||||||
className,
|
className,
|
||||||
children,
|
children,
|
||||||
...otherProps
|
...otherProps
|
||||||
} = this.props;
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Menu
|
<Menu
|
||||||
|
@ -30,7 +25,6 @@ class FilterMenu extends Component {
|
||||||
</Menu>
|
</Menu>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
FilterMenu.propTypes = {
|
FilterMenu.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
|
|
|
@ -1,20 +1,15 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React from 'react';
|
||||||
import { icons } from 'Helpers/Props';
|
import { icons } from 'Helpers/Props';
|
||||||
import Menu from 'Components/Menu/Menu';
|
import Menu from 'Components/Menu/Menu';
|
||||||
import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton';
|
import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton';
|
||||||
|
|
||||||
class SortMenu extends Component {
|
function SortMenu(props) {
|
||||||
|
|
||||||
//
|
|
||||||
// Render
|
|
||||||
|
|
||||||
render() {
|
|
||||||
const {
|
const {
|
||||||
className,
|
className,
|
||||||
children,
|
children,
|
||||||
...otherProps
|
...otherProps
|
||||||
} = this.props;
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Menu
|
<Menu
|
||||||
|
@ -29,7 +24,6 @@ class SortMenu extends Component {
|
||||||
</Menu>
|
</Menu>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
SortMenu.propTypes = {
|
SortMenu.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
|
|
|
@ -40,7 +40,8 @@ PageContentBody.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
innerClassName: PropTypes.string,
|
innerClassName: PropTypes.string,
|
||||||
isSmallScreen: PropTypes.bool.isRequired,
|
isSmallScreen: PropTypes.bool.isRequired,
|
||||||
children: PropTypes.node.isRequired
|
children: PropTypes.node.isRequired,
|
||||||
|
dispatch: PropTypes.func
|
||||||
};
|
};
|
||||||
|
|
||||||
PageContentBody.defaultProps = {
|
PageContentBody.defaultProps = {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
.jumpBar {
|
.jumpBar {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: stretch;
|
|
||||||
align-content: stretch;
|
align-content: stretch;
|
||||||
|
align-items: stretch;
|
||||||
align-self: stretch;
|
align-self: stretch;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex: 0 0 30px;
|
flex: 0 0 30px;
|
||||||
|
|
|
@ -43,7 +43,8 @@ function Message(props) {
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
styles.message,
|
styles.message,
|
||||||
styles[type]
|
styles[type]
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
<div className={styles.iconContainer}>
|
<div className={styles.iconContainer}>
|
||||||
<Icon
|
<Icon
|
||||||
name={getIconName(name)}
|
name={getIconName(name)}
|
||||||
|
|
|
@ -148,7 +148,8 @@ class PageToolbarSection extends Component {
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
styles.section,
|
styles.section,
|
||||||
styles[alignContent]
|
styles[alignContent]
|
||||||
)}>
|
)}
|
||||||
|
>
|
||||||
{
|
{
|
||||||
buttons.map((button) => {
|
buttons.map((button) => {
|
||||||
return button;
|
return button;
|
||||||
|
|
|
@ -8,7 +8,7 @@ class PageToolbarSeparator extends Component {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div className={styles.separator}></div>
|
<div className={styles.separator} />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
.scroller {
|
.scroller {
|
||||||
|
/* Placeholder */
|
||||||
}
|
}
|
||||||
|
|
||||||
.thumb {
|
.thumb {
|
||||||
|
|
|
@ -5,7 +5,7 @@ import Link from 'Components/Link/Link';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import styles from './TableHeaderCell.css';
|
import styles from './TableHeaderCell.css';
|
||||||
|
|
||||||
class VirtualTableHeaderCell extends Component {
|
class TableHeaderCell extends Component {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
@ -72,7 +72,7 @@ class VirtualTableHeaderCell extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualTableHeaderCell.propTypes = {
|
TableHeaderCell.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
||||||
|
@ -86,9 +86,9 @@ VirtualTableHeaderCell.propTypes = {
|
||||||
onSortPress: PropTypes.func
|
onSortPress: PropTypes.func
|
||||||
};
|
};
|
||||||
|
|
||||||
VirtualTableHeaderCell.defaultProps = {
|
TableHeaderCell.defaultProps = {
|
||||||
className: styles.headerCell,
|
className: styles.headerCell,
|
||||||
isSortable: false
|
isSortable: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export default VirtualTableHeaderCell;
|
export default TableHeaderCell;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* stylelint-disable */
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
||||||
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
||||||
|
@ -2335,3 +2337,5 @@
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
clip: auto;
|
clip: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-enable */
|
|
@ -3,7 +3,7 @@ import styles from './InteractiveImportRowCellPlaceholder.css';
|
||||||
|
|
||||||
function InteractiveImportRowCellPlaceholder() {
|
function InteractiveImportRowCellPlaceholder() {
|
||||||
return (
|
return (
|
||||||
<span className={styles.placeholder}></span>
|
<span className={styles.placeholder} />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ class AddDownloadClientModalContent extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
!isFetching && !error &&
|
isPopulated && !error &&
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<Alert kind={kinds.INFO}>
|
<Alert kind={kinds.INFO}>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { inputTypes, kinds } from 'Helpers/Props';
|
import { inputTypes } from 'Helpers/Props';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton';
|
import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
|
|
|
@ -42,7 +42,7 @@ class AddNotificationModalContent extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
!isFetching && !error &&
|
!isPopulated && !error &&
|
||||||
<div>
|
<div>
|
||||||
<div className={styles.notifications}>
|
<div className={styles.notifications}>
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import _ from 'lodash';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { kinds, sizes } from 'Helpers/Props';
|
import { kinds } from 'Helpers/Props';
|
||||||
import Button from 'Components/Link/Button';
|
import Button from 'Components/Link/Button';
|
||||||
import Modal from 'Components/Modal/Modal';
|
import Modal from 'Components/Modal/Modal';
|
||||||
import ModalContent from 'Components/Modal/ModalContent';
|
import ModalContent from 'Components/Modal/ModalContent';
|
||||||
|
@ -11,7 +11,6 @@ import ModalFooter from 'Components/Modal/ModalFooter';
|
||||||
function PendingChangesModal(props) {
|
function PendingChangesModal(props) {
|
||||||
const {
|
const {
|
||||||
isOpen,
|
isOpen,
|
||||||
size,
|
|
||||||
onConfirm,
|
onConfirm,
|
||||||
onCancel
|
onCancel
|
||||||
} = props;
|
} = props;
|
||||||
|
@ -52,7 +51,6 @@ PendingChangesModal.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
isOpen: PropTypes.bool.isRequired,
|
isOpen: PropTypes.bool.isRequired,
|
||||||
kind: PropTypes.oneOf(kinds.all),
|
kind: PropTypes.oneOf(kinds.all),
|
||||||
size: PropTypes.oneOf(sizes.all),
|
|
||||||
onConfirm: PropTypes.func.isRequired,
|
onConfirm: PropTypes.func.isRequired,
|
||||||
onCancel: PropTypes.func.isRequired
|
onCancel: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
|
@ -78,7 +78,6 @@ class DelayProfile extends Component {
|
||||||
preferredProtocol,
|
preferredProtocol,
|
||||||
usenetDelay,
|
usenetDelay,
|
||||||
torrentDelay,
|
torrentDelay,
|
||||||
order,
|
|
||||||
tags,
|
tags,
|
||||||
tagList,
|
tagList,
|
||||||
isDragging,
|
isDragging,
|
||||||
|
@ -158,7 +157,6 @@ DelayProfile.propTypes = {
|
||||||
preferredProtocol: PropTypes.string.isRequired,
|
preferredProtocol: PropTypes.string.isRequired,
|
||||||
usenetDelay: PropTypes.number.isRequired,
|
usenetDelay: PropTypes.number.isRequired,
|
||||||
torrentDelay: PropTypes.number.isRequired,
|
torrentDelay: PropTypes.number.isRequired,
|
||||||
order: PropTypes.number.isRequired,
|
|
||||||
tags: PropTypes.arrayOf(PropTypes.number).isRequired,
|
tags: PropTypes.arrayOf(PropTypes.number).isRequired,
|
||||||
tagList: PropTypes.arrayOf(PropTypes.object).isRequired,
|
tagList: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||||
isDragging: PropTypes.bool.isRequired,
|
isDragging: PropTypes.bool.isRequired,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
if (window.Sonarr.analytics) {
|
if (window.Sonarr.analytics) {
|
||||||
var d = document;
|
const d = document;
|
||||||
var g = d.createElement('script');
|
const g = d.createElement('script');
|
||||||
var s = d.getElementsByTagName('script')[0];
|
const s = d.getElementsByTagName('script')[0];
|
||||||
g.type = 'text/javascript';
|
g.type = 'text/javascript';
|
||||||
g.async = true;
|
g.async = true;
|
||||||
g.defer = true;
|
g.defer = true;
|
||||||
|
|
|
@ -3,6 +3,8 @@ import ajax from 'jQuery/jquery.ajax';
|
||||||
|
|
||||||
ajax($);
|
ajax($);
|
||||||
|
|
||||||
|
const jquery = $;
|
||||||
window.$ = $;
|
window.$ = $;
|
||||||
window.jQuery = $;
|
window.jQuery = $;
|
||||||
export default $;
|
|
||||||
|
export default jquery;
|
||||||
|
|
|
@ -12,11 +12,13 @@ const section = 'series';
|
||||||
const artistActionHandlers = {
|
const artistActionHandlers = {
|
||||||
[types.FETCH_ARTIST]: createFetchHandler(section, '/artist'),
|
[types.FETCH_ARTIST]: createFetchHandler(section, '/artist'),
|
||||||
|
|
||||||
[types.SAVE_ARTIST]: createSaveProviderHandler(section,
|
[types.SAVE_ARTIST]: createSaveProviderHandler(
|
||||||
|
section,
|
||||||
'/artist',
|
'/artist',
|
||||||
(state) => state.series),
|
(state) => state.series),
|
||||||
|
|
||||||
[types.DELETE_ARTIST]: createRemoveItemHandler(section,
|
[types.DELETE_ARTIST]: createRemoveItemHandler(
|
||||||
|
section,
|
||||||
'/artist',
|
'/artist',
|
||||||
(state) => state.series),
|
(state) => state.series),
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* eslint callback-return: 0 */
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import requestAction from 'Utilities/requestAction';
|
import requestAction from 'Utilities/requestAction';
|
||||||
|
|
|
@ -10,7 +10,8 @@ const section = 'rootFolders';
|
||||||
const rootFolderActionHandlers = {
|
const rootFolderActionHandlers = {
|
||||||
[types.FETCH_ROOT_FOLDERS]: createFetchHandler('rootFolders', '/rootFolder'),
|
[types.FETCH_ROOT_FOLDERS]: createFetchHandler('rootFolders', '/rootFolder'),
|
||||||
|
|
||||||
[types.DELETE_ROOT_FOLDER]: createRemoveItemHandler('rootFolders',
|
[types.DELETE_ROOT_FOLDER]: createRemoveItemHandler(
|
||||||
|
'rootFolders',
|
||||||
'/rootFolder',
|
'/rootFolder',
|
||||||
(state) => state.rootFolders),
|
(state) => state.rootFolders),
|
||||||
|
|
||||||
|
|
|
@ -88,32 +88,38 @@ const settingsActionHandlers = {
|
||||||
[types.FETCH_QUALITY_PROFILES]: createFetchHandler('qualityProfiles', '/qualityprofile'),
|
[types.FETCH_QUALITY_PROFILES]: createFetchHandler('qualityProfiles', '/qualityprofile'),
|
||||||
[types.FETCH_QUALITY_PROFILE_SCHEMA]: createFetchSchemaHandler('qualityProfiles', '/qualityprofile/schema'),
|
[types.FETCH_QUALITY_PROFILE_SCHEMA]: createFetchSchemaHandler('qualityProfiles', '/qualityprofile/schema'),
|
||||||
|
|
||||||
[types.SAVE_QUALITY_PROFILE]: createSaveProviderHandler('qualityProfiles',
|
[types.SAVE_QUALITY_PROFILE]: createSaveProviderHandler(
|
||||||
|
'qualityProfiles',
|
||||||
'/qualityprofile',
|
'/qualityprofile',
|
||||||
(state) => state.settings.qualityProfiles),
|
(state) => state.settings.qualityProfiles),
|
||||||
|
|
||||||
[types.DELETE_QUALITY_PROFILE]: createRemoveItemHandler('qualityProfiles',
|
[types.DELETE_QUALITY_PROFILE]: createRemoveItemHandler(
|
||||||
|
'qualityProfiles',
|
||||||
'/qualityprofile',
|
'/qualityprofile',
|
||||||
(state) => state.settings.qualityProfiles),
|
(state) => state.settings.qualityProfiles),
|
||||||
|
|
||||||
[types.FETCH_LANGUAGE_PROFILES]: createFetchHandler('languageProfiles', '/languageprofile'),
|
[types.FETCH_LANGUAGE_PROFILES]: createFetchHandler('languageProfiles', '/languageprofile'),
|
||||||
[types.FETCH_LANGUAGE_PROFILE_SCHEMA]: createFetchSchemaHandler('languageProfiles', '/languageprofile/schema'),
|
[types.FETCH_LANGUAGE_PROFILE_SCHEMA]: createFetchSchemaHandler('languageProfiles', '/languageprofile/schema'),
|
||||||
|
|
||||||
[types.SAVE_LANGUAGE_PROFILE]: createSaveProviderHandler('languageProfiles',
|
[types.SAVE_LANGUAGE_PROFILE]: createSaveProviderHandler(
|
||||||
|
'languageProfiles',
|
||||||
'/languageprofile',
|
'/languageprofile',
|
||||||
(state) => state.settings.languageProfiles),
|
(state) => state.settings.languageProfiles),
|
||||||
|
|
||||||
[types.DELETE_LANGUAGE_PROFILE]: createRemoveItemHandler('languageProfiles',
|
[types.DELETE_LANGUAGE_PROFILE]: createRemoveItemHandler(
|
||||||
|
'languageProfiles',
|
||||||
'/languageprofile',
|
'/languageprofile',
|
||||||
(state) => state.settings.languageProfiles),
|
(state) => state.settings.languageProfiles),
|
||||||
|
|
||||||
[types.FETCH_DELAY_PROFILES]: createFetchHandler('delayProfiles', '/delayprofile'),
|
[types.FETCH_DELAY_PROFILES]: createFetchHandler('delayProfiles', '/delayprofile'),
|
||||||
|
|
||||||
[types.SAVE_DELAY_PROFILE]: createSaveProviderHandler('delayProfiles',
|
[types.SAVE_DELAY_PROFILE]: createSaveProviderHandler(
|
||||||
|
'delayProfiles',
|
||||||
'/delayprofile',
|
'/delayprofile',
|
||||||
(state) => state.settings.delayProfiles),
|
(state) => state.settings.delayProfiles),
|
||||||
|
|
||||||
[types.DELETE_DELAY_PROFILE]: createRemoveItemHandler('delayProfiles',
|
[types.DELETE_DELAY_PROFILE]: createRemoveItemHandler(
|
||||||
|
'delayProfiles',
|
||||||
'/delayprofile',
|
'/delayprofile',
|
||||||
(state) => state.settings.delayProfiles),
|
(state) => state.settings.delayProfiles),
|
||||||
|
|
||||||
|
@ -157,17 +163,20 @@ const settingsActionHandlers = {
|
||||||
[types.FETCH_INDEXERS]: createFetchHandler('indexers', '/indexer'),
|
[types.FETCH_INDEXERS]: createFetchHandler('indexers', '/indexer'),
|
||||||
[types.FETCH_INDEXER_SCHEMA]: createFetchSchemaHandler('indexers', '/indexer/schema'),
|
[types.FETCH_INDEXER_SCHEMA]: createFetchSchemaHandler('indexers', '/indexer/schema'),
|
||||||
|
|
||||||
[types.SAVE_INDEXER]: createSaveProviderHandler('indexers',
|
[types.SAVE_INDEXER]: createSaveProviderHandler(
|
||||||
|
'indexers',
|
||||||
'/indexer',
|
'/indexer',
|
||||||
(state) => state.settings.indexers),
|
(state) => state.settings.indexers),
|
||||||
|
|
||||||
[types.CANCEL_SAVE_INDEXER]: createCancelSaveProviderHandler('indexers'),
|
[types.CANCEL_SAVE_INDEXER]: createCancelSaveProviderHandler('indexers'),
|
||||||
|
|
||||||
[types.DELETE_INDEXER]: createRemoveItemHandler('indexers',
|
[types.DELETE_INDEXER]: createRemoveItemHandler(
|
||||||
|
'indexers',
|
||||||
'/indexer',
|
'/indexer',
|
||||||
(state) => state.settings.indexers),
|
(state) => state.settings.indexers),
|
||||||
|
|
||||||
[types.TEST_INDEXER]: createTestProviderHandler('indexers',
|
[types.TEST_INDEXER]: createTestProviderHandler(
|
||||||
|
'indexers',
|
||||||
'/indexer',
|
'/indexer',
|
||||||
(state) => state.settings.indexers),
|
(state) => state.settings.indexers),
|
||||||
|
|
||||||
|
@ -178,28 +187,33 @@ const settingsActionHandlers = {
|
||||||
|
|
||||||
[types.FETCH_RESTRICTIONS]: createFetchHandler('restrictions', '/restriction'),
|
[types.FETCH_RESTRICTIONS]: createFetchHandler('restrictions', '/restriction'),
|
||||||
|
|
||||||
[types.SAVE_RESTRICTION]: createSaveProviderHandler('restrictions',
|
[types.SAVE_RESTRICTION]: createSaveProviderHandler(
|
||||||
|
'restrictions',
|
||||||
'/restriction',
|
'/restriction',
|
||||||
(state) => state.settings.restrictions),
|
(state) => state.settings.restrictions),
|
||||||
|
|
||||||
[types.DELETE_RESTRICTION]: createRemoveItemHandler('restrictions',
|
[types.DELETE_RESTRICTION]: createRemoveItemHandler(
|
||||||
|
'restrictions',
|
||||||
'/restriction',
|
'/restriction',
|
||||||
(state) => state.settings.restrictions),
|
(state) => state.settings.restrictions),
|
||||||
|
|
||||||
[types.FETCH_DOWNLOAD_CLIENTS]: createFetchHandler('downloadClients', '/downloadclient'),
|
[types.FETCH_DOWNLOAD_CLIENTS]: createFetchHandler('downloadClients', '/downloadclient'),
|
||||||
[types.FETCH_DOWNLOAD_CLIENT_SCHEMA]: createFetchSchemaHandler('downloadClients', '/downloadclient/schema'),
|
[types.FETCH_DOWNLOAD_CLIENT_SCHEMA]: createFetchSchemaHandler('downloadClients', '/downloadclient/schema'),
|
||||||
|
|
||||||
[types.SAVE_DOWNLOAD_CLIENT]: createSaveProviderHandler('downloadClients',
|
[types.SAVE_DOWNLOAD_CLIENT]: createSaveProviderHandler(
|
||||||
|
'downloadClients',
|
||||||
'/downloadclient',
|
'/downloadclient',
|
||||||
(state) => state.settings.downloadClients),
|
(state) => state.settings.downloadClients),
|
||||||
|
|
||||||
[types.CANCEL_SAVE_DOWNLOAD_CLIENT]: createCancelSaveProviderHandler('downloadClients'),
|
[types.CANCEL_SAVE_DOWNLOAD_CLIENT]: createCancelSaveProviderHandler('downloadClients'),
|
||||||
|
|
||||||
[types.DELETE_DOWNLOAD_CLIENT]: createRemoveItemHandler('downloadClients',
|
[types.DELETE_DOWNLOAD_CLIENT]: createRemoveItemHandler(
|
||||||
|
'downloadClients',
|
||||||
'/downloadclient',
|
'/downloadclient',
|
||||||
(state) => state.settings.downloadClients),
|
(state) => state.settings.downloadClients),
|
||||||
|
|
||||||
[types.TEST_DOWNLOAD_CLIENT]: createTestProviderHandler('downloadClients',
|
[types.TEST_DOWNLOAD_CLIENT]: createTestProviderHandler(
|
||||||
|
'downloadClients',
|
||||||
'/downloadclient',
|
'/downloadclient',
|
||||||
(state) => state.settings.downloadClients),
|
(state) => state.settings.downloadClients),
|
||||||
|
|
||||||
|
@ -210,28 +224,33 @@ const settingsActionHandlers = {
|
||||||
|
|
||||||
[types.FETCH_REMOTE_PATH_MAPPINGS]: createFetchHandler('remotePathMappings', '/remotepathmapping'),
|
[types.FETCH_REMOTE_PATH_MAPPINGS]: createFetchHandler('remotePathMappings', '/remotepathmapping'),
|
||||||
|
|
||||||
[types.SAVE_REMOTE_PATH_MAPPING]: createSaveProviderHandler('remotePathMappings',
|
[types.SAVE_REMOTE_PATH_MAPPING]: createSaveProviderHandler(
|
||||||
|
'remotePathMappings',
|
||||||
'/remotepathmapping',
|
'/remotepathmapping',
|
||||||
(state) => state.settings.remotePathMappings),
|
(state) => state.settings.remotePathMappings),
|
||||||
|
|
||||||
[types.DELETE_REMOTE_PATH_MAPPING]: createRemoveItemHandler('remotePathMappings',
|
[types.DELETE_REMOTE_PATH_MAPPING]: createRemoveItemHandler(
|
||||||
|
'remotePathMappings',
|
||||||
'/remotepathmapping',
|
'/remotepathmapping',
|
||||||
(state) => state.settings.remotePathMappings),
|
(state) => state.settings.remotePathMappings),
|
||||||
|
|
||||||
[types.FETCH_NOTIFICATIONS]: createFetchHandler('notifications', '/notification'),
|
[types.FETCH_NOTIFICATIONS]: createFetchHandler('notifications', '/notification'),
|
||||||
[types.FETCH_NOTIFICATION_SCHEMA]: createFetchSchemaHandler('notifications', '/notification/schema'),
|
[types.FETCH_NOTIFICATION_SCHEMA]: createFetchSchemaHandler('notifications', '/notification/schema'),
|
||||||
|
|
||||||
[types.SAVE_NOTIFICATION]: createSaveProviderHandler('notifications',
|
[types.SAVE_NOTIFICATION]: createSaveProviderHandler(
|
||||||
|
'notifications',
|
||||||
'/notification',
|
'/notification',
|
||||||
(state) => state.settings.notifications),
|
(state) => state.settings.notifications),
|
||||||
|
|
||||||
[types.CANCEL_SAVE_NOTIFICATION]: createCancelSaveProviderHandler('notifications'),
|
[types.CANCEL_SAVE_NOTIFICATION]: createCancelSaveProviderHandler('notifications'),
|
||||||
|
|
||||||
[types.DELETE_NOTIFICATION]: createRemoveItemHandler('notifications',
|
[types.DELETE_NOTIFICATION]: createRemoveItemHandler(
|
||||||
|
'notifications',
|
||||||
'/notification',
|
'/notification',
|
||||||
(state) => state.settings.notifications),
|
(state) => state.settings.notifications),
|
||||||
|
|
||||||
[types.TEST_NOTIFICATION]: createTestProviderHandler('notifications',
|
[types.TEST_NOTIFICATION]: createTestProviderHandler(
|
||||||
|
'notifications',
|
||||||
'/notification',
|
'/notification',
|
||||||
(state) => state.settings.notifications),
|
(state) => state.settings.notifications),
|
||||||
|
|
||||||
|
@ -239,7 +258,8 @@ const settingsActionHandlers = {
|
||||||
|
|
||||||
[types.FETCH_METADATA]: createFetchHandler('metadata', '/metadata'),
|
[types.FETCH_METADATA]: createFetchHandler('metadata', '/metadata'),
|
||||||
|
|
||||||
[types.SAVE_METADATA]: createSaveProviderHandler('metadata',
|
[types.SAVE_METADATA]: createSaveProviderHandler(
|
||||||
|
'metadata',
|
||||||
'/metadata',
|
'/metadata',
|
||||||
(state) => state.settings.metadata),
|
(state) => state.settings.metadata),
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,15 @@
|
||||||
import { applyMiddleware, compose } from 'redux';
|
import { applyMiddleware, compose } from 'redux';
|
||||||
import Raven from 'raven-js';
|
|
||||||
import createRavenMiddleware from 'raven-for-redux';
|
|
||||||
import thunk from 'redux-thunk';
|
import thunk from 'redux-thunk';
|
||||||
import { routerMiddleware } from 'react-router-redux';
|
import { routerMiddleware } from 'react-router-redux';
|
||||||
|
import sentryMiddleware from './sentryMiddleware';
|
||||||
import persistState from './persistState';
|
import persistState from './persistState';
|
||||||
|
|
||||||
export default function(history) {
|
export default function(history) {
|
||||||
const {
|
|
||||||
analytics,
|
|
||||||
branch,
|
|
||||||
version,
|
|
||||||
release,
|
|
||||||
isProduction
|
|
||||||
} = window.Sonarr;
|
|
||||||
|
|
||||||
const dsn = isProduction ? 'https://c3a5b33e08de4e18b7d0505e942dbc95@sentry.io/216290' :
|
|
||||||
'https://c3a5b33e08de4e18b7d0505e942dbc95@sentry.io/216290';
|
|
||||||
|
|
||||||
Raven.config(dsn).install();
|
|
||||||
|
|
||||||
const middlewares = [];
|
const middlewares = [];
|
||||||
|
const ravenMiddleware = sentryMiddleware();
|
||||||
|
|
||||||
if (analytics) {
|
if (ravenMiddleware) {
|
||||||
middlewares.push(createRavenMiddleware(Raven, {
|
middlewares.push(ravenMiddleware);
|
||||||
environment: isProduction ? 'production' : 'development',
|
|
||||||
release,
|
|
||||||
tags: {
|
|
||||||
branch,
|
|
||||||
version
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
middlewares.push(routerMiddleware(history));
|
middlewares.push(routerMiddleware(history));
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
import _ from 'lodash';
|
||||||
|
import Raven from 'raven-js';
|
||||||
|
import createRavenMiddleware from 'raven-for-redux';
|
||||||
|
import parseUrl from 'Utilities/String/parseUrl';
|
||||||
|
|
||||||
|
function cleanseUrl(url) {
|
||||||
|
const properties = parseUrl(url);
|
||||||
|
|
||||||
|
return `${properties.pathname}${properties.search}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanseData(data) {
|
||||||
|
const result = _.cloneDeep(data);
|
||||||
|
|
||||||
|
result.culprit = cleanseUrl(result.culprit);
|
||||||
|
result.request.url = cleanseUrl(result.request.url);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function sentryMiddleware() {
|
||||||
|
const {
|
||||||
|
analytics,
|
||||||
|
branch,
|
||||||
|
version,
|
||||||
|
release,
|
||||||
|
isProduction
|
||||||
|
} = window.Sonarr;
|
||||||
|
|
||||||
|
if (!analytics) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const dsn = isProduction ? 'https://c3a5b33e08de4e18b7d0505e942dbc95@sentry.io/216290' :
|
||||||
|
'https://c3a5b33e08de4e18b7d0505e942dbc95@sentry.io/216290';
|
||||||
|
|
||||||
|
Raven.config(dsn).install();
|
||||||
|
|
||||||
|
return createRavenMiddleware(Raven, {
|
||||||
|
environment: isProduction ? 'production' : 'development',
|
||||||
|
release,
|
||||||
|
tags: {
|
||||||
|
branch,
|
||||||
|
version
|
||||||
|
},
|
||||||
|
dataCallback: cleanseData
|
||||||
|
});
|
||||||
|
}
|
|
@ -2,28 +2,6 @@ import _ from 'lodash';
|
||||||
import getSectionState from 'Utilities/State/getSectionState';
|
import getSectionState from 'Utilities/State/getSectionState';
|
||||||
import updateSectionState from 'Utilities/State/updateSectionState';
|
import updateSectionState from 'Utilities/State/updateSectionState';
|
||||||
|
|
||||||
const whitelistedProperties = [
|
|
||||||
'isFetching',
|
|
||||||
'isPopulated',
|
|
||||||
'error',
|
|
||||||
'isFetchingSchema',
|
|
||||||
'schemaPopulated',
|
|
||||||
'schemaError',
|
|
||||||
'schema',
|
|
||||||
'selectedSchema',
|
|
||||||
'isSaving',
|
|
||||||
'saveError',
|
|
||||||
'isTesting',
|
|
||||||
'isDeleting',
|
|
||||||
'deleteError',
|
|
||||||
'pendingChanges',
|
|
||||||
'filterKey',
|
|
||||||
'filterValue',
|
|
||||||
'page',
|
|
||||||
'sortKey',
|
|
||||||
'sortDirection'
|
|
||||||
];
|
|
||||||
|
|
||||||
const blacklistedProperties = [
|
const blacklistedProperties = [
|
||||||
'section',
|
'section',
|
||||||
'id'
|
'id'
|
||||||
|
|
|
@ -9,7 +9,8 @@ const whitelistedProperties = [
|
||||||
|
|
||||||
function createSetTableOptionReducer(section) {
|
function createSetTableOptionReducer(section) {
|
||||||
return (state, { payload }) => {
|
return (state, { payload }) => {
|
||||||
const newState = Object.assign(getSectionState(state, section),
|
const newState = Object.assign(
|
||||||
|
getSectionState(state, section),
|
||||||
_.pick(payload, whitelistedProperties));
|
_.pick(payload, whitelistedProperties));
|
||||||
|
|
||||||
return updateSectionState(state, section, newState);
|
return updateSectionState(state, section, newState);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { handleActions } from 'redux-actions';
|
import { handleActions } from 'redux-actions';
|
||||||
import updateSectionState from 'Utilities/State/updateSectionState';
|
|
||||||
import { sortDirections } from 'Helpers/Props';
|
import { sortDirections } from 'Helpers/Props';
|
||||||
import * as types from 'Store/Actions/actionTypes';
|
import * as types from 'Store/Actions/actionTypes';
|
||||||
import createClearReducer from './Creators/createClearReducer';
|
import createClearReducer from './Creators/createClearReducer';
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
|
/* stylelint-disable */
|
||||||
|
|
||||||
@import '~normalize.css/normalize.css';
|
@import '~normalize.css/normalize.css';
|
||||||
@import 'scaffolding.css';
|
@import 'scaffolding.css';
|
||||||
@import '../Content/Fonts/fonts.css';
|
@import '../Content/Fonts/fonts.css';
|
||||||
@import '../Content/Fonts/font-awesome.css';
|
@import '../Content/Fonts/font-awesome.css';
|
||||||
|
|
||||||
|
/* stylelint-enable */
|
|
@ -1,19 +1,22 @@
|
||||||
|
/* stylelint-disable */
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
*:before,
|
|
||||||
*:after {
|
*::before,
|
||||||
|
*::after {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
*:focus {
|
*:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
/* stylelint-enable */
|
||||||
|
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
color: #515253;
|
color: #515253;
|
||||||
font-family: "Roboto", "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
font-family: 'Roboto', 'open sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
|
|
@ -123,6 +123,8 @@ class LogsTableRow extends Component {
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ class UpdateChanges extends Component {
|
||||||
<li key={index}>
|
<li key={index}>
|
||||||
{change}
|
{change}
|
||||||
</li>
|
</li>
|
||||||
)
|
);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -42,4 +42,4 @@ UpdateChanges.propTypes = {
|
||||||
changes: PropTypes.arrayOf(PropTypes.string)
|
changes: PropTypes.arrayOf(PropTypes.string)
|
||||||
};
|
};
|
||||||
|
|
||||||
export default UpdateChanges
|
export default UpdateChanges;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* eslint max-params: 0 */
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
function isTomrrow(date) {
|
function isTomorrow(date) {
|
||||||
if (!date) {
|
if (!date) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -8,4 +8,4 @@ function isTomrrow(date) {
|
||||||
return moment(date).isSame(moment().add(1, 'day'), 'day');
|
return moment(date).isSame(moment().add(1, 'day'), 'day');
|
||||||
}
|
}
|
||||||
|
|
||||||
export default isTomrrow;
|
export default isTomorrow;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
var $ = require('jquery');
|
import $ from 'jquery';
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
resolutions: {
|
resolutions: {
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
import _ from 'lodash';
|
||||||
|
import qs from 'qs';
|
||||||
|
|
||||||
|
// See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils
|
||||||
|
const anchor = document.createElement('a');
|
||||||
|
|
||||||
|
export default function parseUrl(url) {
|
||||||
|
anchor.href = url;
|
||||||
|
|
||||||
|
// The `origin`, `password`, and `username` properties are unavailable in
|
||||||
|
// Opera Presto. We synthesize `origin` if it's not present. While `password`
|
||||||
|
// and `username` are ignored intentionally.
|
||||||
|
const properties = _.pick(
|
||||||
|
anchor,
|
||||||
|
'hash',
|
||||||
|
'host',
|
||||||
|
'hostname',
|
||||||
|
'href',
|
||||||
|
'origin',
|
||||||
|
'pathname',
|
||||||
|
'port',
|
||||||
|
'protocol',
|
||||||
|
'search'
|
||||||
|
);
|
||||||
|
|
||||||
|
properties.isAbsolute = (/^[\w:]*\/\//).test(url);
|
||||||
|
|
||||||
|
if (properties.search) {
|
||||||
|
// Remove leading ? from querystring before parsing.
|
||||||
|
properties.params = qs.parse(properties.search.substring(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
return properties;
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
export default function aareAllSelected(selectedState) {
|
export default function areAllSelected(selectedState) {
|
||||||
let allSelected = true;
|
let allSelected = true;
|
||||||
let allUnselected = true;
|
let allUnselected = true;
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,7 @@ export default function createAjaxRequest() {
|
||||||
xhr.aborted = aborted;
|
xhr.aborted = aborted;
|
||||||
|
|
||||||
return $.Deferred().reject(xhr, textStatus, errorThrown).promise();
|
return $.Deferred().reject(xhr, textStatus, errorThrown).promise();
|
||||||
})
|
}).always(() => {
|
||||||
.always(() => {
|
|
||||||
complete = true;
|
complete = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,8 @@ function CutoffUnmetRow(props) {
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
|
@ -129,6 +129,8 @@ function MissingRow(props) {
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* eslint no-empty-function: 0 no-extend-native: 0 */
|
||||||
|
|
||||||
window.console = window.console || {};
|
window.console = window.console || {};
|
||||||
window.console.log = window.console.log || function() {};
|
window.console.log = window.console.log || function() {};
|
||||||
window.console.group = window.console.group || function() {};
|
window.console.group = window.console.group || function() {};
|
||||||
|
@ -26,7 +28,7 @@ if (!String.prototype.endsWith) {
|
||||||
value(searchString, position) {
|
value(searchString, position) {
|
||||||
position = position || this.length;
|
position = position || this.length;
|
||||||
position = position - searchString.length;
|
position = position - searchString.length;
|
||||||
var lastIndex = this.lastIndexOf(searchString);
|
const lastIndex = this.lastIndexOf(searchString);
|
||||||
return lastIndex !== -1 && lastIndex === position;
|
return lastIndex !== -1 && lastIndex === position;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -34,6 +36,6 @@ if (!String.prototype.endsWith) {
|
||||||
|
|
||||||
if (!('contains' in String.prototype)) {
|
if (!('contains' in String.prototype)) {
|
||||||
String.prototype.contains = function(str, startIndex) {
|
String.prototype.contains = function(str, startIndex) {
|
||||||
return -1 !== String.prototype.indexOf.call(this, str, startIndex);
|
return String.prototype.indexOf.call(this, str, startIndex) !== -1;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* eslint no-undef: 0 */
|
||||||
import 'Shims/jquery';
|
import 'Shims/jquery';
|
||||||
|
|
||||||
__webpack_public_path__ = `${window.Sonarr.urlBase}/`;
|
__webpack_public_path__ = `${window.Sonarr.urlBase}/`;
|
||||||
|
|
|
@ -4,7 +4,10 @@
|
||||||
"description": "Lidarr",
|
"description": "Lidarr",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "gulp build",
|
"build": "gulp build",
|
||||||
"start": "gulp watch"
|
"start": "gulp watch",
|
||||||
|
"eslint": "esprint check",
|
||||||
|
"eslint-fix": "eslint start --fix",
|
||||||
|
"stylelint": "stylelint frontend/**/*.css --config frontend/.stylelintrc"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -34,6 +37,7 @@
|
||||||
"eslint-loader": "1.9.0",
|
"eslint-loader": "1.9.0",
|
||||||
"eslint-plugin-filenames": "1.2.0",
|
"eslint-plugin-filenames": "1.2.0",
|
||||||
"eslint-plugin-react": "7.4.0",
|
"eslint-plugin-react": "7.4.0",
|
||||||
|
"esprint": "0.4.0",
|
||||||
"extract-text-webpack-plugin": "3.0.0",
|
"extract-text-webpack-plugin": "3.0.0",
|
||||||
"file-loader": "0.11.2",
|
"file-loader": "0.11.2",
|
||||||
"filesize": "3.5.10",
|
"filesize": "3.5.10",
|
||||||
|
@ -64,6 +68,7 @@
|
||||||
"postcss-nested": "2.1.2",
|
"postcss-nested": "2.1.2",
|
||||||
"postcss-simple-vars": "4.1.0",
|
"postcss-simple-vars": "4.1.0",
|
||||||
"prop-types": "15.6.0",
|
"prop-types": "15.6.0",
|
||||||
|
"qs": "6.5.1",
|
||||||
"query-string": "5.0.0",
|
"query-string": "5.0.0",
|
||||||
"raven-for-redux": "1.0.0",
|
"raven-for-redux": "1.0.0",
|
||||||
"raven-js": "3.17.0",
|
"raven-js": "3.17.0",
|
||||||
|
|
125
yarn.lock
125
yarn.lock
|
@ -1020,6 +1020,10 @@ binary-extensions@^1.0.0:
|
||||||
version "1.10.0"
|
version "1.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
|
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
|
||||||
|
|
||||||
|
bindings@^1.2.1:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
|
||||||
|
|
||||||
bl@^1.1.2:
|
bl@^1.1.2:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
|
resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
|
||||||
|
@ -1162,6 +1166,12 @@ browserslist@~1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-db "^1.0.30000525"
|
caniuse-db "^1.0.30000525"
|
||||||
|
|
||||||
|
bser@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
|
||||||
|
dependencies:
|
||||||
|
node-int64 "^0.4.0"
|
||||||
|
|
||||||
buffer-xor@^1.0.3:
|
buffer-xor@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
||||||
|
@ -1889,6 +1899,22 @@ dnd-core@^2.5.3:
|
||||||
lodash "^4.2.0"
|
lodash "^4.2.0"
|
||||||
redux "^3.7.1"
|
redux "^3.7.1"
|
||||||
|
|
||||||
|
dnode-protocol@~0.2.2:
|
||||||
|
version "0.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/dnode-protocol/-/dnode-protocol-0.2.2.tgz#51151d16fc3b5f84815ee0b9497a1061d0d1949d"
|
||||||
|
dependencies:
|
||||||
|
jsonify "~0.0.0"
|
||||||
|
traverse "~0.6.3"
|
||||||
|
|
||||||
|
dnode@^1.2.2:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/dnode/-/dnode-1.2.2.tgz#4ac3cfe26e292b3b39b8258ae7d94edc58132efa"
|
||||||
|
dependencies:
|
||||||
|
dnode-protocol "~0.2.2"
|
||||||
|
jsonify "~0.0.0"
|
||||||
|
optionalDependencies:
|
||||||
|
weak "^1.0.0"
|
||||||
|
|
||||||
doctrine@^2.0.0:
|
doctrine@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
|
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
|
||||||
|
@ -1977,7 +2003,7 @@ enhanced-resolve@^3.4.0:
|
||||||
object-assign "^4.0.1"
|
object-assign "^4.0.1"
|
||||||
tapable "^0.2.7"
|
tapable "^0.2.7"
|
||||||
|
|
||||||
errno@^0.1.3:
|
errno@^0.1.3, errno@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
|
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2203,6 +2229,17 @@ esprima@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
|
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
|
||||||
|
|
||||||
|
esprint@0.4.0:
|
||||||
|
version "0.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/esprint/-/esprint-0.4.0.tgz#f89c9bace36d90407968a8f9ceb0800ff786aab0"
|
||||||
|
dependencies:
|
||||||
|
dnode "^1.2.2"
|
||||||
|
fb-watchman "^2.0.0"
|
||||||
|
glob "^7.1.1"
|
||||||
|
sane "^1.6.0"
|
||||||
|
worker-farm "^1.3.1"
|
||||||
|
yargs "^8.0.1"
|
||||||
|
|
||||||
esquery@^1.0.0:
|
esquery@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
|
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
|
||||||
|
@ -2254,6 +2291,12 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
|
||||||
md5.js "^1.3.4"
|
md5.js "^1.3.4"
|
||||||
safe-buffer "^5.1.1"
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
|
exec-sh@^0.2.0:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38"
|
||||||
|
dependencies:
|
||||||
|
merge "^1.1.3"
|
||||||
|
|
||||||
execa@^0.7.0:
|
execa@^0.7.0:
|
||||||
version "0.7.0"
|
version "0.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
||||||
|
@ -2356,6 +2399,12 @@ faye-websocket@~0.7.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
websocket-driver ">=0.3.6"
|
websocket-driver ">=0.3.6"
|
||||||
|
|
||||||
|
fb-watchman@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
|
||||||
|
dependencies:
|
||||||
|
bser "^2.0.0"
|
||||||
|
|
||||||
fbjs@^0.8.16:
|
fbjs@^0.8.16:
|
||||||
version "0.8.16"
|
version "0.8.16"
|
||||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
|
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
|
||||||
|
@ -2691,7 +2740,7 @@ glob@^6.0.1:
|
||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2:
|
glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2:
|
||||||
version "7.1.2"
|
version "7.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -3870,6 +3919,12 @@ make-dir@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
pify "^2.3.0"
|
pify "^2.3.0"
|
||||||
|
|
||||||
|
makeerror@1.0.x:
|
||||||
|
version "1.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
|
||||||
|
dependencies:
|
||||||
|
tmpl "1.0.x"
|
||||||
|
|
||||||
map-cache@^0.2.0:
|
map-cache@^0.2.0:
|
||||||
version "0.2.2"
|
version "0.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||||
|
@ -3946,6 +4001,10 @@ meow@^3.7.0:
|
||||||
redent "^1.0.0"
|
redent "^1.0.0"
|
||||||
trim-newlines "^1.0.0"
|
trim-newlines "^1.0.0"
|
||||||
|
|
||||||
|
merge@^1.1.3:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
|
||||||
|
|
||||||
micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
|
micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
|
||||||
version "2.3.11"
|
version "2.3.11"
|
||||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
|
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
|
||||||
|
@ -4083,7 +4142,7 @@ mute-stream@0.0.7:
|
||||||
version "0.0.7"
|
version "0.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
||||||
|
|
||||||
nan@^2.3.0:
|
nan@^2.0.5, nan@^2.3.0:
|
||||||
version "2.7.0"
|
version "2.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
|
resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
|
||||||
|
|
||||||
|
@ -4112,6 +4171,10 @@ node-fetch@^1.0.1:
|
||||||
encoding "^0.1.11"
|
encoding "^0.1.11"
|
||||||
is-stream "^1.0.1"
|
is-stream "^1.0.1"
|
||||||
|
|
||||||
|
node-int64@^0.4.0:
|
||||||
|
version "0.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
|
||||||
|
|
||||||
node-libs-browser@^2.0.0:
|
node-libs-browser@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
|
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
|
||||||
|
@ -5011,14 +5074,14 @@ qs@5.2.0:
|
||||||
version "5.2.0"
|
version "5.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz#a9f31142af468cb72b25b30136ba2456834916be"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz#a9f31142af468cb72b25b30136ba2456834916be"
|
||||||
|
|
||||||
|
qs@6.5.1, qs@~6.5.1:
|
||||||
|
version "6.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
|
||||||
|
|
||||||
qs@~2.2.3:
|
qs@~2.2.3:
|
||||||
version "2.2.5"
|
version "2.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-2.2.5.tgz#1088abaf9dcc0ae5ae45b709e6c6b5888b23923c"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-2.2.5.tgz#1088abaf9dcc0ae5ae45b709e6c6b5888b23923c"
|
||||||
|
|
||||||
qs@~6.5.1:
|
|
||||||
version "6.5.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
|
|
||||||
|
|
||||||
query-string@5.0.0:
|
query-string@5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.0.0.tgz#fbdf7004b4d2aff792f9871981b7a2794f555947"
|
resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.0.0.tgz#fbdf7004b4d2aff792f9871981b7a2794f555947"
|
||||||
|
@ -5667,6 +5730,18 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0,
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||||
|
|
||||||
|
sane@^1.6.0:
|
||||||
|
version "1.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/sane/-/sane-1.7.0.tgz#b3579bccb45c94cf20355cc81124990dfd346e30"
|
||||||
|
dependencies:
|
||||||
|
anymatch "^1.3.0"
|
||||||
|
exec-sh "^0.2.0"
|
||||||
|
fb-watchman "^2.0.0"
|
||||||
|
minimatch "^3.0.2"
|
||||||
|
minimist "^1.1.1"
|
||||||
|
walker "~1.0.5"
|
||||||
|
watch "~0.10.0"
|
||||||
|
|
||||||
sax@~1.2.1:
|
sax@~1.2.1:
|
||||||
version "1.2.4"
|
version "1.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||||
|
@ -6255,6 +6330,10 @@ tmp@^0.0.33:
|
||||||
dependencies:
|
dependencies:
|
||||||
os-tmpdir "~1.0.2"
|
os-tmpdir "~1.0.2"
|
||||||
|
|
||||||
|
tmpl@1.0.x:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
|
||||||
|
|
||||||
to-arraybuffer@^1.0.0:
|
to-arraybuffer@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
||||||
|
@ -6289,6 +6368,10 @@ tough-cookie@~2.3.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
punycode "^1.4.1"
|
punycode "^1.4.1"
|
||||||
|
|
||||||
|
traverse@~0.6.3:
|
||||||
|
version "0.6.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
|
||||||
|
|
||||||
trim-newlines@^1.0.0:
|
trim-newlines@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
||||||
|
@ -6546,12 +6629,22 @@ vm-browserify@0.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
indexof "0.0.1"
|
indexof "0.0.1"
|
||||||
|
|
||||||
|
walker@~1.0.5:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
|
||||||
|
dependencies:
|
||||||
|
makeerror "1.0.x"
|
||||||
|
|
||||||
warning@^3.0.0:
|
warning@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
|
resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.0.0"
|
loose-envify "^1.0.0"
|
||||||
|
|
||||||
|
watch@~0.10.0:
|
||||||
|
version "0.10.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"
|
||||||
|
|
||||||
watchpack@^1.4.0:
|
watchpack@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
|
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
|
||||||
|
@ -6560,6 +6653,13 @@ watchpack@^1.4.0:
|
||||||
chokidar "^1.7.0"
|
chokidar "^1.7.0"
|
||||||
graceful-fs "^4.1.2"
|
graceful-fs "^4.1.2"
|
||||||
|
|
||||||
|
weak@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/weak/-/weak-1.0.1.tgz#ab99aab30706959aa0200cb8cf545bb9cb33b99e"
|
||||||
|
dependencies:
|
||||||
|
bindings "^1.2.1"
|
||||||
|
nan "^2.0.5"
|
||||||
|
|
||||||
webpack-sources@^1.0.1:
|
webpack-sources@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf"
|
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf"
|
||||||
|
@ -6653,6 +6753,13 @@ wordwrap@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||||
|
|
||||||
|
worker-farm@^1.3.1:
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.0.tgz#adfdf0cd40581465ed0a1f648f9735722afd5c8d"
|
||||||
|
dependencies:
|
||||||
|
errno "^0.1.4"
|
||||||
|
xtend "^4.0.1"
|
||||||
|
|
||||||
wrap-ansi@^2.0.0:
|
wrap-ansi@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
||||||
|
@ -6670,7 +6777,7 @@ write@^0.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
|
|
||||||
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1:
|
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||||
|
|
||||||
|
@ -6698,7 +6805,7 @@ yargs-parser@^7.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
camelcase "^4.1.0"
|
camelcase "^4.1.0"
|
||||||
|
|
||||||
yargs@^8.0.2:
|
yargs@^8.0.1, yargs@^8.0.2:
|
||||||
version "8.0.2"
|
version "8.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in New Issue