mirror of
https://github.com/actualbudget/actual.git
synced 2026-10-12 02:10:19 +00:00
⬆️ upgrade typescript, eslint, prettier (#3289)
This commit is contained in:
+253
-4
@@ -33,9 +33,23 @@ const restrictedImportColors = [
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
plugins: ['prettier', 'import', 'rulesdir', '@typescript-eslint'],
|
||||
root: true,
|
||||
env: {
|
||||
browser: true,
|
||||
commonjs: true,
|
||||
es6: true,
|
||||
jest: true,
|
||||
node: true,
|
||||
},
|
||||
plugins: [
|
||||
'prettier',
|
||||
'import',
|
||||
'rulesdir',
|
||||
'@typescript-eslint',
|
||||
'jsx-a11y',
|
||||
'react-hooks',
|
||||
],
|
||||
extends: [
|
||||
'react-app',
|
||||
'plugin:react/recommended',
|
||||
'plugin:react/jsx-runtime',
|
||||
'plugin:prettier/recommended',
|
||||
@@ -50,6 +64,184 @@ module.exports = {
|
||||
vi: true,
|
||||
},
|
||||
rules: {
|
||||
// http://eslint.org/docs/rules/
|
||||
'array-callback-return': 'warn',
|
||||
'default-case': ['warn', { commentPattern: '^no default$' }],
|
||||
'dot-location': ['warn', 'property'],
|
||||
eqeqeq: ['warn', 'smart'],
|
||||
'new-parens': 'warn',
|
||||
'no-array-constructor': 'warn',
|
||||
'no-caller': 'warn',
|
||||
'no-cond-assign': ['warn', 'except-parens'],
|
||||
'no-const-assign': 'warn',
|
||||
'no-control-regex': 'warn',
|
||||
'no-delete-var': 'warn',
|
||||
'no-dupe-args': 'warn',
|
||||
'no-dupe-class-members': 'warn',
|
||||
'no-dupe-keys': 'warn',
|
||||
'no-duplicate-case': 'warn',
|
||||
'no-empty-character-class': 'warn',
|
||||
'no-empty-pattern': 'warn',
|
||||
'no-eval': 'warn',
|
||||
'no-ex-assign': 'warn',
|
||||
'no-extend-native': 'warn',
|
||||
'no-extra-bind': 'warn',
|
||||
'no-extra-label': 'warn',
|
||||
'no-fallthrough': 'warn',
|
||||
'no-func-assign': 'warn',
|
||||
'no-implied-eval': 'warn',
|
||||
'no-invalid-regexp': 'warn',
|
||||
'no-iterator': 'warn',
|
||||
'no-label-var': 'warn',
|
||||
'no-labels': ['warn', { allowLoop: true, allowSwitch: false }],
|
||||
'no-lone-blocks': 'warn',
|
||||
'no-mixed-operators': [
|
||||
'warn',
|
||||
{
|
||||
groups: [
|
||||
['&', '|', '^', '~', '<<', '>>', '>>>'],
|
||||
['==', '!=', '===', '!==', '>', '>=', '<', '<='],
|
||||
['&&', '||'],
|
||||
['in', 'instanceof'],
|
||||
],
|
||||
allowSamePrecedence: false,
|
||||
},
|
||||
],
|
||||
'no-multi-str': 'warn',
|
||||
'no-global-assign': 'warn',
|
||||
'no-unsafe-negation': 'warn',
|
||||
'no-new-func': 'warn',
|
||||
'no-new-object': 'warn',
|
||||
'no-new-symbol': 'warn',
|
||||
'no-new-wrappers': 'warn',
|
||||
'no-obj-calls': 'warn',
|
||||
'no-octal': 'warn',
|
||||
'no-octal-escape': 'warn',
|
||||
'no-redeclare': 'warn',
|
||||
'no-regex-spaces': 'warn',
|
||||
'no-script-url': 'warn',
|
||||
'no-self-assign': 'warn',
|
||||
'no-self-compare': 'warn',
|
||||
'no-sequences': 'warn',
|
||||
'no-shadow-restricted-names': 'warn',
|
||||
'no-sparse-arrays': 'warn',
|
||||
'no-template-curly-in-string': 'warn',
|
||||
'no-this-before-super': 'warn',
|
||||
'no-throw-literal': 'warn',
|
||||
'no-undef': 'error',
|
||||
'no-unreachable': 'warn',
|
||||
'no-unused-expressions': [
|
||||
'error',
|
||||
{
|
||||
allowShortCircuit: true,
|
||||
allowTernary: true,
|
||||
allowTaggedTemplates: true,
|
||||
},
|
||||
],
|
||||
'no-unused-labels': 'warn',
|
||||
'no-use-before-define': [
|
||||
'warn',
|
||||
{
|
||||
functions: false,
|
||||
classes: false,
|
||||
variables: false,
|
||||
},
|
||||
],
|
||||
'no-useless-computed-key': 'warn',
|
||||
'no-useless-concat': 'warn',
|
||||
'no-useless-constructor': 'warn',
|
||||
'no-useless-escape': 'warn',
|
||||
'no-useless-rename': [
|
||||
'warn',
|
||||
{
|
||||
ignoreDestructuring: false,
|
||||
ignoreImport: false,
|
||||
ignoreExport: false,
|
||||
},
|
||||
],
|
||||
'no-with': 'warn',
|
||||
'no-whitespace-before-property': 'warn',
|
||||
'react-hooks/exhaustive-deps': 'warn',
|
||||
'require-yield': 'warn',
|
||||
'rest-spread-spacing': ['warn', 'never'],
|
||||
strict: ['warn', 'never'],
|
||||
'unicode-bom': ['warn', 'never'],
|
||||
'use-isnan': 'warn',
|
||||
'valid-typeof': 'warn',
|
||||
'no-restricted-properties': [
|
||||
'error',
|
||||
{
|
||||
object: 'require',
|
||||
property: 'ensure',
|
||||
message:
|
||||
'Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting',
|
||||
},
|
||||
{
|
||||
object: 'System',
|
||||
property: 'import',
|
||||
message:
|
||||
'Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting',
|
||||
},
|
||||
],
|
||||
'getter-return': 'warn',
|
||||
|
||||
// https://github.com/benmosher/eslint-plugin-import/tree/master/docs/rules
|
||||
'import/first': 'error',
|
||||
'import/no-amd': 'error',
|
||||
'import/no-anonymous-default-export': 'warn',
|
||||
'import/no-webpack-loader-syntax': 'error',
|
||||
|
||||
// https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules
|
||||
'react/forbid-foreign-prop-types': ['warn', { allowInPropTypes: true }],
|
||||
'react/jsx-no-comment-textnodes': 'warn',
|
||||
'react/jsx-no-duplicate-props': 'warn',
|
||||
'react/jsx-no-target-blank': 'warn',
|
||||
'react/jsx-no-undef': 'error',
|
||||
'react/jsx-pascal-case': [
|
||||
'warn',
|
||||
{
|
||||
allowAllCaps: true,
|
||||
ignore: [],
|
||||
},
|
||||
],
|
||||
'react/no-danger-with-children': 'warn',
|
||||
// Disabled because of undesirable warnings
|
||||
// See https://github.com/facebook/create-react-app/issues/5204 for
|
||||
// blockers until its re-enabled
|
||||
// 'react/no-deprecated': 'warn',
|
||||
'react/no-direct-mutation-state': 'warn',
|
||||
'react/no-is-mounted': 'warn',
|
||||
'react/no-typos': 'error',
|
||||
'react/require-render-return': 'error',
|
||||
'react/style-prop-object': 'warn',
|
||||
|
||||
// https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules
|
||||
'jsx-a11y/alt-text': 'warn',
|
||||
'jsx-a11y/anchor-has-content': 'warn',
|
||||
'jsx-a11y/anchor-is-valid': [
|
||||
'warn',
|
||||
{
|
||||
aspects: ['noHref', 'invalidHref'],
|
||||
},
|
||||
],
|
||||
'jsx-a11y/aria-activedescendant-has-tabindex': 'warn',
|
||||
'jsx-a11y/aria-props': 'warn',
|
||||
'jsx-a11y/aria-proptypes': 'warn',
|
||||
'jsx-a11y/aria-role': ['warn', { ignoreNonDOM: true }],
|
||||
'jsx-a11y/aria-unsupported-elements': 'warn',
|
||||
'jsx-a11y/heading-has-content': 'warn',
|
||||
'jsx-a11y/iframe-has-title': 'warn',
|
||||
'jsx-a11y/img-redundant-alt': 'warn',
|
||||
'jsx-a11y/no-access-key': 'warn',
|
||||
'jsx-a11y/no-distracting-elements': 'warn',
|
||||
'jsx-a11y/no-redundant-roles': 'warn',
|
||||
'jsx-a11y/role-has-required-aria-props': 'warn',
|
||||
'jsx-a11y/role-supports-aria-props': 'warn',
|
||||
'jsx-a11y/scope': 'warn',
|
||||
|
||||
// https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks
|
||||
'react-hooks/rules-of-hooks': 'error',
|
||||
|
||||
'prettier/prettier': 'warn',
|
||||
|
||||
// Note: base rule explicitly disabled in favor of the TS one
|
||||
@@ -59,6 +251,7 @@ module.exports = {
|
||||
{
|
||||
varsIgnorePattern: '^(_|React)',
|
||||
ignoreRestSiblings: true,
|
||||
caughtErrors: 'none',
|
||||
},
|
||||
],
|
||||
|
||||
@@ -165,9 +358,63 @@ module.exports = {
|
||||
'prefer-const': 'warn',
|
||||
'prefer-spread': 'off',
|
||||
'@typescript-eslint/no-empty-function': 'off',
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'import/no-default-export': 'warn',
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ['**/*.ts?(x)'],
|
||||
parser: '@typescript-eslint/parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 2018,
|
||||
sourceType: 'module',
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
|
||||
// typescript-eslint specific options
|
||||
warnOnUnsupportedTypeScriptVersion: true,
|
||||
},
|
||||
plugins: ['@typescript-eslint'],
|
||||
// If adding a typescript-eslint version of an existing ESLint rule,
|
||||
// make sure to disable the ESLint rule here.
|
||||
rules: {
|
||||
// TypeScript's `noFallthroughCasesInSwitch` option is more robust (#6906)
|
||||
'default-case': 'off',
|
||||
// 'tsc' already handles this (https://github.com/typescript-eslint/typescript-eslint/issues/291)
|
||||
'no-dupe-class-members': 'off',
|
||||
// 'tsc' already handles this (https://github.com/typescript-eslint/typescript-eslint/issues/477)
|
||||
'no-undef': 'off',
|
||||
|
||||
// Add TypeScript specific rules (and turn off ESLint equivalents)
|
||||
'@typescript-eslint/consistent-type-assertions': 'warn',
|
||||
'no-array-constructor': 'off',
|
||||
'@typescript-eslint/no-array-constructor': 'warn',
|
||||
'no-redeclare': 'off',
|
||||
'@typescript-eslint/no-redeclare': 'warn',
|
||||
'no-use-before-define': 'off',
|
||||
'@typescript-eslint/no-use-before-define': [
|
||||
'warn',
|
||||
{
|
||||
functions: false,
|
||||
classes: false,
|
||||
variables: false,
|
||||
typedefs: false,
|
||||
},
|
||||
],
|
||||
'no-unused-expressions': 'off',
|
||||
'@typescript-eslint/no-unused-expressions': [
|
||||
'error',
|
||||
{
|
||||
allowShortCircuit: true,
|
||||
allowTernary: true,
|
||||
allowTaggedTemplates: true,
|
||||
},
|
||||
],
|
||||
'no-useless-constructor': 'off',
|
||||
'@typescript-eslint/no-useless-constructor': 'warn',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['.eslintrc.js', './**/.eslintrc.js'],
|
||||
parserOptions: { project: null },
|
||||
@@ -188,7 +435,7 @@ module.exports = {
|
||||
'warn',
|
||||
{ prefer: 'type-imports', fixStyle: 'inline-type-imports' },
|
||||
],
|
||||
'@typescript-eslint/ban-types': [
|
||||
'@typescript-eslint/no-restricted-types': [
|
||||
'warn',
|
||||
{
|
||||
types: {
|
||||
@@ -196,7 +443,6 @@ module.exports = {
|
||||
FunctionComponent: { message: ruleFCMsg },
|
||||
FC: { message: ruleFCMsg },
|
||||
},
|
||||
extendDefaults: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -345,6 +591,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
settings: {
|
||||
react: {
|
||||
version: 'detect',
|
||||
},
|
||||
'import/resolver': {
|
||||
typescript: {
|
||||
alwaysTryTypes: true,
|
||||
|
||||
+14
-10
@@ -45,23 +45,27 @@
|
||||
"prepare": "husky"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^8.1.0",
|
||||
"@typescript-eslint/parser": "^8.1.0",
|
||||
"confusing-browser-globals": "^1.0.11",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.37.0",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-config-react-app": "7.0.1",
|
||||
"eslint-import-resolver-typescript": "3.5.5",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-prettier": "5.1.3",
|
||||
"eslint-plugin-react": "7.32.2",
|
||||
"eslint-import-resolver-typescript": "3.6.1",
|
||||
"eslint-plugin-import": "2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.9.0",
|
||||
"eslint-plugin-prettier": "5.2.1",
|
||||
"eslint-plugin-react": "7.35.0",
|
||||
"eslint-plugin-react-hooks": "^4.6.2",
|
||||
"eslint-plugin-rulesdir": "^0.2.2",
|
||||
"husky": "^9.0.11",
|
||||
"lint-staged": "^15.2.7",
|
||||
"lint-staged": "^15.2.9",
|
||||
"node-jq": "^4.0.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prettier": "3.2.4",
|
||||
"prettier": "3.3.3",
|
||||
"source-map-support": "^0.5.21",
|
||||
"typescript": "^5.0.2",
|
||||
"typescript-strict-plugin": "^2.2.2-beta.2"
|
||||
"typescript": "^5.5.4",
|
||||
"typescript-strict-plugin": "^2.4.4"
|
||||
},
|
||||
"resolutions": {
|
||||
"rollup": "4.9.4"
|
||||
|
||||
@@ -35,6 +35,6 @@
|
||||
"@types/uuid": "^9.0.2",
|
||||
"jest": "^27.5.1",
|
||||
"tsc-alias": "^1.8.8",
|
||||
"typescript": "^5.0.2"
|
||||
"typescript": "^5.5.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,6 @@
|
||||
"@types/uuid": "^9.0.2",
|
||||
"jest": "^27.5.1",
|
||||
"ts-protoc-gen": "^0.15.0",
|
||||
"typescript": "^5.0.2"
|
||||
"typescript": "^5.5.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
import * as merkle from './merkle';
|
||||
import { Timestamp } from './timestamp';
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@ export function diff(trie1: TrieNode, trie2: TrieNode): number | null {
|
||||
node2 = node2[diffkey] || emptyTrie();
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unreachable
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
import { Timestamp } from './timestamp';
|
||||
|
||||
describe('Timestamp', function () {
|
||||
|
||||
@@ -154,7 +154,7 @@ export class Timestamp {
|
||||
/**
|
||||
* maximum timestamp
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
|
||||
static max = Timestamp.parse(
|
||||
'9999-12-31T23:59:59.999Z-FFFF-FFFFFFFFFFFFFFFF',
|
||||
)!;
|
||||
@@ -294,7 +294,7 @@ export class Timestamp {
|
||||
/**
|
||||
* zero/minimum timestamp
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
|
||||
static zero = Timestamp.parse(
|
||||
'1970-01-01T00:00:00.000Z-0000-0000000000000000',
|
||||
)!;
|
||||
|
||||
@@ -119,7 +119,7 @@ function AllTransactions({
|
||||
}
|
||||
|
||||
return balances && transactions?.length > 0
|
||||
? balances[transactions[0].id]?.balance ?? 0
|
||||
? (balances[transactions[0].id]?.balance ?? 0)
|
||||
: 0;
|
||||
}, [showBalances, balances, transactions]);
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type React from 'react';
|
||||
import { memo, useRef, useState } from 'react';
|
||||
import React, { memo, useRef, useState } from 'react';
|
||||
|
||||
import { rolloverBudget } from 'loot-core/src/client/queries';
|
||||
import { evalArithmetic } from 'loot-core/src/shared/arithmetic';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type React from 'react';
|
||||
import { useState, useRef, type CSSProperties } from 'react';
|
||||
import React, { useState, useRef, type CSSProperties } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
|
||||
import {
|
||||
|
||||
@@ -22,8 +22,7 @@ import {
|
||||
} from 'loot-core/src/types/models/reports';
|
||||
|
||||
import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
|
||||
import { theme } from '../../../style';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme, type CSSProperties } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { Container } from '../Container';
|
||||
|
||||
|
||||
@@ -29,8 +29,7 @@ import { useAccounts } from '../../../hooks/useAccounts';
|
||||
import { useCategories } from '../../../hooks/useCategories';
|
||||
import { useNavigate } from '../../../hooks/useNavigate';
|
||||
import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme } from '../../../style/index';
|
||||
import { type CSSProperties, theme } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { Container } from '../Container';
|
||||
import { getCustomTick } from '../getCustomTick';
|
||||
|
||||
@@ -15,8 +15,7 @@ import {
|
||||
|
||||
import { amountToCurrencyNoDecimal } from 'loot-core/shared/util';
|
||||
|
||||
import { theme } from '../../../style';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme, type CSSProperties } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { PrivacyFilter } from '../../PrivacyFilter';
|
||||
import { Container } from '../Container';
|
||||
|
||||
@@ -26,8 +26,7 @@ import { useAccounts } from '../../../hooks/useAccounts';
|
||||
import { useCategories } from '../../../hooks/useCategories';
|
||||
import { useNavigate } from '../../../hooks/useNavigate';
|
||||
import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
|
||||
import { theme } from '../../../style';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme, type CSSProperties } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { Container } from '../Container';
|
||||
import { getCustomTick } from '../getCustomTick';
|
||||
|
||||
@@ -15,8 +15,7 @@ import {
|
||||
import { amountToCurrencyNoDecimal } from 'loot-core/shared/util';
|
||||
|
||||
import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
|
||||
import { theme } from '../../../style';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme, type CSSProperties } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { Container } from '../Container';
|
||||
import { numberFormatterTooltip } from '../numberFormatter';
|
||||
|
||||
@@ -20,8 +20,7 @@ import {
|
||||
import { type SpendingEntity } from 'loot-core/src/types/models/reports';
|
||||
|
||||
import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
|
||||
import { theme } from '../../../style';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme, type CSSProperties } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { Container } from '../Container';
|
||||
import { numberFormatterTooltip } from '../numberFormatter';
|
||||
|
||||
@@ -27,8 +27,7 @@ import { useAccounts } from '../../../hooks/useAccounts';
|
||||
import { useCategories } from '../../../hooks/useCategories';
|
||||
import { useNavigate } from '../../../hooks/useNavigate';
|
||||
import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
|
||||
import { theme } from '../../../style';
|
||||
import { type CSSProperties } from '../../../style';
|
||||
import { theme, type CSSProperties } from '../../../style';
|
||||
import { AlignedText } from '../../common/AlignedText';
|
||||
import { Container } from '../Container';
|
||||
import { getCustomTick } from '../getCustomTick';
|
||||
|
||||
@@ -137,7 +137,7 @@ export function CustomReport() {
|
||||
? JSON.parse(reportFromSessionStorage)
|
||||
: {};
|
||||
const combine = location.state
|
||||
? location.state.report ?? defaultReport
|
||||
? (location.state.report ?? defaultReport)
|
||||
: defaultReport;
|
||||
const loadReport = { ...combine, ...session };
|
||||
|
||||
@@ -244,8 +244,8 @@ export function CustomReport() {
|
||||
location.state
|
||||
? location.state.report
|
||||
? 'saved'
|
||||
: loadReport.savedStatus ?? 'new'
|
||||
: loadReport.savedStatus ?? 'new',
|
||||
: (loadReport.savedStatus ?? 'new')
|
||||
: (loadReport.savedStatus ?? 'new'),
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import { useCallback } from 'react';
|
||||
import type { MutableRefObject, Ref, RefCallback } from 'react';
|
||||
import {
|
||||
useCallback,
|
||||
type MutableRefObject,
|
||||
type Ref,
|
||||
type RefCallback,
|
||||
} from 'react';
|
||||
|
||||
export function useMergedRefs<T>(
|
||||
...refs: (
|
||||
|
||||
@@ -3,6 +3,7 @@ export async function installPolyfills(): Promise<void> {
|
||||
const module = await import(
|
||||
/* webpackChunkName: 'resize-observer-polyfill' */ '@juggle/resize-observer'
|
||||
);
|
||||
// @ts-expect-error fix-me
|
||||
window.ResizeObserver = module.ResizeObserver;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,6 @@
|
||||
"cross-env": "^7.0.3",
|
||||
"electron": "30.0.6",
|
||||
"electron-builder": "24.13.3",
|
||||
"typescript": "^5.0.2"
|
||||
"typescript": "^5.5.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"requireindex": "^1.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-plugin-eslint-plugin": "^5.0.0",
|
||||
"eslint-plugin-eslint-plugin": "^5.5.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"jest": "^27.5.1",
|
||||
"npm-run-all": "^4.1.5"
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
"swc-loader": "^0.2.6",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.0.2",
|
||||
"typescript": "^5.5.4",
|
||||
"webpack": "^5.90.0",
|
||||
"webpack-bundle-analyzer": "^4.10.1",
|
||||
"webpack-cli": "^5.1.4",
|
||||
|
||||
+1
-1
@@ -36,6 +36,6 @@ export type State = {
|
||||
};
|
||||
|
||||
declare module 'react-redux' {
|
||||
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-empty-interface
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/consistent-type-definitions
|
||||
export interface DefaultRootState extends State {}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ function parseRecurDate(desc) {
|
||||
|
||||
return {
|
||||
type: 'recur',
|
||||
// @ts-expect-error fix me
|
||||
schedule: new RSchedule({
|
||||
rrules: rules,
|
||||
data: {
|
||||
|
||||
@@ -42,7 +42,7 @@ async function createScheduleList(template, current_month, category) {
|
||||
sign *
|
||||
(categorySubtransactions?.length
|
||||
? categorySubtransactions.reduce((acc, t) => acc + t.amount, 0)
|
||||
: postRuleAmount ?? scheduleAmount);
|
||||
: (postRuleAmount ?? scheduleAmount));
|
||||
|
||||
const next_date_string = getNextDate(
|
||||
dateConditions,
|
||||
|
||||
@@ -374,17 +374,21 @@ async function getUpcomingDates({ config, count }) {
|
||||
const rules = recurConfigToRSchedule(config);
|
||||
|
||||
try {
|
||||
// @ts-expect-error fix me
|
||||
const schedule = new RSchedule({ rrules: rules });
|
||||
|
||||
return schedule
|
||||
.occurrences({ start: d.startOfDay(new Date()), take: count })
|
||||
.toArray()
|
||||
.map(date =>
|
||||
config.skipWeekend
|
||||
? getDateWithSkippedWeekend(date.date, config.weekendSolveMode)
|
||||
: date.date,
|
||||
)
|
||||
.map(date => dayFromDate(date));
|
||||
return (
|
||||
schedule
|
||||
// @ts-expect-error fix me
|
||||
.occurrences({ start: d.startOfDay(new Date()), take: count })
|
||||
.toArray()
|
||||
.map(date =>
|
||||
config.skipWeekend
|
||||
? getDateWithSkippedWeekend(date.date, config.weekendSolveMode)
|
||||
: date.date,
|
||||
)
|
||||
.map(date => dayFromDate(date))
|
||||
);
|
||||
} catch (err) {
|
||||
captureBreadcrumb(config);
|
||||
throw err;
|
||||
|
||||
@@ -16,11 +16,15 @@ import { Schedule as RSchedule } from '../util/rschedule';
|
||||
import { SchedulesHandlers } from './types/handlers';
|
||||
|
||||
function takeDates(config) {
|
||||
// @ts-expect-error fix me
|
||||
const schedule = new RSchedule({ rrules: recurConfigToRSchedule(config) });
|
||||
return schedule
|
||||
.occurrences({ take: 3 })
|
||||
.toArray()
|
||||
.map(d => d.date);
|
||||
return (
|
||||
schedule
|
||||
// @ts-expect-error fix me
|
||||
.occurrences({ take: 3 })
|
||||
.toArray()
|
||||
.map(d => d.date)
|
||||
);
|
||||
}
|
||||
|
||||
async function getTransactions(date, account) {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Upgrade `TypeScript`, `eslint` and `prettier`.
|
||||
Reference in New Issue
Block a user