From 51a58fc3222eb1f382936368a7476b8c02012e3f Mon Sep 17 00:00:00 2001 From: Carter Bertolini Date: Tue, 24 Oct 2023 16:55:11 -0400 Subject: [PATCH] Fix formatting and update linter. --- .eslintrc.js | 271 ++++++++++++++++++++-------------------- src/alpaca/exchange.ts | 12 +- src/alpaca/portfolio.ts | 4 +- src/alpaca/quote.ts | 6 +- src/index.ts | 2 +- test/alpaca.test.ts | 31 ++--- 6 files changed, 156 insertions(+), 170 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index bd783a6..cc54a78 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,136 +1,137 @@ module.exports = { - parser: "@typescript-eslint/parser", - parserOptions: { - ecmaVersion: "latest", // Allows the use of modern ECMAScript features - sourceType: "module", // Allows for the use of imports - project: ["./tsconfig.json", "./tsconfig.test.json"] - }, - extends: ["plugin:@typescript-eslint/recommended"], // Uses the linting rules from @typescript-eslint/eslint-plugin - env: { - node: true, // Enable Node.js global variables - }, - rules: { - "array-callback-return": "error", - "no-await-in-loop": "error", - "no-cond-assign": [ "error", "always" ], - "no-constant-binary-expression": "error", - "no-constant-condition": "error", - "no-constructor-return": "error", - "no-duplicate-imports": "error", - "no-promise-executor-return": "error", - "no-self-compare": "error", - "no-undef": [ "error", { "typeof": true } ], - "no-unmodified-loop-condition": "error", - "no-unreachable-loop": "error", - "no-unused-private-class-members": "error", - "require-atomic-updates": "error", - - "accessor-pairs": "error", - "block-scoped-var": "error", - "curly": [ "error", "all" ], - "default-case": "error", - "default-case-last": "error", - "default-param-last": "error", - "dot-notation": "error", - "eqeqeq": "error", - "func-style": [ "error", "expression" ], - "grouped-accessor-pairs": [ "error", "getBeforeSet" ], - "no-caller": "error", - "no-console": "error", - "no-eq-null": "error", - "no-eval": "error", - "no-extend-native": "error", - "no-extra-label": "error", - "no-implicit-coercion": "error", - "no-implicit-globals": "error", - "no-implied-eval": "error", - "no-inline-comments": "error", - "no-invalid-this": "error", - "no-iterator": "error", - "no-label-var": "error", - "no-labels": "error", - "no-lone-blocks": "error", - "no-lonely-if": "error", - "no-loop-func": "error", - "no-magic-numbers": "error", - "no-mixed-operators": "error", - "no-multi-assign": "error", - "no-multi-str": "error", - "no-nested-ternary": "error", - "no-new": "error", - "no-new-func": "error", - "no-new-wrappers": "error", - "no-nonoctal-decimal-escape": "error", - "no-object-constructor": "error", - "no-octal-escape": "error", - "no-param-reassign": "error", - "no-plusplus": "error", - "no-proto": "error", - "no-return-assign": "error", - "no-script-url": "error", - "no-sequences": "error", - "no-shadow": "error", - "no-throw-literal": "error", - "no-undef-init": "error", - "no-undefined": "error", - "no-underscore-dangle": "error", - "no-unneeded-ternary": "error", - "no-unused-expressions": "error", - "no-useless-call": "error", - "no-useless-catch": "error", - "no-useless-computed-key": "error", - "no-useless-concat": "error", - "no-useless-constructor": "error", - "no-useless-rename": "error", - "no-var": "error", - "no-void": "error", - "one-var": [ "error", "never" ], - "one-var-declaration-per-line": [ "error", "always" ], - "prefer-arrow-callback": "error", - "prefer-const": "error", - "prefer-exponentiation-operator": "error", - "prefer-named-capture-group": "error", - "prefer-numeric-literals": "error", - "prefer-object-has-own": "error", - "prefer-object-spread": "error", - "prefer-promise-reject-errors": "error", - "prefer-regex-literals": "error", - "prefer-rest-params": "error", - "prefer-spread": "error", - "prefer-template": "error", - "quote-props": [ "error", "as-needed" ], - "radix": "error", - "require-await": "error", - "require-unicode-regexp": "error", - "symbol-description": "error", - "yoda": "error", - - "array-bracket-newline": [ "error", "consistent" ], - "array-bracket-spacing": [ "error", "always", { "singleValue": false } ], - "array-element-newline": [ "error", "consistent" ], - "arrow-parens": "error", - "arrow-spacing": "error", - "block-spacing": "error", - "computed-property-spacing": "error", - "eol-last": "error", - "generator-star-spacing": [ "error", { "before": false, "after": true } ], - "key-spacing": "error", - "linebreak-style": "error", - "lines-around-comment": [ "error", { "allowBlockStart": true }], - "max-len": [ "error", { "code": 120 } ], - "new-parens": "error", - "no-multi-spaces": "error", - "no-multiple-empty-lines": "error", - "no-trailing-spaces": "error", - "no-whitespace-before-property": "error", - "nonblock-statement-body-position": [ "error", "below" ], - "object-curly-newline": [ "error", { "ObjectExpression": { "consistent": true }, "ObjectPattern": { "consistent": true } } ], - "operator-linebreak": "error", - "padded-blocks": [ "error", "never" ], - "space-in-parens": "error", - "switch-colon-spacing": [ "error", { "after": false, "before": false } ], - "template-curly-spacing": "error", - "wrap-iife": "error", - "yield-star-spacing": [ "error", "after" ], - } - }; \ No newline at end of file + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: "latest", // Allows the use of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + project: ["./tsconfig.json", "./tsconfig.test.json"] + }, + extends: ["plugin:@typescript-eslint/recommended"], // Uses the linting rules from @typescript-eslint/eslint-plugin + env: { + node: true, // Enable Node.js global variables + }, + rules: { + "array-callback-return": "error", + "no-await-in-loop": "error", + "no-cond-assign": ["error", "always"], + "no-constant-binary-expression": "error", + "no-constant-condition": "error", + "no-constructor-return": "error", + "no-duplicate-imports": "error", + "no-promise-executor-return": "error", + "no-self-compare": "error", + "no-undef": ["error", { "typeof": true }], + "no-unmodified-loop-condition": "error", + "no-unreachable-loop": "error", + "no-unused-private-class-members": "error", + "require-atomic-updates": "error", + + "accessor-pairs": "error", + "block-scoped-var": "error", + "curly": ["error", "all"], + "default-case": "error", + "default-case-last": "error", + "default-param-last": "error", + "dot-notation": "error", + "eqeqeq": "error", + "func-style": ["error", "expression"], + "grouped-accessor-pairs": ["error", "getBeforeSet"], + "no-caller": "error", + "no-console": "error", + "no-eq-null": "error", + "no-eval": "error", + "no-extend-native": "error", + "no-extra-label": "error", + "no-implicit-coercion": "error", + "no-implicit-globals": "error", + "no-implied-eval": "error", + "no-inline-comments": "error", + "no-invalid-this": "error", + "no-iterator": "error", + "no-label-var": "error", + "no-labels": "error", + "no-lone-blocks": "error", + "no-lonely-if": "error", + "no-loop-func": "error", + "no-magic-numbers": "error", + "no-mixed-operators": "error", + "no-multi-assign": "error", + "no-multi-str": "error", + "no-nested-ternary": "error", + "no-new": "error", + "no-new-func": "error", + "no-new-wrappers": "error", + "no-nonoctal-decimal-escape": "error", + "no-object-constructor": "error", + "no-octal-escape": "error", + "no-param-reassign": "error", + "no-plusplus": "error", + "no-proto": "error", + "no-return-assign": "error", + "no-script-url": "error", + "no-sequences": "error", + "no-shadow": "error", + "no-throw-literal": "error", + "no-undef-init": "error", + "no-undefined": "error", + "no-underscore-dangle": "error", + "no-unneeded-ternary": "error", + "no-unused-expressions": "error", + "no-useless-call": "error", + "no-useless-catch": "error", + "no-useless-computed-key": "error", + "no-useless-concat": "error", + "no-useless-constructor": "error", + "no-useless-rename": "error", + "no-var": "error", + "no-void": "error", + "one-var": ["error", "never"], + "one-var-declaration-per-line": ["error", "always"], + "prefer-arrow-callback": "error", + "prefer-const": "error", + "prefer-exponentiation-operator": "error", + "prefer-named-capture-group": "error", + "prefer-numeric-literals": "error", + "prefer-object-has-own": "error", + "prefer-object-spread": "error", + "prefer-promise-reject-errors": "error", + "prefer-regex-literals": "error", + "prefer-rest-params": "error", + "prefer-spread": "error", + "prefer-template": "error", + "quote-props": ["error", "as-needed"], + "semi": ["error", "always"], + "radix": "error", + "require-await": "error", + "require-unicode-regexp": "error", + "symbol-description": "error", + "yoda": "error", + + "array-bracket-newline": ["error", "consistent"], + "array-bracket-spacing": ["error", "always", { "singleValue": false }], + "array-element-newline": ["error", "consistent"], + "arrow-parens": "error", + "arrow-spacing": "error", + "block-spacing": "error", + "computed-property-spacing": "error", + "eol-last": "error", + "generator-star-spacing": ["error", { "before": false, "after": true }], + "key-spacing": "error", + "linebreak-style": "error", + "lines-around-comment": ["error", { "allowBlockStart": true }], + "max-len": ["error", { "code": 120 }], + "new-parens": "error", + "no-multi-spaces": "error", + "no-multiple-empty-lines": "error", + "no-trailing-spaces": "error", + "no-whitespace-before-property": "error", + "nonblock-statement-body-position": ["error", "below"], + "object-curly-newline": ["error", { "ObjectExpression": { "consistent": true }, "ObjectPattern": { "consistent": true } }], + "operator-linebreak": "error", + "padded-blocks": ["error", "never"], + "space-in-parens": "error", + "switch-colon-spacing": ["error", { "after": false, "before": false }], + "template-curly-spacing": "error", + "wrap-iife": "error", + "yield-star-spacing": ["error", "after"], + } +}; \ No newline at end of file diff --git a/src/alpaca/exchange.ts b/src/alpaca/exchange.ts index 725161e..70269f3 100644 --- a/src/alpaca/exchange.ts +++ b/src/alpaca/exchange.ts @@ -1,9 +1,9 @@ -import Alpaca from '@alpacahq/alpaca-trade-api' -import { AlpacaPortfolioProvider } from './portfolio' -import { AlpacaQuoteProvider } from './quote' -import { Exchange } from '../interface/exchange' -import { PortfolioProvider } from '../interface/portfolio' -import { QuoteProvider } from '../interface/quote' +import Alpaca from '@alpacahq/alpaca-trade-api'; +import { AlpacaPortfolioProvider } from './portfolio'; +import { AlpacaQuoteProvider } from './quote'; +import { Exchange } from '../interface/exchange'; +import { PortfolioProvider } from '../interface/portfolio'; +import { QuoteProvider } from '../interface/quote'; /** * Exchange implementation for Alpaca. diff --git a/src/alpaca/portfolio.ts b/src/alpaca/portfolio.ts index 9472e56..728513f 100644 --- a/src/alpaca/portfolio.ts +++ b/src/alpaca/portfolio.ts @@ -1,4 +1,4 @@ -import Alpaca from '@alpacahq/alpaca-trade-api' +import Alpaca from '@alpacahq/alpaca-trade-api'; import { PortfolioProvider, Portfolio, Position } from '../interface/portfolio'; /** @@ -50,7 +50,7 @@ export class AlpacaPortfolioProvider implements PortfolioProvider { ); })); }); - } + }; /** * Creates a new AlpacaPortfolioProvider instance. diff --git a/src/alpaca/quote.ts b/src/alpaca/quote.ts index 0b6e291..574a106 100644 --- a/src/alpaca/quote.ts +++ b/src/alpaca/quote.ts @@ -1,4 +1,4 @@ -import Alpaca from '@alpacahq/alpaca-trade-api' +import Alpaca from '@alpacahq/alpaca-trade-api'; import { QuoteProvider, Quote } from '../interface/quote'; /** @@ -27,8 +27,8 @@ export class AlpacaQuoteProvider implements QuoteProvider { ); }).catch((err) => { return err; - }) - } + }); + }; /** * Creates a new AlpacaQuoteProvider instance. diff --git a/src/index.ts b/src/index.ts index 683b750..45a1724 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,4 +9,4 @@ export { PortfolioProvider, Quote, QuoteProvider -} +}; diff --git a/test/alpaca.test.ts b/test/alpaca.test.ts index 8446851..a96b15d 100644 --- a/test/alpaca.test.ts +++ b/test/alpaca.test.ts @@ -1,34 +1,19 @@ import { describe, expect, test } from '@jest/globals'; -import 'dotenv/config' -import { AlpacaExchange } from '../src/alpaca/exchange' -import { createLogger, transports, format } from "winston"; - -const logger = createLogger({ - transports: [new transports.Console()], - format: format.combine( - format.colorize(), - format.timestamp(), - format.printf(({ timestamp, level, message, service }) => { - return `[${timestamp}] ${service} ${level}: ${message}`; - }) - ), - defaultMeta: { - service: "AlpacaTest", - }, - }); +import 'dotenv/config'; +import { AlpacaExchange } from '../src/alpaca/exchange'; describe('Alpaca Tests', () => { test('portfolio fetch', () => { expect(process.env.ALPACA_API_KEY).toBeDefined(); expect(process.env.ALPACA_SECRET_KEY).toBeDefined(); - let exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true); - expect(exchange.portfolioProvider.fetchPortfolio()).resolves; + const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true); + expect(exchange.portfolioProvider.fetchPortfolio()).resolves.toBeDefined(); }); - test('quote fetch', async () => { + test('quote fetch', () => { expect(process.env.ALPACA_API_KEY).toBeDefined(); expect(process.env.ALPACA_SECRET_KEY).toBeDefined(); - let exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true); - expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves; + const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true); + expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves.toBeDefined(); }); -}); \ No newline at end of file +});