mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(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:
@@ -21,13 +21,12 @@ export class DataRowModel extends BaseRowModel {
|
||||
public _validationFailures: ko.PureComputed<Array<IRowModel<'_grist_Validations'>>>;
|
||||
public _isAddRow: ko.Observable<boolean>;
|
||||
|
||||
private _allValidationsList: ko.Computed<KoArray<ValidationRec>>;
|
||||
private _isRealChange: ko.Observable<boolean>;
|
||||
|
||||
public constructor(dataTableModel: DataTableModel, colNames: string[]) {
|
||||
super(dataTableModel, colNames);
|
||||
|
||||
this._allValidationsList = dataTableModel.tableMetaRow.validations;
|
||||
const allValidationsList: ko.Computed<KoArray<ValidationRec>> = dataTableModel.tableMetaRow.validations;
|
||||
|
||||
this._isAddRow = ko.observable(false);
|
||||
|
||||
@@ -36,10 +35,10 @@ export class DataRowModel extends BaseRowModel {
|
||||
// changes, those should only be enabled when _isRealChange is true.
|
||||
this._isRealChange = ko.observable(true);
|
||||
|
||||
this._validationFailures = this.autoDispose(ko.pureComputed(function() {
|
||||
return this._allValidationsList().all().filter(
|
||||
this._validationFailures = this.autoDispose(ko.pureComputed(() => {
|
||||
return allValidationsList().all().filter(
|
||||
validation => !this.cells[this.getValidationNameFromId(validation.id())]());
|
||||
}, this));
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -41,16 +41,8 @@ import {decodeObject} from 'app/plugin/objtypes';
|
||||
|
||||
// Re-export all the entity types available. The recommended usage is like this:
|
||||
// import {ColumnRec, ViewFieldRec} from 'app/client/models/DocModel';
|
||||
export {ColumnRec} from 'app/client/models/entities/ColumnRec';
|
||||
export {DocInfoRec} from 'app/client/models/entities/DocInfoRec';
|
||||
export {FilterRec} from 'app/client/models/entities/FilterRec';
|
||||
export {PageRec} from 'app/client/models/entities/PageRec';
|
||||
export {TabBarRec} from 'app/client/models/entities/TabBarRec';
|
||||
export {TableRec} from 'app/client/models/entities/TableRec';
|
||||
export {ValidationRec} from 'app/client/models/entities/ValidationRec';
|
||||
export {ViewFieldRec} from 'app/client/models/entities/ViewFieldRec';
|
||||
export {ViewRec} from 'app/client/models/entities/ViewRec';
|
||||
export {ViewSectionRec} from 'app/client/models/entities/ViewSectionRec';
|
||||
export type {ColumnRec, DocInfoRec, FilterRec, PageRec, TabBarRec, TableRec, ValidationRec,
|
||||
ViewFieldRec, ViewRec, ViewSectionRec};
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@ import {buildColFilter, ColumnFilterFunc} from 'app/common/ColumnFilterFunc';
|
||||
import {buildRowFilter, RowFilterFunc, RowValueFunc } from 'app/common/RowFilterFunc';
|
||||
import {Computed, Disposable, MutableObsArray, obsArray, Observable, UseCB} from 'grainjs';
|
||||
|
||||
export {ColumnFilterFunc} from 'app/common/ColumnFilterFunc';
|
||||
export type {ColumnFilterFunc};
|
||||
|
||||
interface OpenColumnFilter {
|
||||
colRef: number;
|
||||
|
||||
@@ -306,7 +306,7 @@ export function createViewSectionRec(this: ViewSectionRec, docModel: DocModel):
|
||||
// in which case the UI prevents various things like hiding columns or changing the widget type.
|
||||
this.isRaw = this.autoDispose(ko.pureComputed(() => this.table().rawViewSectionRef() === this.getRowId()));
|
||||
|
||||
this.borderWidthPx = ko.pureComputed(function() { return this.borderWidth() + 'px'; }, this);
|
||||
this.borderWidthPx = ko.pureComputed(() => this.borderWidth() + 'px');
|
||||
|
||||
this.layoutSpecObj = modelUtil.jsonObservable(this.layoutSpec);
|
||||
|
||||
@@ -487,7 +487,7 @@ export function createViewSectionRec(this: ViewSectionRec, docModel: DocModel):
|
||||
this.linkSrcCol = refRecord(docModel.columns, this.activeLinkSrcColRef);
|
||||
this.linkTargetCol = refRecord(docModel.columns, this.activeLinkTargetColRef);
|
||||
|
||||
this.activeRowId = ko.observable(null);
|
||||
this.activeRowId = ko.observable<RowId|null>(null);
|
||||
|
||||
this._linkingState = Holder.create(this);
|
||||
this.linkingState = this.autoDispose(ko.pureComputed(() => {
|
||||
@@ -506,7 +506,7 @@ export function createViewSectionRec(this: ViewSectionRec, docModel: DocModel):
|
||||
}));
|
||||
|
||||
// If the view instance for this section is instantiated, it will be accessible here.
|
||||
this.viewInstance = ko.observable(null);
|
||||
this.viewInstance = ko.observable<BaseView|null>(null);
|
||||
|
||||
// Describes the most recent cursor position in the section.
|
||||
this.lastCursorPos = {
|
||||
@@ -542,8 +542,8 @@ export function createViewSectionRec(this: ViewSectionRec, docModel: DocModel):
|
||||
);
|
||||
|
||||
this.hasCustomOptions = ko.observable(false);
|
||||
this.desiredAccessLevel = ko.observable(null);
|
||||
this.columnsToMap = ko.observable(null);
|
||||
this.desiredAccessLevel = ko.observable<AccessLevel|null>(null);
|
||||
this.columnsToMap = ko.observable<ColumnsToMap|null>(null);
|
||||
// Calculate mapped columns for Custom Widget.
|
||||
this.mappedColumns = ko.pureComputed(() => {
|
||||
// First check if widget has requested a custom column mapping and
|
||||
|
||||
Reference in New Issue
Block a user