(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

@@ -1,5 +1,5 @@
// Letter codes for CellValue types encoded as [code, args...] tuples.
export const enum GristObjCode {
export enum GristObjCode {
List = 'L',
LookUp = 'l',
Dict = 'O',

View File

@@ -1,4 +1,4 @@
import {createCheckers, ICheckerSuite} from 'ts-interface-checker';
import {BasicType, createCheckers, ICheckerSuite} from 'ts-interface-checker';
import CustomSectionAPITI from './CustomSectionAPI-ti';
import FileParserAPITI from './FileParserAPI-ti';
import GristAPITI from './GristAPI-ti';
@@ -18,7 +18,14 @@ export {
const allTypes = [
CustomSectionAPITI, FileParserAPITI, GristAPITI, GristTableTI, ImportSourceAPITI,
InternalImportSourceAPITI, RenderOptionsTI, StorageAPITI, WidgetAPITI];
InternalImportSourceAPITI, RenderOptionsTI, StorageAPITI, WidgetAPITI,
];
// Ensure Buffer can be handled if mentioned in the interface descriptions, even if not supported
// in the current environment (i.e. browser).
if (typeof Buffer === 'undefined') {
allTypes.push({Buffer: new BasicType((v) => false, "Buffer is not supported")});
}
function checkDuplicates(types: Array<{[key: string]: object}>) {
const seen = new Set<string>();

View File

@@ -402,7 +402,7 @@ export interface ReadyPayload extends Omit<InteractionOptionsRequest, "hasCustom
/**
* Handler that will be called by Grist to open additional configuration panel inside the Custom Widget.
*/
onEditOptions: () => unknown;
onEditOptions?: () => unknown;
}
/**
* Declare that a component is prepared to receive messages from the outside world.