(core) Speed up and upgrade build.

Summary:
- Upgrades to build-related packages:
  - Upgrade typescript, related libraries and typings.
  - Upgrade webpack, eslint; add tsc-watch, node-dev, eslint_d.

- Build organization changes:
  - Build webpack from original typescript, transpiling only; with errors still
    reported by a background tsc watching process.

- Typescript-related changes:
  - Reduce imports of AWS dependencies (very noticeable speedup)
  - Avoid auto-loading global @types
  - Client code is now built with isolatedModules flag (for safe transpilation)
  - Use allowJs to avoid copying JS files manually.

- Linting changes
  - Enhance Arcanist ESLintLinter to run before/after commands, and set up to use eslint_d
  - Update eslint config, and include .eslintignore to avoid linting generated files.
  - Include a bunch of eslint-prompted and eslint-generated fixes
  - Add no-unused-expression rule to eslint, and fix a few warnings about it

- Other items:
  - Refactor cssInput to avoid circular dependency
  - Remove a bit of unused code, libraries, dependencies

Test Plan: No behavior changes, all existing tests pass. There are 30 tests fewer reported because `test_gpath.py` was removed (it's been unused for years)

Reviewers: paulfitz

Reviewed By: paulfitz

Subscribers: paulfitz

Differential Revision: https://phab.getgrist.com/D3498
This commit is contained in:
Dmitry S
2022-06-27 16:09:41 -04:00
parent 64ff9ccd0a
commit dd2eadc86e
45 changed files with 948 additions and 2442 deletions

View File

@@ -18,33 +18,6 @@ declare module "bluebird" {
class Disposer<T> {}
}
// TODO This is a module by Grist Labs; we should add index.d.ts to it.
declare module "@gristlabs/basket-api" {
interface Item { [colId: string]: any; }
interface ColValues { [colId: string]: any[]; }
interface AuthToken { [authProvider: string]: string; }
class Basket {
public static addBasket(login: AuthToken): Promise<string>;
public static getBaskets(login: AuthToken): Promise<string[]>;
public basketId: Readonly<string>;
public apiKey: Readonly<string|undefined>;
constructor(basketId: string, apiKey?: string);
public addTable(optTableId: string): Promise<string>;
public getTable(tableId: string): Promise<Item[]>;
public renameTable(oldTableId: string, newTableId: string): Promise<void>;
public replaceTableData(tableId: string, columnValues: ColValues): Promise<void>;
public deleteTable(tableId: string): Promise<void>;
public getTables(): Promise<string[]>;
public uploadAttachment(attachmentId: string, attachment: Buffer): Promise<void>;
public delete(login: AuthToken): Promise<void>;
}
namespace Basket {}
export = Basket;
}
// Used in one place, and the typings are almost entirely unhelpful.
declare module "multiparty";