mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Faster builds all around.
Summary: Building: - Builds no longer wait for tsc for either client, server, or test targets. All use esbuild which is very fast. - Build still runs tsc, but only to report errors. This may be turned off with `SKIP_TSC=1` env var. - Grist-core continues to build using tsc. - Esbuild requires ES6 module semantics. Typescript's esModuleInterop is turned on, so that tsc accepts and enforces correct usage. - Client-side code is watched and bundled by webpack as before (using esbuild-loader) Code changes: - Imports must now follow ES6 semantics: `import * as X from ...` produces a module object; to import functions or class instances, use `import X from ...`. - Everything is now built with isolatedModules flag. Some exports were updated for it. Packages: - Upgraded browserify dependency, and related packages (used for the distribution-building step). - Building the distribution now uses esbuild's minification. babel-minify is no longer used. Test Plan: Should have no behavior changes, existing tests should pass, and docker image should build too. Reviewers: georgegevoian Reviewed By: georgegevoian Subscribers: alexmojaki Differential Revision: https://phab.getgrist.com/D3506
This commit is contained in:
parent
d5ebd49eb7
commit
51ff72c15e
@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import * as dispose from 'app/client/lib/dispose';
|
import * as dispose from 'app/client/lib/dispose';
|
||||||
import * as dom from 'app/client/lib/dom';
|
import dom from 'app/client/lib/dom';
|
||||||
import {timeFormat} from 'app/common/timeFormat';
|
import {timeFormat} from 'app/common/timeFormat';
|
||||||
import * as ko from 'knockout';
|
import * as ko from 'knockout';
|
||||||
import map = require('lodash/map');
|
import map = require('lodash/map');
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import {GristDoc} from 'app/client/components/GristDoc';
|
import {GristDoc} from 'app/client/components/GristDoc';
|
||||||
import {consolidateValues, formatPercent, sortByXValues, splitValuesByIndex,
|
import {consolidateValues, formatPercent, sortByXValues, splitValuesByIndex,
|
||||||
uniqXValues} from 'app/client/lib/chartUtil';
|
uniqXValues} from 'app/client/lib/chartUtil';
|
||||||
@ -6,7 +6,7 @@ import {Delay} from 'app/client/lib/Delay';
|
|||||||
import {Disposable} from 'app/client/lib/dispose';
|
import {Disposable} from 'app/client/lib/dispose';
|
||||||
import {fromKoSave} from 'app/client/lib/fromKoSave';
|
import {fromKoSave} from 'app/client/lib/fromKoSave';
|
||||||
import {loadPlotly, PlotlyType} from 'app/client/lib/imports';
|
import {loadPlotly, PlotlyType} from 'app/client/lib/imports';
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import {ColumnRec, ViewFieldRec, ViewSectionRec} from 'app/client/models/DocModel';
|
import {ColumnRec, ViewFieldRec, ViewSectionRec} from 'app/client/models/DocModel';
|
||||||
import {reportError} from 'app/client/models/errors';
|
import {reportError} from 'app/client/models/errors';
|
||||||
import {KoSaveableObservable, ObjObservable, setSaveValue} from 'app/client/models/modelUtil';
|
import {KoSaveableObservable, ObjObservable, setSaveValue} from 'app/client/models/modelUtil';
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import * as commands from 'app/client/components/commands';
|
import * as commands from 'app/client/components/commands';
|
||||||
import * as BaseRowModel from 'app/client/models/BaseRowModel';
|
import BaseRowModel from 'app/client/models/BaseRowModel';
|
||||||
import {LazyArrayModel} from 'app/client/models/DataTableModel';
|
import {LazyArrayModel} from 'app/client/models/DataTableModel';
|
||||||
import type {RowId} from 'app/client/models/rowset';
|
import type {RowId} from 'app/client/models/rowset';
|
||||||
import {Disposable} from 'grainjs';
|
import {Disposable} from 'grainjs';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import {Cursor} from 'app/client/components/Cursor';
|
import {Cursor} from 'app/client/components/Cursor';
|
||||||
import * as commands from 'app/client/components/commands';
|
import * as commands from 'app/client/components/commands';
|
||||||
import {GristDoc} from 'app/client/components/GristDoc';
|
import {GristDoc} from 'app/client/components/GristDoc';
|
||||||
@ -7,9 +7,9 @@ import {ConfigNotifier, CustomSectionAPIImpl, GristDocAPIImpl, GristViewImpl,
|
|||||||
WidgetFrame} from 'app/client/components/WidgetFrame';
|
WidgetFrame} from 'app/client/components/WidgetFrame';
|
||||||
import {CustomSectionElement, ViewProcess} from 'app/client/lib/CustomSectionElement';
|
import {CustomSectionElement, ViewProcess} from 'app/client/lib/CustomSectionElement';
|
||||||
import {Disposable} from 'app/client/lib/dispose';
|
import {Disposable} from 'app/client/lib/dispose';
|
||||||
import * as dom from 'app/client/lib/dom';
|
import dom from 'app/client/lib/dom';
|
||||||
import * as kd from 'app/client/lib/koDom';
|
import * as kd from 'app/client/lib/koDom';
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import {ViewSectionRec} from 'app/client/models/DocModel';
|
import {ViewSectionRec} from 'app/client/models/DocModel';
|
||||||
import {CustomViewSectionDef} from 'app/client/models/entities/ViewSectionRec';
|
import {CustomViewSectionDef} from 'app/client/models/entities/ViewSectionRec';
|
||||||
import {UserError} from 'app/client/models/errors';
|
import {UserError} from 'app/client/models/errors';
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import {AccessRules} from 'app/client/aclui/AccessRules';
|
import {AccessRules} from 'app/client/aclui/AccessRules';
|
||||||
import {ActionLog} from 'app/client/components/ActionLog';
|
import {ActionLog} from 'app/client/components/ActionLog';
|
||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import {isNumericLike, isNumericOnly} from 'app/client/components/ChartView';
|
import {isNumericLike, isNumericOnly} from 'app/client/components/ChartView';
|
||||||
import {CodeEditorPanel} from 'app/client/components/CodeEditorPanel';
|
import {CodeEditorPanel} from 'app/client/components/CodeEditorPanel';
|
||||||
import * as commands from 'app/client/components/commands';
|
import * as commands from 'app/client/components/commands';
|
||||||
@ -27,7 +27,7 @@ import {createSessionObs} from 'app/client/lib/sessionObs';
|
|||||||
import {setTestState} from 'app/client/lib/testState';
|
import {setTestState} from 'app/client/lib/testState';
|
||||||
import {selectFiles} from 'app/client/lib/uploads';
|
import {selectFiles} from 'app/client/lib/uploads';
|
||||||
import {reportError} from 'app/client/models/AppModel';
|
import {reportError} from 'app/client/models/AppModel';
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import {DataTableModelWithDiff} from 'app/client/models/DataTableModelWithDiff';
|
import {DataTableModelWithDiff} from 'app/client/models/DataTableModelWithDiff';
|
||||||
import {DocData} from 'app/client/models/DocData';
|
import {DocData} from 'app/client/models/DocData';
|
||||||
import {DocInfoRec, DocModel, ViewRec, ViewSectionRec} from 'app/client/models/DocModel';
|
import {DocInfoRec, DocModel, ViewRec, ViewSectionRec} from 'app/client/models/DocModel';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {DataRowModel} from "app/client/models/DataRowModel";
|
import {DataRowModel} from "app/client/models/DataRowModel";
|
||||||
import * as DataTableModel from "app/client/models/DataTableModel";
|
import DataTableModel from "app/client/models/DataTableModel";
|
||||||
import {DocModel} from 'app/client/models/DocModel';
|
import {DocModel} from 'app/client/models/DocModel';
|
||||||
import {ColumnRec} from "app/client/models/entities/ColumnRec";
|
import {ColumnRec} from "app/client/models/entities/ColumnRec";
|
||||||
import {TableRec} from "app/client/models/entities/TableRec";
|
import {TableRec} from "app/client/models/entities/TableRec";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {CustomView} from 'app/client/components/CustomView';
|
import {CustomView} from 'app/client/components/CustomView';
|
||||||
import {DataRowModel} from 'app/client/models/DataRowModel';
|
import {DataRowModel} from 'app/client/models/DataRowModel';
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import {ViewSectionRec} from 'app/client/models/DocModel';
|
import {ViewSectionRec} from 'app/client/models/DocModel';
|
||||||
import {dom} from 'grainjs';
|
import {dom} from 'grainjs';
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import {ChartView} from 'app/client/components/ChartView';
|
import {ChartView} from 'app/client/components/ChartView';
|
||||||
import * as commands from 'app/client/components/commands';
|
import * as commands from 'app/client/components/commands';
|
||||||
import {CustomView} from 'app/client/components/CustomView';
|
import {CustomView} from 'app/client/components/CustomView';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// This module is unused except to group some modules for a webpack bundle.
|
// This module is unused except to group some modules for a webpack bundle.
|
||||||
// TODO It is a vestige of the old ViewPane.js, and can go away with some bundling improvements.
|
// TODO It is a vestige of the old ViewPane.js, and can go away with some bundling improvements.
|
||||||
|
|
||||||
import * as ViewConfigTab from 'app/client/components/ViewConfigTab';
|
import ViewConfigTab from 'app/client/components/ViewConfigTab';
|
||||||
import * as FieldConfig from 'app/client/ui/FieldConfig';
|
import * as FieldConfig from 'app/client/ui/FieldConfig';
|
||||||
export {ViewConfigTab, FieldConfig};
|
export {ViewConfigTab, FieldConfig};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import {GristDoc} from 'app/client/components/GristDoc';
|
import {GristDoc} from 'app/client/components/GristDoc';
|
||||||
import {get as getBrowserGlobals} from 'app/client/lib/browserGlobals';
|
import {get as getBrowserGlobals} from 'app/client/lib/browserGlobals';
|
||||||
import {ColumnRec, ViewSectionRec} from 'app/client/models/DocModel';
|
import {ColumnRec, ViewSectionRec} from 'app/client/models/DocModel';
|
||||||
|
16
app/client/declarations.d.ts
vendored
16
app/client/declarations.d.ts
vendored
@ -33,10 +33,10 @@ declare module "app/client/components/BaseView" {
|
|||||||
import {Cursor, CursorPos} from 'app/client/components/Cursor';
|
import {Cursor, CursorPos} from 'app/client/components/Cursor';
|
||||||
import {GristDoc} from 'app/client/components/GristDoc';
|
import {GristDoc} from 'app/client/components/GristDoc';
|
||||||
import {Disposable} from 'app/client/lib/dispose';
|
import {Disposable} from 'app/client/lib/dispose';
|
||||||
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
import BaseRowModel from "app/client/models/BaseRowModel";
|
||||||
import {DataRowModel} from 'app/client/models/DataRowModel';
|
import {DataRowModel} from 'app/client/models/DataRowModel';
|
||||||
import {LazyArrayModel} from "app/client/models/DataTableModel";
|
import {LazyArrayModel} from "app/client/models/DataTableModel";
|
||||||
import * as DataTableModel from "app/client/models/DataTableModel";
|
import DataTableModel from "app/client/models/DataTableModel";
|
||||||
import {ViewSectionRec} from "app/client/models/DocModel";
|
import {ViewSectionRec} from "app/client/models/DocModel";
|
||||||
import {FilterInfo} from 'app/client/models/entities/ViewSectionRec';
|
import {FilterInfo} from 'app/client/models/entities/ViewSectionRec';
|
||||||
import {SortedRowSet} from 'app/client/models/rowset';
|
import {SortedRowSet} from 'app/client/models/rowset';
|
||||||
@ -141,7 +141,7 @@ declare module "app/client/components/commands" {
|
|||||||
|
|
||||||
declare module "app/client/models/BaseRowModel" {
|
declare module "app/client/models/BaseRowModel" {
|
||||||
import {Disposable} from 'app/client/lib/dispose';
|
import {Disposable} from 'app/client/lib/dispose';
|
||||||
import * as TableModel from 'app/client/models/TableModel';
|
import TableModel from 'app/client/models/TableModel';
|
||||||
import {ColValues} from 'app/common/DocActions';
|
import {ColValues} from 'app/common/DocActions';
|
||||||
|
|
||||||
namespace BaseRowModel {}
|
namespace BaseRowModel {}
|
||||||
@ -158,7 +158,7 @@ declare module "app/client/models/BaseRowModel" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare module "app/client/models/MetaRowModel" {
|
declare module "app/client/models/MetaRowModel" {
|
||||||
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
import BaseRowModel from "app/client/models/BaseRowModel";
|
||||||
namespace MetaRowModel {}
|
namespace MetaRowModel {}
|
||||||
class MetaRowModel extends BaseRowModel {
|
class MetaRowModel extends BaseRowModel {
|
||||||
public _isDeleted: ko.Observable<boolean>;
|
public _isDeleted: ko.Observable<boolean>;
|
||||||
@ -246,10 +246,10 @@ declare module "app/client/models/TableModel" {
|
|||||||
declare module "app/client/models/MetaTableModel" {
|
declare module "app/client/models/MetaTableModel" {
|
||||||
import {KoArray} from "app/client/lib/koArray";
|
import {KoArray} from "app/client/lib/koArray";
|
||||||
import {DocModel} from "app/client/models/DocModel";
|
import {DocModel} from "app/client/models/DocModel";
|
||||||
import * as MetaRowModel from "app/client/models/MetaRowModel";
|
import MetaRowModel from "app/client/models/MetaRowModel";
|
||||||
import {RowSource} from "app/client/models/rowset";
|
import {RowSource} from "app/client/models/rowset";
|
||||||
import {TableData} from "app/client/models/TableData";
|
import {TableData} from "app/client/models/TableData";
|
||||||
import * as TableModel from "app/client/models/TableModel";
|
import TableModel from "app/client/models/TableModel";
|
||||||
import {CellValue} from "app/common/DocActions";
|
import {CellValue} from "app/common/DocActions";
|
||||||
|
|
||||||
namespace MetaTableModel {}
|
namespace MetaTableModel {}
|
||||||
@ -270,12 +270,12 @@ declare module "app/client/models/MetaTableModel" {
|
|||||||
|
|
||||||
declare module "app/client/models/DataTableModel" {
|
declare module "app/client/models/DataTableModel" {
|
||||||
import {KoArray} from "app/client/lib/koArray";
|
import {KoArray} from "app/client/lib/koArray";
|
||||||
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
import BaseRowModel from "app/client/models/BaseRowModel";
|
||||||
import {DocModel, TableRec} from "app/client/models/DocModel";
|
import {DocModel, TableRec} from "app/client/models/DocModel";
|
||||||
import {TableQuerySets} from 'app/client/models/QuerySet';
|
import {TableQuerySets} from 'app/client/models/QuerySet';
|
||||||
import {SortedRowSet} from "app/client/models/rowset";
|
import {SortedRowSet} from "app/client/models/rowset";
|
||||||
import {TableData} from "app/client/models/TableData";
|
import {TableData} from "app/client/models/TableData";
|
||||||
import * as TableModel from "app/client/models/TableModel";
|
import TableModel from "app/client/models/TableModel";
|
||||||
import {UIRowId} from "app/common/UIRowId";
|
import {UIRowId} from "app/common/UIRowId";
|
||||||
|
|
||||||
namespace DataTableModel {
|
namespace DataTableModel {
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
import { ClientScope } from 'app/client/components/ClientScope';
|
import { ClientScope } from 'app/client/components/ClientScope';
|
||||||
import { get as getBrowserGlobals } from 'app/client/lib/browserGlobals';
|
import { get as getBrowserGlobals } from 'app/client/lib/browserGlobals';
|
||||||
import * as dom from 'app/client/lib/dom';
|
import dom from 'app/client/lib/dom';
|
||||||
import * as Mousetrap from 'app/client/lib/Mousetrap';
|
import * as Mousetrap from 'app/client/lib/Mousetrap';
|
||||||
import { ActionRouter } from 'app/common/ActionRouter';
|
import { ActionRouter } from 'app/common/ActionRouter';
|
||||||
import { BaseComponent, BaseLogger, createRpcLogger, PluginInstance, warnIfNotReady } from 'app/common/PluginInstance';
|
import { BaseComponent, BaseLogger, createRpcLogger, PluginInstance, warnIfNotReady } from 'app/common/PluginInstance';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import { ColumnGetter, ColumnGetters } from 'app/common/ColumnGetters';
|
import { ColumnGetter, ColumnGetters } from 'app/common/ColumnGetters';
|
||||||
import * as gristTypes from 'app/common/gristTypes';
|
import * as gristTypes from 'app/common/gristTypes';
|
||||||
import { choiceGetter } from 'app/common/SortFunc';
|
import { choiceGetter } from 'app/common/SortFunc';
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { KoArray } from 'app/client/lib/koArray';
|
import { KoArray } from 'app/client/lib/koArray';
|
||||||
import * as koUtil from 'app/client/lib/koUtil';
|
import * as koUtil from 'app/client/lib/koUtil';
|
||||||
import * as BaseRowModel from 'app/client/models/BaseRowModel';
|
import BaseRowModel from 'app/client/models/BaseRowModel';
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import { IRowModel } from 'app/client/models/DocModel';
|
import { IRowModel } from 'app/client/models/DocModel';
|
||||||
import { ValidationRec } from 'app/client/models/entities/ValidationRec';
|
import { ValidationRec } from 'app/client/models/entities/ValidationRec';
|
||||||
import * as modelUtil from 'app/client/models/modelUtil';
|
import * as modelUtil from 'app/client/models/modelUtil';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
import BaseRowModel from "app/client/models/BaseRowModel";
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import { DocModel } from 'app/client/models/DocModel';
|
import { DocModel } from 'app/client/models/DocModel';
|
||||||
import { TableRec } from 'app/client/models/entities/TableRec';
|
import { TableRec } from 'app/client/models/entities/TableRec';
|
||||||
import { TableQuerySets } from 'app/client/models/QuerySet';
|
import { TableQuerySets } from 'app/client/models/QuerySet';
|
||||||
|
@ -16,11 +16,11 @@ import * as ko from 'knockout';
|
|||||||
|
|
||||||
import * as koArray from 'app/client/lib/koArray';
|
import * as koArray from 'app/client/lib/koArray';
|
||||||
import * as koUtil from 'app/client/lib/koUtil';
|
import * as koUtil from 'app/client/lib/koUtil';
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import {DocData} from 'app/client/models/DocData';
|
import {DocData} from 'app/client/models/DocData';
|
||||||
import {urlState} from 'app/client/models/gristUrlState';
|
import {urlState} from 'app/client/models/gristUrlState';
|
||||||
import * as MetaRowModel from 'app/client/models/MetaRowModel';
|
import MetaRowModel from 'app/client/models/MetaRowModel';
|
||||||
import * as MetaTableModel from 'app/client/models/MetaTableModel';
|
import MetaTableModel from 'app/client/models/MetaTableModel';
|
||||||
import * as rowset from 'app/client/models/rowset';
|
import * as rowset from 'app/client/models/rowset';
|
||||||
import {isHiddenTable, isRawTable} from 'app/common/isHiddenTable';
|
import {isHiddenTable, isRawTable} from 'app/common/isHiddenTable';
|
||||||
import {schema, SchemaTypes} from 'app/common/schema';
|
import {schema, SchemaTypes} from 'app/common/schema';
|
||||||
|
@ -13,7 +13,7 @@ import {SortPref, UserOrgPrefs, ViewPref} from 'app/common/Prefs';
|
|||||||
import * as roles from 'app/common/roles';
|
import * as roles from 'app/common/roles';
|
||||||
import {Document, Organization, Workspace} from 'app/common/UserAPI';
|
import {Document, Organization, Workspace} from 'app/common/UserAPI';
|
||||||
import {bundleChanges, Computed, Disposable, Observable, subscribe} from 'grainjs';
|
import {bundleChanges, Computed, Disposable, Observable, subscribe} from 'grainjs';
|
||||||
import * as moment from 'moment';
|
import moment from 'moment';
|
||||||
import flatten = require('lodash/flatten');
|
import flatten = require('lodash/flatten');
|
||||||
import sortBy = require('lodash/sortBy');
|
import sortBy = require('lodash/sortBy');
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
* TODO: client-side should show "..." or "50000 more rows not shown" in that case.
|
* TODO: client-side should show "..." or "50000 more rows not shown" in that case.
|
||||||
* TODO: Reference columns don't work properly because always use a displayCol which relies on formulas
|
* TODO: Reference columns don't work properly because always use a displayCol which relies on formulas
|
||||||
*/
|
*/
|
||||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
import DataTableModel from 'app/client/models/DataTableModel';
|
||||||
import {DocModel} from 'app/client/models/DocModel';
|
import {DocModel} from 'app/client/models/DocModel';
|
||||||
import {BaseFilteredRowSource, RowId, RowList, RowSource} from 'app/client/models/rowset';
|
import {BaseFilteredRowSource, RowId, RowList, RowSource} from 'app/client/models/rowset';
|
||||||
import {TableData} from 'app/client/models/TableData';
|
import {TableData} from 'app/client/models/TableData';
|
||||||
|
@ -4,7 +4,7 @@ import {ColumnRec, ValidationRec, ViewRec} from 'app/client/models/DocModel';
|
|||||||
import * as modelUtil from 'app/client/models/modelUtil';
|
import * as modelUtil from 'app/client/models/modelUtil';
|
||||||
import {MANUALSORT} from 'app/common/gristTypes';
|
import {MANUALSORT} from 'app/common/gristTypes';
|
||||||
import * as ko from 'knockout';
|
import * as ko from 'knockout';
|
||||||
import * as randomcolor from 'randomcolor';
|
import randomcolor from 'randomcolor';
|
||||||
|
|
||||||
// Represents a user-defined table.
|
// Represents a user-defined table.
|
||||||
export interface TableRec extends IRowModel<"_grist_Tables"> {
|
export interface TableRec extends IRowModel<"_grist_Tables"> {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as BaseView from 'app/client/components/BaseView';
|
import BaseView from 'app/client/components/BaseView';
|
||||||
import {CursorPos} from 'app/client/components/Cursor';
|
import {CursorPos} from 'app/client/components/Cursor';
|
||||||
import {FilterColValues, LinkingState} from 'app/client/components/LinkingState';
|
import {FilterColValues, LinkingState} from 'app/client/components/LinkingState';
|
||||||
import {KoArray} from 'app/client/lib/koArray';
|
import {KoArray} from 'app/client/lib/koArray';
|
||||||
|
@ -12,7 +12,7 @@ import {buildUrlId, parseUrlId} from 'app/common/gristUrls';
|
|||||||
import {StringUnion} from 'app/common/StringUnion';
|
import {StringUnion} from 'app/common/StringUnion';
|
||||||
import {DocSnapshot} from 'app/common/UserAPI';
|
import {DocSnapshot} from 'app/common/UserAPI';
|
||||||
import {Disposable, dom, IDomComponent, MultiHolder, Observable, styled} from 'grainjs';
|
import {Disposable, dom, IDomComponent, MultiHolder, Observable, styled} from 'grainjs';
|
||||||
import * as moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
const DocHistorySubTab = StringUnion("activity", "snapshots");
|
const DocHistorySubTab = StringUnion("activity", "snapshots");
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import * as browserGlobals from 'app/client/lib/browserGlobals';
|
import * as browserGlobals from 'app/client/lib/browserGlobals';
|
||||||
import * as dom from 'app/client/lib/dom';
|
import dom from 'app/client/lib/dom';
|
||||||
const G = browserGlobals.get('document', 'window');
|
const G = browserGlobals.get('document', 'window');
|
||||||
|
|
||||||
export interface FileDialogOptions {
|
export interface FileDialogOptions {
|
||||||
|
@ -3,7 +3,7 @@ import {duplicatePage} from 'app/client/components/duplicatePage';
|
|||||||
import {GristDoc} from 'app/client/components/GristDoc';
|
import {GristDoc} from 'app/client/components/GristDoc';
|
||||||
import {PageRec} from 'app/client/models/DocModel';
|
import {PageRec} from 'app/client/models/DocModel';
|
||||||
import {urlState} from 'app/client/models/gristUrlState';
|
import {urlState} from 'app/client/models/gristUrlState';
|
||||||
import * as MetaTableModel from 'app/client/models/MetaTableModel';
|
import MetaTableModel from 'app/client/models/MetaTableModel';
|
||||||
import {find as findInTree, fromTableData, TreeItemRecord, TreeRecord,
|
import {find as findInTree, fromTableData, TreeItemRecord, TreeRecord,
|
||||||
TreeTableData} from 'app/client/models/TreeModel';
|
TreeTableData} from 'app/client/models/TreeModel';
|
||||||
import {TreeViewComponent} from 'app/client/ui/TreeViewComponent';
|
import {TreeViewComponent} from 'app/client/ui/TreeViewComponent';
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
import * as commands from 'app/client/components/commands';
|
import * as commands from 'app/client/components/commands';
|
||||||
import {GristDoc, IExtraTool, TabContent} from 'app/client/components/GristDoc';
|
import {GristDoc, IExtraTool, TabContent} from 'app/client/components/GristDoc';
|
||||||
import * as RefSelect from 'app/client/components/RefSelect';
|
import RefSelect from 'app/client/components/RefSelect';
|
||||||
import * as ViewConfigTab from 'app/client/components/ViewConfigTab';
|
import ViewConfigTab from 'app/client/components/ViewConfigTab';
|
||||||
import {domAsync} from 'app/client/lib/domAsync';
|
import {domAsync} from 'app/client/lib/domAsync';
|
||||||
import * as imports from 'app/client/lib/imports';
|
import * as imports from 'app/client/lib/imports';
|
||||||
import {createSessionObs} from 'app/client/lib/sessionObs';
|
import {createSessionObs} from 'app/client/lib/sessionObs';
|
||||||
|
@ -2,7 +2,7 @@ import { ColumnRec, DocModel, TableRec, ViewSectionRec } from 'app/client/models
|
|||||||
import { IPageWidget } from 'app/client/ui/PageWidgetPicker';
|
import { IPageWidget } from 'app/client/ui/PageWidgetPicker';
|
||||||
import { getReferencedTableId } from 'app/common/gristTypes';
|
import { getReferencedTableId } from 'app/common/gristTypes';
|
||||||
import { IOptionFull } from 'grainjs';
|
import { IOptionFull } from 'grainjs';
|
||||||
import * as assert from 'assert';
|
import assert from 'assert';
|
||||||
import * as gutil from "app/common/gutil";
|
import * as gutil from "app/common/gutil";
|
||||||
|
|
||||||
// some unicode characters
|
// some unicode characters
|
||||||
|
@ -4,7 +4,7 @@ import { FormulaTransform } from 'app/client/components/FormulaTransform';
|
|||||||
import { GristDoc } from 'app/client/components/GristDoc';
|
import { GristDoc } from 'app/client/components/GristDoc';
|
||||||
import { addColTypeSuffix } from 'app/client/components/TypeConversion';
|
import { addColTypeSuffix } from 'app/client/components/TypeConversion';
|
||||||
import { TypeTransform } from 'app/client/components/TypeTransform';
|
import { TypeTransform } from 'app/client/components/TypeTransform';
|
||||||
import * as dom from 'app/client/lib/dom';
|
import dom from 'app/client/lib/dom';
|
||||||
import { KoArray } from 'app/client/lib/koArray';
|
import { KoArray } from 'app/client/lib/koArray';
|
||||||
import * as kd from 'app/client/lib/koDom';
|
import * as kd from 'app/client/lib/koDom';
|
||||||
import * as kf from 'app/client/lib/koForm';
|
import * as kf from 'app/client/lib/koForm';
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {ApiError} from 'app/common/ApiError';
|
import {ApiError} from 'app/common/ApiError';
|
||||||
import {APPROACHING_LIMIT_RATIO, DataLimitStatus, DocumentUsage, getUsageRatio} from 'app/common/DocUsage';
|
import {APPROACHING_LIMIT_RATIO, DataLimitStatus, DocumentUsage, getUsageRatio} from 'app/common/DocUsage';
|
||||||
import {Features} from 'app/common/Features';
|
import {Features} from 'app/common/Features';
|
||||||
import * as moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error class indicating failure due to limits being exceeded.
|
* Error class indicating failure due to limits being exceeded.
|
||||||
|
@ -9,13 +9,13 @@ import {OrgUsageSummary} from 'app/common/DocUsage';
|
|||||||
import {Product} from 'app/common/Features';
|
import {Product} from 'app/common/Features';
|
||||||
import {ICustomWidget} from 'app/common/CustomWidget';
|
import {ICustomWidget} from 'app/common/CustomWidget';
|
||||||
import {isClient} from 'app/common/gristUrls';
|
import {isClient} from 'app/common/gristUrls';
|
||||||
import {FullUser} from 'app/common/LoginSessionAPI';
|
import {FullUser, UserProfile} from 'app/common/LoginSessionAPI';
|
||||||
import {OrgPrefs, UserOrgPrefs, UserPrefs} from 'app/common/Prefs';
|
import {OrgPrefs, UserOrgPrefs, UserPrefs} from 'app/common/Prefs';
|
||||||
import * as roles from 'app/common/roles';
|
import * as roles from 'app/common/roles';
|
||||||
import {addCurrentOrgToPath} from 'app/common/urlUtils';
|
import {addCurrentOrgToPath} from 'app/common/urlUtils';
|
||||||
import {encodeQueryParams} from 'app/common/gutil';
|
import {encodeQueryParams} from 'app/common/gutil';
|
||||||
|
|
||||||
export {FullUser} from 'app/common/LoginSessionAPI';
|
export type {FullUser, UserProfile};
|
||||||
|
|
||||||
// Nominal email address of the anonymous user.
|
// Nominal email address of the anonymous user.
|
||||||
export const ANONYMOUS_USER_EMAIL = 'anon@getgrist.com';
|
export const ANONYMOUS_USER_EMAIL = 'anon@getgrist.com';
|
||||||
@ -285,8 +285,6 @@ export interface DocStateComparisonDetails {
|
|||||||
rightChanges: ActionSummary;
|
rightChanges: ActionSummary;
|
||||||
}
|
}
|
||||||
|
|
||||||
export {UserProfile} from 'app/common/LoginSessionAPI';
|
|
||||||
|
|
||||||
export interface UserAPI {
|
export interface UserAPI {
|
||||||
getSessionActive(): Promise<ActiveSessionInfo>;
|
getSessionActive(): Promise<ActiveSessionInfo>;
|
||||||
setSessionActive(email: string): Promise<void>;
|
setSessionActive(email: string): Promise<void>;
|
||||||
|
@ -12,7 +12,7 @@ import {buildNumberFormat, NumberFormatOptions} from 'app/common/NumberFormat';
|
|||||||
import {createParserOrFormatterArguments, ReferenceParsingOptions} from 'app/common/ValueParser';
|
import {createParserOrFormatterArguments, ReferenceParsingOptions} from 'app/common/ValueParser';
|
||||||
import {GristObjCode} from 'app/plugin/GristData';
|
import {GristObjCode} from 'app/plugin/GristData';
|
||||||
import {decodeObject, GristDateTime} from 'app/plugin/objtypes';
|
import {decodeObject, GristDateTime} from 'app/plugin/objtypes';
|
||||||
import * as moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import isPlainObject = require('lodash/isPlainObject');
|
import isPlainObject = require('lodash/isPlainObject');
|
||||||
|
|
||||||
export {PENDING_DATA_PLACEHOLDER} from 'app/plugin/objtypes';
|
export {PENDING_DATA_PLACEHOLDER} from 'app/plugin/objtypes';
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
* unmarshalled to JS strings if 'bufferToString' option is set.
|
* unmarshalled to JS strings if 'bufferToString' option is set.
|
||||||
*/
|
*/
|
||||||
import {BigInt} from 'app/common/BigInt';
|
import {BigInt} from 'app/common/BigInt';
|
||||||
import * as MemBuffer from 'app/common/MemBuffer';
|
import MemBuffer from 'app/common/MemBuffer';
|
||||||
import {EventEmitter} from 'events';
|
import {EventEmitter} from 'events';
|
||||||
import * as util from 'util';
|
import * as util from 'util';
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@ import last = require('lodash/last');
|
|||||||
import memoize = require('lodash/memoize');
|
import memoize = require('lodash/memoize');
|
||||||
import {getDistinctValues, isNonNullish} from 'app/common/gutil';
|
import {getDistinctValues, isNonNullish} from 'app/common/gutil';
|
||||||
// Simply importing 'moment-guess' inconsistently imports bundle.js or bundle.esm.js depending on environment
|
// Simply importing 'moment-guess' inconsistently imports bundle.js or bundle.esm.js depending on environment
|
||||||
import * as guessFormat from '@gristlabs/moment-guess/dist/bundle.js';
|
import guessFormat from '@gristlabs/moment-guess/dist/bundle.js';
|
||||||
import * as moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
|
|
||||||
// When using YY format, use a consistent interpretation in datepicker and in moment parsing: add
|
// When using YY format, use a consistent interpretation in datepicker and in moment parsing: add
|
||||||
// 2000 if the result is at most 10 years greater than the current year; otherwise add 1900. See
|
// 2000 if the result is at most 10 years greater than the current year; otherwise add 1900. See
|
||||||
|
@ -9,7 +9,7 @@ import {getAuthorizedUserId, getUserId, getUserProfiles, RequestWithLogin} from
|
|||||||
import {getSessionUser, linkOrgWithEmail} from 'app/server/lib/BrowserSession';
|
import {getSessionUser, linkOrgWithEmail} from 'app/server/lib/BrowserSession';
|
||||||
import {expressWrap} from 'app/server/lib/expressWrap';
|
import {expressWrap} from 'app/server/lib/expressWrap';
|
||||||
import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {addPermit, clearSessionCacheIfNeeded, getDocScope, getScope, integerParam,
|
import {addPermit, clearSessionCacheIfNeeded, getDocScope, getScope, integerParam,
|
||||||
isParameterOn, sendOkReply, sendReply, stringParam} from 'app/server/lib/requestUtils';
|
isParameterOn, sendOkReply, sendReply, stringParam} from 'app/server/lib/requestUtils';
|
||||||
import {IWidgetRepository} from 'app/server/lib/WidgetRepository';
|
import {IWidgetRepository} from 'app/server/lib/WidgetRepository';
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import {MapWithTTL} from 'app/common/AsyncCreate';
|
import {MapWithTTL} from 'app/common/AsyncCreate';
|
||||||
import * as version from 'app/common/version';
|
import * as version from 'app/common/version';
|
||||||
import {DocStatus, DocWorkerInfo, IDocWorkerMap} from 'app/server/lib/DocWorkerMap';
|
import {DocStatus, DocWorkerInfo, IDocWorkerMap} from 'app/server/lib/DocWorkerMap';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {checkPermitKey, formatPermitKey, IPermitStore, Permit} from 'app/server/lib/Permit';
|
import {checkPermitKey, formatPermitKey, IPermitStore, Permit} from 'app/server/lib/Permit';
|
||||||
import {promisifyAll} from 'bluebird';
|
import {promisifyAll} from 'bluebird';
|
||||||
import mapValues = require('lodash/mapValues');
|
import mapValues = require('lodash/mapValues');
|
||||||
import {createClient, Multi, RedisClient} from 'redis';
|
import {createClient, Multi, RedisClient} from 'redis';
|
||||||
import * as Redlock from 'redlock';
|
import Redlock from 'redlock';
|
||||||
import * as uuidv4 from 'uuid/v4';
|
import uuidv4 from 'uuid/v4';
|
||||||
|
|
||||||
promisifyAll(RedisClient.prototype);
|
promisifyAll(RedisClient.prototype);
|
||||||
promisifyAll(Multi.prototype);
|
promisifyAll(Multi.prototype);
|
||||||
|
@ -52,7 +52,7 @@ import {
|
|||||||
} from 'app/gen-server/sqlUtils';
|
} from 'app/gen-server/sqlUtils';
|
||||||
import {getOrCreateConnection} from 'app/server/lib/dbUtils';
|
import {getOrCreateConnection} from 'app/server/lib/dbUtils';
|
||||||
import {makeId} from 'app/server/lib/idUtils';
|
import {makeId} from 'app/server/lib/idUtils';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {Permit} from 'app/server/lib/Permit';
|
import {Permit} from 'app/server/lib/Permit';
|
||||||
import {getScope} from 'app/server/lib/requestUtils';
|
import {getScope} from 'app/server/lib/requestUtils';
|
||||||
import {WebHookSecret} from "app/server/lib/Triggers";
|
import {WebHookSecret} from "app/server/lib/Triggers";
|
||||||
@ -66,7 +66,7 @@ import {
|
|||||||
SelectQueryBuilder,
|
SelectQueryBuilder,
|
||||||
WhereExpression
|
WhereExpression
|
||||||
} from "typeorm";
|
} from "typeorm";
|
||||||
import * as uuidv4 from "uuid/v4";
|
import uuidv4 from "uuid/v4";
|
||||||
import flatten = require('lodash/flatten');
|
import flatten = require('lodash/flatten');
|
||||||
import pick = require('lodash/pick');
|
import pick = require('lodash/pick');
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import { getAuthorizedUserId } from 'app/server/lib/Authorizer';
|
|||||||
import { expressWrap } from 'app/server/lib/expressWrap';
|
import { expressWrap } from 'app/server/lib/expressWrap';
|
||||||
import { GristServer } from 'app/server/lib/GristServer';
|
import { GristServer } from 'app/server/lib/GristServer';
|
||||||
import { IElectionStore } from 'app/server/lib/IElectionStore';
|
import { IElectionStore } from 'app/server/lib/IElectionStore';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { IPermitStore } from 'app/server/lib/Permit';
|
import { IPermitStore } from 'app/server/lib/Permit';
|
||||||
import { stringParam } from 'app/server/lib/requestUtils';
|
import { stringParam } from 'app/server/lib/requestUtils';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
import * as sqlite3 from '@gristlabs/sqlite3';
|
import * as sqlite3 from '@gristlabs/sqlite3';
|
||||||
import {delay} from 'app/common/delay';
|
import {delay} from 'app/common/delay';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {Mutex, MutexInterface} from 'async-mutex';
|
import {Mutex, MutexInterface} from 'async-mutex';
|
||||||
import isEqual = require('lodash/isEqual');
|
import isEqual = require('lodash/isEqual');
|
||||||
import {EntityManager, QueryRunner} from 'typeorm';
|
import {EntityManager, QueryRunner} from 'typeorm';
|
||||||
|
@ -2,7 +2,7 @@ import {Document} from 'app/gen-server/entity/Document';
|
|||||||
import {Organization} from 'app/gen-server/entity/Organization';
|
import {Organization} from 'app/gen-server/entity/Organization';
|
||||||
import {User} from 'app/gen-server/entity/User';
|
import {User} from 'app/gen-server/entity/User';
|
||||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
// Frequency of logging usage information. Not something we need
|
// Frequency of logging usage information. Not something we need
|
||||||
// to track with much granularity.
|
// to track with much granularity.
|
||||||
|
4
app/server/declarations.d.ts
vendored
4
app/server/declarations.d.ts
vendored
@ -41,8 +41,8 @@ declare module "app-module-path" {
|
|||||||
|
|
||||||
// version of pidusage that has correct ctime on linux
|
// version of pidusage that has correct ctime on linux
|
||||||
declare module '@gristlabs/pidusage' {
|
declare module '@gristlabs/pidusage' {
|
||||||
import * as pidusage from 'pidusage';
|
import pidusage from 'pidusage';
|
||||||
export = pidusage;
|
export default pidusage;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module "csv";
|
declare module "csv";
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
import {updateDb} from 'app/server/lib/dbUtils';
|
import {updateDb} from 'app/server/lib/dbUtils';
|
||||||
import {FlexServer} from 'app/server/lib/FlexServer';
|
import {FlexServer} from 'app/server/lib/FlexServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {main as mergedServerMain} from 'app/server/mergedServerMain';
|
import {main as mergedServerMain} from 'app/server/mergedServerMain';
|
||||||
import {promisifyAll} from 'bluebird';
|
import {promisifyAll} from 'bluebird';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
|
@ -74,23 +74,23 @@ import {ICreateActiveDocOptions} from 'app/server/lib/ICreate';
|
|||||||
import {makeForkIds} from 'app/server/lib/idUtils';
|
import {makeForkIds} from 'app/server/lib/idUtils';
|
||||||
import {GRIST_DOC_SQL, GRIST_DOC_WITH_TABLE1_SQL} from 'app/server/lib/initialDocSql';
|
import {GRIST_DOC_SQL, GRIST_DOC_WITH_TABLE1_SQL} from 'app/server/lib/initialDocSql';
|
||||||
import {ISandbox} from 'app/server/lib/ISandbox';
|
import {ISandbox} from 'app/server/lib/ISandbox';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {LogMethods} from "app/server/lib/LogMethods";
|
import {LogMethods} from "app/server/lib/LogMethods";
|
||||||
import {DocRequests} from 'app/server/lib/Requests';
|
import {DocRequests} from 'app/server/lib/Requests';
|
||||||
import {shortDesc} from 'app/server/lib/shortDesc';
|
import {shortDesc} from 'app/server/lib/shortDesc';
|
||||||
import {TableMetadataLoader} from 'app/server/lib/TableMetadataLoader';
|
import {TableMetadataLoader} from 'app/server/lib/TableMetadataLoader';
|
||||||
import {DocTriggers} from "app/server/lib/Triggers";
|
import {DocTriggers} from "app/server/lib/Triggers";
|
||||||
import {fetchURL, FileUploadInfo, globalUploadSet, UploadInfo} from 'app/server/lib/uploads';
|
import {fetchURL, FileUploadInfo, globalUploadSet, UploadInfo} from 'app/server/lib/uploads';
|
||||||
import * as assert from 'assert';
|
import assert from 'assert';
|
||||||
import {Mutex} from 'async-mutex';
|
import {Mutex} from 'async-mutex';
|
||||||
import * as bluebird from 'bluebird';
|
import * as bluebird from 'bluebird';
|
||||||
import {EventEmitter} from 'events';
|
import {EventEmitter} from 'events';
|
||||||
import {IMessage, MsgType} from 'grain-rpc';
|
import {IMessage, MsgType} from 'grain-rpc';
|
||||||
import * as imageSize from 'image-size';
|
import imageSize from 'image-size';
|
||||||
import * as moment from 'moment-timezone';
|
import * as moment from 'moment-timezone';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import {createClient, RedisClient} from 'redis';
|
import {createClient, RedisClient} from 'redis';
|
||||||
import * as tmp from 'tmp';
|
import tmp from 'tmp';
|
||||||
|
|
||||||
import {ActionHistory} from './ActionHistory';
|
import {ActionHistory} from './ActionHistory';
|
||||||
import {ActionHistoryImpl} from './ActionHistoryImpl';
|
import {ActionHistoryImpl} from './ActionHistoryImpl';
|
||||||
|
@ -17,7 +17,7 @@ import {ParseFileResult, ParseOptions} from 'app/plugin/FileParserAPI';
|
|||||||
import {GristColumn, GristTable} from 'app/plugin/GristTable';
|
import {GristColumn, GristTable} from 'app/plugin/GristTable';
|
||||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||||
import {DocSession, OptDocSession} from 'app/server/lib/DocSession';
|
import {DocSession, OptDocSession} from 'app/server/lib/DocSession';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {globalUploadSet, moveUpload, UploadInfo} from 'app/server/lib/uploads';
|
import {globalUploadSet, moveUpload, UploadInfo} from 'app/server/lib/uploads';
|
||||||
import {buildComparisonQuery} from 'app/server/lib/ExpandedQuery';
|
import {buildComparisonQuery} from 'app/server/lib/ExpandedQuery';
|
||||||
import flatten = require('lodash/flatten');
|
import flatten = require('lodash/flatten');
|
||||||
|
@ -19,7 +19,7 @@ import {DocStatus, IDocWorkerMap} from 'app/server/lib/DocWorkerMap';
|
|||||||
import {expressWrap} from 'app/server/lib/expressWrap';
|
import {expressWrap} from 'app/server/lib/expressWrap';
|
||||||
import {DocTemplate, GristServer} from 'app/server/lib/GristServer';
|
import {DocTemplate, GristServer} from 'app/server/lib/GristServer';
|
||||||
import {getAssignmentId} from 'app/server/lib/idUtils';
|
import {getAssignmentId} from 'app/server/lib/idUtils';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {adaptServerUrl, addOrgToPathIfNeeded, pruneAPIResult, trustOrigin} from 'app/server/lib/requestUtils';
|
import {adaptServerUrl, addOrgToPathIfNeeded, pruneAPIResult, trustOrigin} from 'app/server/lib/requestUtils';
|
||||||
import {ISendAppPageOptions} from 'app/server/lib/sendAppPage';
|
import {ISendAppPageOptions} from 'app/server/lib/sendAppPage';
|
||||||
|
|
||||||
|
@ -14,13 +14,13 @@ import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
|||||||
import {COOKIE_MAX_AGE, getAllowedOrgForSessionID, getCookieDomain,
|
import {COOKIE_MAX_AGE, getAllowedOrgForSessionID, getCookieDomain,
|
||||||
cookieName as sessionCookieName} from 'app/server/lib/gristSessions';
|
cookieName as sessionCookieName} from 'app/server/lib/gristSessions';
|
||||||
import {makeId} from 'app/server/lib/idUtils';
|
import {makeId} from 'app/server/lib/idUtils';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {IPermitStore, Permit} from 'app/server/lib/Permit';
|
import {IPermitStore, Permit} from 'app/server/lib/Permit';
|
||||||
import {allowHost, getOriginUrl, optStringParam} from 'app/server/lib/requestUtils';
|
import {allowHost, getOriginUrl, optStringParam} from 'app/server/lib/requestUtils';
|
||||||
import * as cookie from 'cookie';
|
import * as cookie from 'cookie';
|
||||||
import {NextFunction, Request, RequestHandler, Response} from 'express';
|
import {NextFunction, Request, RequestHandler, Response} from 'express';
|
||||||
import {IncomingMessage} from 'http';
|
import {IncomingMessage} from 'http';
|
||||||
import * as onHeaders from 'on-headers';
|
import onHeaders from 'on-headers';
|
||||||
|
|
||||||
export interface RequestWithLogin extends Request {
|
export interface RequestWithLogin extends Request {
|
||||||
sessionID: string;
|
sessionID: string;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {normalizeEmail} from 'app/common/emails';
|
import {normalizeEmail} from 'app/common/emails';
|
||||||
import {UserProfile} from 'app/common/LoginSessionAPI';
|
import {UserProfile} from 'app/common/LoginSessionAPI';
|
||||||
import {SessionStore} from 'app/server/lib/gristSessions';
|
import {SessionStore} from 'app/server/lib/gristSessions';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {fromCallback} from 'app/server/lib/serverUtils';
|
import {fromCallback} from 'app/server/lib/serverUtils';
|
||||||
import {Request} from 'express';
|
import {Request} from 'express';
|
||||||
|
|
||||||
|
@ -12,12 +12,12 @@ import {Authorizer} from 'app/server/lib/Authorizer';
|
|||||||
import {ScopedSession} from 'app/server/lib/BrowserSession';
|
import {ScopedSession} from 'app/server/lib/BrowserSession';
|
||||||
import type {Comm} from 'app/server/lib/Comm';
|
import type {Comm} from 'app/server/lib/Comm';
|
||||||
import {DocSession} from 'app/server/lib/DocSession';
|
import {DocSession} from 'app/server/lib/DocSession';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {LogMethods} from "app/server/lib/LogMethods";
|
import {LogMethods} from "app/server/lib/LogMethods";
|
||||||
import {shortDesc} from 'app/server/lib/shortDesc';
|
import {shortDesc} from 'app/server/lib/shortDesc';
|
||||||
import {fromCallback} from 'app/server/lib/serverUtils';
|
import {fromCallback} from 'app/server/lib/serverUtils';
|
||||||
import * as crypto from 'crypto';
|
import * as crypto from 'crypto';
|
||||||
import * as moment from 'moment';
|
import moment from 'moment';
|
||||||
import * as WebSocket from 'ws';
|
import * as WebSocket from 'ws';
|
||||||
|
|
||||||
/// How many messages to accumulate for a disconnected client before booting it.
|
/// How many messages to accumulate for a disconnected client before booting it.
|
||||||
|
@ -47,7 +47,7 @@ import {ScopedSession} from "app/server/lib/BrowserSession";
|
|||||||
import {Client, ClientMethod} from "app/server/lib/Client";
|
import {Client, ClientMethod} from "app/server/lib/Client";
|
||||||
import {Hosts, RequestWithOrg} from 'app/server/lib/extractOrg';
|
import {Hosts, RequestWithOrg} from 'app/server/lib/extractOrg';
|
||||||
import {GristLoginMiddleware} from 'app/server/lib/GristServer';
|
import {GristLoginMiddleware} from 'app/server/lib/GristServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {localeFromRequest} from 'app/server/lib/ServerLocale';
|
import {localeFromRequest} from 'app/server/lib/ServerLocale';
|
||||||
import {fromCallback} from 'app/server/lib/serverUtils';
|
import {fromCallback} from 'app/server/lib/serverUtils';
|
||||||
import {Sessions} from 'app/server/lib/Sessions';
|
import {Sessions} from 'app/server/lib/Sessions';
|
||||||
|
@ -58,16 +58,16 @@ import {localeFromRequest} from "app/server/lib/ServerLocale";
|
|||||||
import {allowedEventTypes, isUrlAllowed, WebhookAction, WebHookSecret} from "app/server/lib/Triggers";
|
import {allowedEventTypes, isUrlAllowed, WebhookAction, WebHookSecret} from "app/server/lib/Triggers";
|
||||||
import {handleOptionalUpload, handleUpload} from "app/server/lib/uploads";
|
import {handleOptionalUpload, handleUpload} from "app/server/lib/uploads";
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as contentDisposition from 'content-disposition';
|
import contentDisposition from 'content-disposition';
|
||||||
import {Application, NextFunction, Request, RequestHandler, Response} from "express";
|
import {Application, NextFunction, Request, RequestHandler, Response} from "express";
|
||||||
import * as _ from "lodash";
|
import * as _ from "lodash";
|
||||||
import * as LRUCache from 'lru-cache';
|
import LRUCache from 'lru-cache';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as t from "ts-interface-checker";
|
import * as t from "ts-interface-checker";
|
||||||
import {Checker} from "ts-interface-checker";
|
import {Checker} from "ts-interface-checker";
|
||||||
import * as uuidv4 from "uuid/v4";
|
import uuidv4 from "uuid/v4";
|
||||||
|
|
||||||
// Cap on the number of requests that can be outstanding on a single document via the
|
// Cap on the number of requests that can be outstanding on a single document via the
|
||||||
// rest doc api. When this limit is exceeded, incoming requests receive an immediate
|
// rest doc api. When this limit is exceeded, incoming requests receive an immediate
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as pidusage from '@gristlabs/pidusage';
|
import pidusage from '@gristlabs/pidusage';
|
||||||
import {Document} from 'app/gen-server/entity/Document';
|
import {Document} from 'app/gen-server/entity/Document';
|
||||||
import {getScope} from 'app/server/lib/requestUtils';
|
import {getScope} from 'app/server/lib/requestUtils';
|
||||||
import * as bluebird from 'bluebird';
|
import * as bluebird from 'bluebird';
|
||||||
@ -27,7 +27,7 @@ import {GristServer} from 'app/server/lib/GristServer';
|
|||||||
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
||||||
import {makeForkIds, makeId} from 'app/server/lib/idUtils';
|
import {makeForkIds, makeId} from 'app/server/lib/idUtils';
|
||||||
import {checkAllegedGristDoc} from 'app/server/lib/serverUtils';
|
import {checkAllegedGristDoc} from 'app/server/lib/serverUtils';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {ActiveDoc} from './ActiveDoc';
|
import {ActiveDoc} from './ActiveDoc';
|
||||||
import {PluginManager} from './PluginManager';
|
import {PluginManager} from './PluginManager';
|
||||||
import {getFileUploadInfo, globalUploadSet, makeAccessId, UploadInfo} from './uploads';
|
import {getFileUploadInfo, globalUploadSet, makeAccessId, UploadInfo} from './uploads';
|
||||||
|
@ -13,13 +13,13 @@ import { DocPluginData } from 'app/server/lib/DocPluginData';
|
|||||||
import { makeExceptionalDocSession } from 'app/server/lib/DocSession';
|
import { makeExceptionalDocSession } from 'app/server/lib/DocSession';
|
||||||
import { FileParserElement } from 'app/server/lib/FileParserElement';
|
import { FileParserElement } from 'app/server/lib/FileParserElement';
|
||||||
import { GristServer } from 'app/server/lib/GristServer';
|
import { GristServer } from 'app/server/lib/GristServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { SafePythonComponent } from 'app/server/lib/SafePythonComponent';
|
import { SafePythonComponent } from 'app/server/lib/SafePythonComponent';
|
||||||
import { UnsafeNodeComponent } from 'app/server/lib/UnsafeNodeComponent';
|
import { UnsafeNodeComponent } from 'app/server/lib/UnsafeNodeComponent';
|
||||||
import { promisifyAll } from 'bluebird';
|
import { promisifyAll } from 'bluebird';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as tmp from 'tmp';
|
import tmp from 'tmp';
|
||||||
|
|
||||||
|
|
||||||
promisifyAll(tmp);
|
promisifyAll(tmp);
|
||||||
|
@ -3,7 +3,7 @@ import {SnapshotWindow} from 'app/common/Features';
|
|||||||
import {KeyedMutex} from 'app/common/KeyedMutex';
|
import {KeyedMutex} from 'app/common/KeyedMutex';
|
||||||
import {KeyedOps} from 'app/common/KeyedOps';
|
import {KeyedOps} from 'app/common/KeyedOps';
|
||||||
import {ExternalStorage} from 'app/server/lib/ExternalStorage';
|
import {ExternalStorage} from 'app/server/lib/ExternalStorage';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as moment from 'moment-timezone';
|
import * as moment from 'moment-timezone';
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@ import {GristObjCode} from "app/plugin/GristData";
|
|||||||
import {ActionHistoryImpl} from 'app/server/lib/ActionHistoryImpl';
|
import {ActionHistoryImpl} from 'app/server/lib/ActionHistoryImpl';
|
||||||
import {ExpandedQuery} from 'app/server/lib/ExpandedQuery';
|
import {ExpandedQuery} from 'app/server/lib/ExpandedQuery';
|
||||||
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import * as assert from 'assert';
|
import assert from 'assert';
|
||||||
import * as bluebird from 'bluebird';
|
import * as bluebird from 'bluebird';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import {RunResult} from 'sqlite3';
|
import {RunResult} from 'sqlite3';
|
||||||
import * as _ from 'underscore';
|
import * as _ from 'underscore';
|
||||||
import * as util from 'util';
|
import * as util from 'util';
|
||||||
import * as uuidv4 from "uuid/v4";
|
import uuidv4 from "uuid/v4";
|
||||||
import {OnDemandStorage} from './OnDemandActions';
|
import {OnDemandStorage} from './OnDemandActions';
|
||||||
import {ISQLiteDB, MigrationHooks, OpenMode, quoteIdent, ResultRow, SchemaInfo, SQLiteDB} from './SQLiteDB';
|
import {ISQLiteDB, MigrationHooks, OpenMode, quoteIdent, ResultRow, SchemaInfo, SQLiteDB} from './SQLiteDB';
|
||||||
import chunk = require('lodash/chunk');
|
import chunk = require('lodash/chunk');
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import * as bluebird from 'bluebird';
|
import * as bluebird from 'bluebird';
|
||||||
import * as chokidar from 'chokidar';
|
import * as chokidar from 'chokidar';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as moment from 'moment';
|
import moment from 'moment';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
import {DocEntry, DocEntryTag} from 'app/common/DocListAPI';
|
import {DocEntry, DocEntryTag} from 'app/common/DocListAPI';
|
||||||
@ -13,8 +13,8 @@ import * as docUtils from 'app/server/lib/docUtils';
|
|||||||
import {GristServer} from 'app/server/lib/GristServer';
|
import {GristServer} from 'app/server/lib/GristServer';
|
||||||
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
||||||
import {IShell} from 'app/server/lib/IShell';
|
import {IShell} from 'app/server/lib/IShell';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import * as uuidv4 from "uuid/v4";
|
import uuidv4 from "uuid/v4";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,10 +10,10 @@ import {Comm} from 'app/server/lib/Comm';
|
|||||||
import {DocSession, docSessionFromRequest} from 'app/server/lib/DocSession';
|
import {DocSession, docSessionFromRequest} from 'app/server/lib/DocSession';
|
||||||
import {filterDocumentInPlace} from 'app/server/lib/filterUtils';
|
import {filterDocumentInPlace} from 'app/server/lib/filterUtils';
|
||||||
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {getDocId, integerParam, optStringParam, stringParam} from 'app/server/lib/requestUtils';
|
import {getDocId, integerParam, optStringParam, stringParam} from 'app/server/lib/requestUtils';
|
||||||
import {OpenMode, quoteIdent, SQLiteDB} from 'app/server/lib/SQLiteDB';
|
import {OpenMode, quoteIdent, SQLiteDB} from 'app/server/lib/SQLiteDB';
|
||||||
import * as contentDisposition from 'content-disposition';
|
import contentDisposition from 'content-disposition';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as mimeTypes from 'mime-types';
|
import * as mimeTypes from 'mime-types';
|
||||||
|
@ -6,7 +6,7 @@ import {FormatOptions, formatUnknown, IsRightTypeFunc} from 'app/common/ValueFor
|
|||||||
import {GristType} from 'app/plugin/GristData';
|
import {GristType} from 'app/plugin/GristData';
|
||||||
import {decodeObject} from 'app/plugin/objtypes';
|
import {decodeObject} from 'app/plugin/objtypes';
|
||||||
import {Style} from 'exceljs';
|
import {Style} from 'exceljs';
|
||||||
import * as moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
|
|
||||||
interface WidgetOptions extends NumberFormatOptions {
|
interface WidgetOptions extends NumberFormatOptions {
|
||||||
textColor?: 'string';
|
textColor?: 'string';
|
||||||
|
@ -2,10 +2,10 @@ import {ApiError} from 'app/common/ApiError';
|
|||||||
import {createFormatter} from 'app/common/ValueFormatter';
|
import {createFormatter} from 'app/common/ValueFormatter';
|
||||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||||
import {ExportData, exportSection, exportTable, Filter} from 'app/server/lib/Export';
|
import {ExportData, exportSection, exportTable, Filter} from 'app/server/lib/Export';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import * as bluebird from 'bluebird';
|
import * as bluebird from 'bluebird';
|
||||||
import * as contentDisposition from 'content-disposition';
|
import contentDisposition from 'content-disposition';
|
||||||
import * as csv from 'csv';
|
import csv from 'csv';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
|
|
||||||
export interface DownloadCSVOptions {
|
export interface DownloadCSVOptions {
|
||||||
|
@ -3,8 +3,8 @@ import {createExcelFormatter} from 'app/server/lib/ExcelFormatter';
|
|||||||
import {ExportData, exportDoc} from 'app/server/lib/Export';
|
import {ExportData, exportDoc} from 'app/server/lib/Export';
|
||||||
import {Alignment, Border, Fill, Workbook} from 'exceljs';
|
import {Alignment, Border, Fill, Workbook} from 'exceljs';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import * as contentDisposition from 'content-disposition';
|
import contentDisposition from 'content-disposition';
|
||||||
|
|
||||||
export interface DownloadXLSXOptions {
|
export interface DownloadXLSXOptions {
|
||||||
filename: string;
|
filename: string;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {ObjMetadata, ObjSnapshot, ObjSnapshotWithMetadata} from 'app/common/DocSnapshot';
|
import {ObjMetadata, ObjSnapshot, ObjSnapshotWithMetadata} from 'app/common/DocSnapshot';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {createTmpDir} from 'app/server/lib/uploads';
|
import {createTmpDir} from 'app/server/lib/uploads';
|
||||||
import {delay} from 'bluebird';
|
import {delay} from 'bluebird';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
|
@ -39,7 +39,7 @@ import {HostedStorageManager} from 'app/server/lib/HostedStorageManager';
|
|||||||
import {IBilling} from 'app/server/lib/IBilling';
|
import {IBilling} from 'app/server/lib/IBilling';
|
||||||
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
import {IDocStorageManager} from 'app/server/lib/IDocStorageManager';
|
||||||
import {INotifier} from 'app/server/lib/INotifier';
|
import {INotifier} from 'app/server/lib/INotifier';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {getLoginSystem} from 'app/server/lib/logins';
|
import {getLoginSystem} from 'app/server/lib/logins';
|
||||||
import {IPermitStore} from 'app/server/lib/Permit';
|
import {IPermitStore} from 'app/server/lib/Permit';
|
||||||
import {getAppPathTo, getAppRoot, getUnpackedAppRoot} from 'app/server/lib/places';
|
import {getAppPathTo, getAppRoot, getUnpackedAppRoot} from 'app/server/lib/places';
|
||||||
@ -59,12 +59,12 @@ import {addUploadRoute} from 'app/server/lib/uploads';
|
|||||||
import {buildWidgetRepository, IWidgetRepository} from 'app/server/lib/WidgetRepository';
|
import {buildWidgetRepository, IWidgetRepository} from 'app/server/lib/WidgetRepository';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import * as bodyParser from 'body-parser';
|
import * as bodyParser from 'body-parser';
|
||||||
import * as express from 'express';
|
import express from 'express';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as http from 'http';
|
import * as http from 'http';
|
||||||
import * as https from 'https';
|
import * as https from 'https';
|
||||||
import mapValues = require('lodash/mapValues');
|
import mapValues = require('lodash/mapValues');
|
||||||
import * as morganLogger from 'morgan';
|
import morganLogger from 'morgan';
|
||||||
import {AddressInfo} from 'net';
|
import {AddressInfo} from 'net';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
@ -2,7 +2,7 @@ import {auth} from '@googleapis/oauth2';
|
|||||||
import {ApiError} from 'app/common/ApiError';
|
import {ApiError} from 'app/common/ApiError';
|
||||||
import {parseSubdomain} from 'app/common/gristUrls';
|
import {parseSubdomain} from 'app/common/gristUrls';
|
||||||
import {expressWrap} from 'app/server/lib/expressWrap';
|
import {expressWrap} from 'app/server/lib/expressWrap';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {getOriginUrl, optStringParam, stringParam} from 'app/server/lib/requestUtils';
|
import {getOriginUrl, optStringParam, stringParam} from 'app/server/lib/requestUtils';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
import {URL} from 'url';
|
import {URL} from 'url';
|
||||||
|
@ -2,7 +2,7 @@ import {drive} from '@googleapis/drive';
|
|||||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||||
import {RequestWithLogin} from 'app/server/lib/Authorizer';
|
import {RequestWithLogin} from 'app/server/lib/Authorizer';
|
||||||
import {makeXLSX} from 'app/server/lib/ExportXLSX';
|
import {makeXLSX} from 'app/server/lib/ExportXLSX';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {optStringParam} from 'app/server/lib/requestUtils';
|
import {optStringParam} from 'app/server/lib/requestUtils';
|
||||||
import {Request, Response} from 'express';
|
import {Request, Response} from 'express';
|
||||||
import {PassThrough} from 'stream';
|
import {PassThrough} from 'stream';
|
||||||
|
@ -3,7 +3,7 @@ import {Readable} from 'form-data';
|
|||||||
import {GaxiosError, GaxiosPromise} from 'gaxios';
|
import {GaxiosError, GaxiosPromise} from 'gaxios';
|
||||||
import {FetchError, Response as FetchResponse, Headers} from 'node-fetch';
|
import {FetchError, Response as FetchResponse, Headers} from 'node-fetch';
|
||||||
import {getGoogleAuth} from "app/server/lib/GoogleAuth";
|
import {getGoogleAuth} from "app/server/lib/GoogleAuth";
|
||||||
import * as contentDisposition from 'content-disposition';
|
import contentDisposition from 'content-disposition';
|
||||||
|
|
||||||
const
|
const
|
||||||
SPREADSHEETS_MIMETYPE = 'application/vnd.google-apps.spreadsheet',
|
SPREADSHEETS_MIMETYPE = 'application/vnd.google-apps.spreadsheet',
|
||||||
|
@ -31,7 +31,7 @@ import { compileAclFormula } from 'app/server/lib/ACLFormula';
|
|||||||
import { DocClients } from 'app/server/lib/DocClients';
|
import { DocClients } from 'app/server/lib/DocClients';
|
||||||
import { getDocSessionAccess, getDocSessionAltSessionId, getDocSessionUser,
|
import { getDocSessionAccess, getDocSessionAltSessionId, getDocSessionUser,
|
||||||
OptDocSession } from 'app/server/lib/DocSession';
|
OptDocSession } from 'app/server/lib/DocSession';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { IPermissionInfo, PermissionInfo, PermissionSetWithContext } from 'app/server/lib/PermissionInfo';
|
import { IPermissionInfo, PermissionInfo, PermissionSetWithContext } from 'app/server/lib/PermissionInfo';
|
||||||
import { TablePermissionSetWithContext } from 'app/server/lib/PermissionInfo';
|
import { TablePermissionSetWithContext } from 'app/server/lib/PermissionInfo';
|
||||||
import { integerParam } from 'app/server/lib/requestUtils';
|
import { integerParam } from 'app/server/lib/requestUtils';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {DocumentMetadata, HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
import {DocumentMetadata, HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HostedMetadataManager handles pushing document metadata changes to the Home database when
|
* HostedMetadataManager handles pushing document metadata changes to the Home database when
|
||||||
|
@ -19,7 +19,7 @@ import {LogMethods} from "app/server/lib/LogMethods";
|
|||||||
import {fromCallback} from 'app/server/lib/serverUtils';
|
import {fromCallback} from 'app/server/lib/serverUtils';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as uuidv4 from "uuid/v4";
|
import uuidv4 from "uuid/v4";
|
||||||
import { OpenMode, SQLiteDB } from './SQLiteDB';
|
import { OpenMode, SQLiteDB } from './SQLiteDB';
|
||||||
|
|
||||||
// Check for a valid document id.
|
// Check for a valid document id.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {ISandboxOptions} from 'app/server/lib/NSandbox';
|
import {ISandboxOptions} from 'app/server/lib/NSandbox';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
export type ILogMeta = log.ILogMeta;
|
export type ILogMeta = log.ILogMeta;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
import {arrayToString} from 'app/common/arrayToString';
|
import {arrayToString} from 'app/common/arrayToString';
|
||||||
import * as marshal from 'app/common/marshal';
|
import * as marshal from 'app/common/marshal';
|
||||||
import {ISandbox, ISandboxCreationOptions, ISandboxCreator} from 'app/server/lib/ISandbox';
|
import {ISandbox, ISandboxCreationOptions, ISandboxCreator} from 'app/server/lib/ISandbox';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {DirectProcessControl, ISandboxControl, NoProcessControl, ProcessInfo,
|
import {DirectProcessControl, ISandboxControl, NoProcessControl, ProcessInfo,
|
||||||
SubprocessControl} from 'app/server/lib/SandboxControl';
|
SubprocessControl} from 'app/server/lib/SandboxControl';
|
||||||
import * as sandboxUtil from 'app/server/lib/sandboxUtil';
|
import * as sandboxUtil from 'app/server/lib/sandboxUtil';
|
||||||
|
@ -5,7 +5,7 @@ import { ALL_PERMISSION_PROPS, emptyPermissionSet,
|
|||||||
import { ACLRuleCollection } from 'app/common/ACLRuleCollection';
|
import { ACLRuleCollection } from 'app/common/ACLRuleCollection';
|
||||||
import { AclMatchInput, RuleSet, UserInfo } from 'app/common/GranularAccessClause';
|
import { AclMatchInput, RuleSet, UserInfo } from 'app/common/GranularAccessClause';
|
||||||
import { getSetMapValue } from 'app/common/gutil';
|
import { getSetMapValue } from 'app/common/gutil';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { mapValues } from 'lodash';
|
import { mapValues } from 'lodash';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {FlexServer} from 'app/server/lib/FlexServer';
|
import {FlexServer} from 'app/server/lib/FlexServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {PluginManager} from 'app/server/lib/PluginManager';
|
import {PluginManager} from 'app/server/lib/PluginManager';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
import * as mimeTypes from 'mime-types';
|
import * as mimeTypes from 'mime-types';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {DirectoryScanEntry, LocalPlugin} from 'app/common/plugin';
|
import {DirectoryScanEntry, LocalPlugin} from 'app/common/plugin';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {readManifest} from 'app/server/lib/manifest';
|
import {readManifest} from 'app/server/lib/manifest';
|
||||||
import {getAppPathTo} from 'app/server/lib/places';
|
import {getAppPathTo} from 'app/server/lib/places';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
|
@ -11,7 +11,7 @@ import chunk = require('lodash/chunk');
|
|||||||
import fromPairs = require('lodash/fromPairs');
|
import fromPairs = require('lodash/fromPairs');
|
||||||
import zipObject = require('lodash/zipObject');
|
import zipObject = require('lodash/zipObject');
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
export class DocRequests {
|
export class DocRequests {
|
||||||
// Request responses are briefly cached in files only to handle multiple requests in a formula
|
// Request responses are briefly cached in files only to handle multiple requests in a formula
|
||||||
|
@ -70,11 +70,11 @@
|
|||||||
import {ErrorWithCode} from 'app/common/ErrorWithCode';
|
import {ErrorWithCode} from 'app/common/ErrorWithCode';
|
||||||
import {timeFormat} from 'app/common/timeFormat';
|
import {timeFormat} from 'app/common/timeFormat';
|
||||||
import * as docUtils from 'app/server/lib/docUtils';
|
import * as docUtils from 'app/server/lib/docUtils';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {fromCallback} from 'app/server/lib/serverUtils';
|
import {fromCallback} from 'app/server/lib/serverUtils';
|
||||||
|
|
||||||
import * as sqlite3 from '@gristlabs/sqlite3';
|
import * as sqlite3 from '@gristlabs/sqlite3';
|
||||||
import * as assert from 'assert';
|
import assert from 'assert';
|
||||||
import {each} from 'bluebird';
|
import {each} from 'bluebird';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import {RunResult} from 'sqlite3';
|
import {RunResult} from 'sqlite3';
|
||||||
|
@ -2,7 +2,7 @@ import {LocalPlugin} from 'app/common/plugin';
|
|||||||
import {BaseComponent, createRpcLogger} from 'app/common/PluginInstance';
|
import {BaseComponent, createRpcLogger} from 'app/common/PluginInstance';
|
||||||
import {GristServer} from 'app/server/lib/GristServer';
|
import {GristServer} from 'app/server/lib/GristServer';
|
||||||
import {ISandbox} from 'app/server/lib/ISandbox';
|
import {ISandbox} from 'app/server/lib/ISandbox';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {IMsgCustom, IMsgRpcCall} from 'grain-rpc';
|
import {IMsgCustom, IMsgRpcCall} from 'grain-rpc';
|
||||||
|
|
||||||
// TODO safePython component should be able to call other components function
|
// TODO safePython component should be able to call other components function
|
||||||
|
@ -59,7 +59,7 @@ import * as saml2 from 'saml2-js';
|
|||||||
|
|
||||||
import {expressWrap} from 'app/server/lib/expressWrap';
|
import {expressWrap} from 'app/server/lib/expressWrap';
|
||||||
import {GristLoginSystem, GristServer} from 'app/server/lib/GristServer';
|
import {GristLoginSystem, GristServer} from 'app/server/lib/GristServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {Permit} from 'app/server/lib/Permit';
|
import {Permit} from 'app/server/lib/Permit';
|
||||||
import {getOriginUrl} from 'app/server/lib/requestUtils';
|
import {getOriginUrl} from 'app/server/lib/requestUtils';
|
||||||
import {fromCallback} from 'app/server/lib/serverUtils';
|
import {fromCallback} from 'app/server/lib/serverUtils';
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { delay } from 'app/common/delay';
|
import { delay } from 'app/common/delay';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { Throttle } from 'app/server/lib/Throttle';
|
import { Throttle } from 'app/server/lib/Throttle';
|
||||||
|
|
||||||
import * as pidusage from '@gristlabs/pidusage';
|
import pidusage from '@gristlabs/pidusage';
|
||||||
import * as childProcess from 'child_process';
|
import * as childProcess from 'child_process';
|
||||||
import * as util from 'util';
|
import * as util from 'util';
|
||||||
|
|
||||||
|
@ -8,12 +8,12 @@ import {
|
|||||||
} from 'app/common/ActionBundle';
|
} from 'app/common/ActionBundle';
|
||||||
import {CALCULATING_USER_ACTIONS, DocAction, getNumRows, UserAction} from 'app/common/DocActions';
|
import {CALCULATING_USER_ACTIONS, DocAction, getNumRows, UserAction} from 'app/common/DocActions';
|
||||||
import {allToken} from 'app/common/sharing';
|
import {allToken} from 'app/common/sharing';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {LogMethods} from "app/server/lib/LogMethods";
|
import {LogMethods} from "app/server/lib/LogMethods";
|
||||||
import {shortDesc} from 'app/server/lib/shortDesc';
|
import {shortDesc} from 'app/server/lib/shortDesc';
|
||||||
import * as assert from 'assert';
|
import assert from 'assert';
|
||||||
import {Mutex} from 'async-mutex';
|
import {Mutex} from 'async-mutex';
|
||||||
import * as Deque from 'double-ended-queue';
|
import Deque from 'double-ended-queue';
|
||||||
import {ActionHistory, asActionGroup, getActionUndoInfo} from './ActionHistory';
|
import {ActionHistory, asActionGroup, getActionUndoInfo} from './ActionHistory';
|
||||||
import {ActiveDoc} from './ActiveDoc';
|
import {ActiveDoc} from './ActiveDoc';
|
||||||
import {makeExceptionalDocSession, OptDocSession} from './DocSession';
|
import {makeExceptionalDocSession, OptDocSession} from './DocSession';
|
||||||
|
@ -5,7 +5,7 @@ import {Deps as ActiveDocDeps} from 'app/server/lib/ActiveDoc';
|
|||||||
import {Deps as DiscourseConnectDeps} from 'app/server/lib/DiscourseConnect';
|
import {Deps as DiscourseConnectDeps} from 'app/server/lib/DiscourseConnect';
|
||||||
import {Deps as CommClientDeps} from 'app/server/lib/Client';
|
import {Deps as CommClientDeps} from 'app/server/lib/Client';
|
||||||
import {Comm} from 'app/server/lib/Comm';
|
import {Comm} from 'app/server/lib/Comm';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {IMessage, Rpc} from 'grain-rpc';
|
import {IMessage, Rpc} from 'grain-rpc';
|
||||||
import {Request} from 'express';
|
import {Request} from 'express';
|
||||||
import * as t from 'ts-interface-checker';
|
import * as t from 'ts-interface-checker';
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as pidusage from '@gristlabs/pidusage';
|
import pidusage from '@gristlabs/pidusage';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parameters related to throttling.
|
* Parameters related to throttling.
|
||||||
|
@ -9,7 +9,7 @@ import {CellDelta} from 'app/common/TabularDiff';
|
|||||||
import {summarizeAction} from 'app/server/lib/ActionSummary';
|
import {summarizeAction} from 'app/server/lib/ActionSummary';
|
||||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||||
import {makeExceptionalDocSession} from 'app/server/lib/DocSession';
|
import {makeExceptionalDocSession} from 'app/server/lib/DocSession';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {promisifyAll} from 'bluebird';
|
import {promisifyAll} from 'bluebird';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
|
@ -2,7 +2,7 @@ import { ActionRouter } from 'app/common/ActionRouter';
|
|||||||
import { LocalPlugin } from 'app/common/plugin';
|
import { LocalPlugin } from 'app/common/plugin';
|
||||||
import { BaseComponent, createRpcLogger, warnIfNotReady } from 'app/common/PluginInstance';
|
import { BaseComponent, createRpcLogger, warnIfNotReady } from 'app/common/PluginInstance';
|
||||||
import { GristAPI, RPC_GRISTAPI_INTERFACE } from 'app/plugin/GristAPI';
|
import { GristAPI, RPC_GRISTAPI_INTERFACE } from 'app/plugin/GristAPI';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { getAppPathTo } from 'app/server/lib/places';
|
import { getAppPathTo } from 'app/server/lib/places';
|
||||||
import { makeLinePrefixer } from 'app/server/lib/sandboxUtil';
|
import { makeLinePrefixer } from 'app/server/lib/sandboxUtil';
|
||||||
import { exitPromise, timeoutReached } from 'app/server/lib/serverUtils';
|
import { exitPromise, timeoutReached } from 'app/server/lib/serverUtils';
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import {ICustomWidget} from 'app/common/CustomWidget';
|
import {ICustomWidget} from 'app/common/CustomWidget';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import {ApiError} from 'app/common/ApiError';
|
import {ApiError} from 'app/common/ApiError';
|
||||||
import * as LRUCache from 'lru-cache';
|
import LRUCache from 'lru-cache';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Widget Repository returns list of available Custom Widgets.
|
* Widget Repository returns list of available Custom Widgets.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WorkCoordinator is a helper to do work serially. It takes a doWork() callback which may either
|
* WorkCoordinator is a helper to do work serially. It takes a doWork() callback which may either
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {RequestWithLogin} from 'app/server/lib/Authorizer';
|
import {RequestWithLogin} from 'app/server/lib/Authorizer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as session from '@gristlabs/express-session';
|
import session from '@gristlabs/express-session';
|
||||||
import {parseSubdomain} from 'app/common/gristUrls';
|
import {parseSubdomain} from 'app/common/gristUrls';
|
||||||
import {isNumber} from 'app/common/gutil';
|
import {isNumber} from 'app/common/gutil';
|
||||||
import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
export function reportTimeTaken<T>(locationLabel: string, callback: () => T): T {
|
export function reportTimeTaken<T>(locationLabel: string, callback: () => T): T {
|
||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
|
@ -5,7 +5,7 @@ import {DocScope, QueryResult, Scope} from 'app/gen-server/lib/HomeDBManager';
|
|||||||
import {getUserId, RequestWithLogin} from 'app/server/lib/Authorizer';
|
import {getUserId, RequestWithLogin} from 'app/server/lib/Authorizer';
|
||||||
import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
import {RequestWithOrg} from 'app/server/lib/extractOrg';
|
||||||
import {RequestWithGrist} from 'app/server/lib/GristServer';
|
import {RequestWithGrist} from 'app/server/lib/GristServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {Permit} from 'app/server/lib/Permit';
|
import {Permit} from 'app/server/lib/Permit';
|
||||||
import {Request, Response} from 'express';
|
import {Request, Response} from 'express';
|
||||||
import {URL} from 'url';
|
import {URL} from 'url';
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Various utilities and constants for communicating with the python sandbox.
|
* Various utilities and constants for communicating with the python sandbox.
|
||||||
*/
|
*/
|
||||||
import * as MemBuffer from 'app/common/MemBuffer';
|
import * as MemBuffer from 'app/common/MemBuffer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import * as bluebird from 'bluebird';
|
import bluebird from 'bluebird';
|
||||||
import { ChildProcess } from 'child_process';
|
import { ChildProcess } from 'child_process';
|
||||||
import * as net from 'net';
|
import * as net from 'net';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { ConnectionOptions } from 'typeorm';
|
import { ConnectionOptions } from 'typeorm';
|
||||||
import * as uuidv4 from 'uuid/v4';
|
import uuidv4 from 'uuid/v4';
|
||||||
|
|
||||||
import {EngineCode} from 'app/common/DocumentSettings';
|
import {EngineCode} from 'app/common/DocumentSettings';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import { OpenMode, SQLiteDB } from 'app/server/lib/SQLiteDB';
|
import { OpenMode, SQLiteDB } from 'app/server/lib/SQLiteDB';
|
||||||
import { getDocSessionAccessOrNull, getDocSessionUser, OptDocSession } from './DocSession';
|
import { getDocSessionAccessOrNull, getDocSessionUser, OptDocSession } from './DocSession';
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import {expressWrap} from 'app/server/lib/expressWrap';
|
|||||||
import {downloadFromGDrive, isDriveUrl} from 'app/server/lib/GoogleImport';
|
import {downloadFromGDrive, isDriveUrl} from 'app/server/lib/GoogleImport';
|
||||||
import {GristServer, RequestWithGrist} from 'app/server/lib/GristServer';
|
import {GristServer, RequestWithGrist} from 'app/server/lib/GristServer';
|
||||||
import {guessExt} from 'app/server/lib/guessExt';
|
import {guessExt} from 'app/server/lib/guessExt';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {optStringParam} from 'app/server/lib/requestUtils';
|
import {optStringParam} from 'app/server/lib/requestUtils';
|
||||||
import {isPathWithin} from 'app/server/lib/serverUtils';
|
import {isPathWithin} from 'app/server/lib/serverUtils';
|
||||||
import * as shutdown from 'app/server/lib/shutdown';
|
import * as shutdown from 'app/server/lib/shutdown';
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {FlexServer, FlexServerOptions} from 'app/server/lib/FlexServer';
|
import {FlexServer, FlexServerOptions} from 'app/server/lib/FlexServer';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
|
|
||||||
// Allowed server types. We'll start one or a combination based on the value of GRIST_SERVERS
|
// Allowed server types. We'll start one or a combination based on the value of GRIST_SERVERS
|
||||||
// environment variable.
|
// environment variable.
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"allowSyntheticDefaultImports": true,
|
|
||||||
"target": "es2017",
|
"target": "es2017",
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"isolatedModules": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"strictPropertyInitialization": false,
|
"strictPropertyInitialization": false,
|
||||||
"useUnknownInCatchVariables": false,
|
"useUnknownInCatchVariables": false,
|
||||||
|
4
test/chai-as-promised.js
Normal file
4
test/chai-as-promised.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
const chai = require('chai');
|
||||||
|
const chaiAsPromised = require('chai-as-promised');
|
||||||
|
|
||||||
|
chai.use(chaiAsPromised);
|
@ -1,3 +1,4 @@
|
|||||||
--require source-map-support/register
|
--require source-map-support/register
|
||||||
test/report-why-tests-hang
|
test/report-why-tests-hang
|
||||||
test/init-mocha-webdriver
|
test/init-mocha-webdriver
|
||||||
|
test/chai-as-promised
|
||||||
|
@ -3,7 +3,7 @@ import {UserAPI} from 'app/common/UserAPI';
|
|||||||
import {assert, driver, Key} from 'mocha-webdriver';
|
import {assert, driver, Key} from 'mocha-webdriver';
|
||||||
import * as gu from 'test/nbrowser/gristUtils';
|
import * as gu from 'test/nbrowser/gristUtils';
|
||||||
import {server, setupTestSuite} from 'test/nbrowser/testUtils';
|
import {server, setupTestSuite} from 'test/nbrowser/testUtils';
|
||||||
import * as uuidv4 from "uuid/v4";
|
import uuidv4 from "uuid/v4";
|
||||||
|
|
||||||
describe("Fork", function() {
|
describe("Fork", function() {
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* Contains some non-webdriver functionality needed by tests.
|
* Contains some non-webdriver functionality needed by tests.
|
||||||
*/
|
*/
|
||||||
import * as FormData from 'form-data';
|
import FormData from 'form-data';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
import defaults = require('lodash/defaults');
|
import defaults = require('lodash/defaults');
|
||||||
import {WebElement} from 'mocha-webdriver';
|
import {WebElement} from 'mocha-webdriver';
|
||||||
@ -13,7 +13,7 @@ import {WebDriver} from 'selenium-webdriver';
|
|||||||
import {UserProfile} from 'app/common/LoginSessionAPI';
|
import {UserProfile} from 'app/common/LoginSessionAPI';
|
||||||
import {DocWorkerAPI, UserAPI, UserAPIImpl} from 'app/common/UserAPI';
|
import {DocWorkerAPI, UserAPI, UserAPIImpl} from 'app/common/UserAPI';
|
||||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {TestingHooksClient} from 'app/server/lib/TestingHooks';
|
import {TestingHooksClient} from 'app/server/lib/TestingHooks';
|
||||||
|
|
||||||
export interface Server {
|
export interface Server {
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
import {encodeUrl, IGristUrlState, parseSubdomain} from 'app/common/gristUrls';
|
import {encodeUrl, IGristUrlState, parseSubdomain} from 'app/common/gristUrls';
|
||||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {getAppRoot} from 'app/server/lib/places';
|
import {getAppRoot} from 'app/server/lib/places';
|
||||||
import {makeGristConfig} from 'app/server/lib/sendAppPage';
|
import {makeGristConfig} from 'app/server/lib/sendAppPage';
|
||||||
import {exitPromise} from 'app/server/lib/serverUtils';
|
import {exitPromise} from 'app/server/lib/serverUtils';
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* Run `bin/mocha 'test/nbrowser/*.ts' -b --no-exit` to open a command-line prompt on
|
* Run `bin/mocha 'test/nbrowser/*.ts' -b --no-exit` to open a command-line prompt on
|
||||||
* first-failure for debugging and quick reruns.
|
* first-failure for debugging and quick reruns.
|
||||||
*/
|
*/
|
||||||
import * as log from 'app/server/lib/log';
|
import log from 'app/server/lib/log';
|
||||||
import {addToRepl, assert, driver, enableDebugCapture, Key, setOptionsModifyFunc, useServer} from 'mocha-webdriver';
|
import {addToRepl, assert, driver, enableDebugCapture, Key, setOptionsModifyFunc, useServer} from 'mocha-webdriver';
|
||||||
import * as gu from 'test/nbrowser/gristUtils';
|
import * as gu from 'test/nbrowser/gristUtils';
|
||||||
import {server} from 'test/nbrowser/testServer';
|
import {server} from 'test/nbrowser/testServer';
|
||||||
|
@ -4,7 +4,7 @@ import {assert} from 'chai';
|
|||||||
import * as http from 'http';
|
import * as http from 'http';
|
||||||
import {AddressInfo, Server, Socket} from 'net';
|
import {AddressInfo, Server, Socket} from 'net';
|
||||||
import * as sinon from 'sinon';
|
import * as sinon from 'sinon';
|
||||||
import * as WebSocket from 'ws';
|
import WebSocket from 'ws';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as tmp from 'tmp';
|
import * as tmp from 'tmp';
|
||||||
|
|
||||||
@ -80,6 +80,9 @@ describe('Comm', function() {
|
|||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
// Silence console messages from client-side Comm.ts.
|
// Silence console messages from client-side Comm.ts.
|
||||||
if (!process.env.VERBOSE) {
|
if (!process.env.VERBOSE) {
|
||||||
|
// TODO: This no longer works, now that 'log' is a more proper "module" object rather than
|
||||||
|
// an arbitrary JS object. Also used in a couple other tests where logs are no longer
|
||||||
|
// silenced.
|
||||||
sandbox.stub(log, 'debug');
|
sandbox.stub(log, 'debug');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {getAppRoot} from 'app/server/lib/places';
|
import {getAppRoot} from 'app/server/lib/places';
|
||||||
import {fromCallback, listenPromise} from 'app/server/lib/serverUtils';
|
import {fromCallback, listenPromise} from 'app/server/lib/serverUtils';
|
||||||
import * as express from 'express';
|
import express from 'express';
|
||||||
import * as http from 'http';
|
import * as http from 'http';
|
||||||
import {AddressInfo, Socket} from 'net';
|
import {AddressInfo, Socket} from 'net';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
@ -2,7 +2,7 @@ import { DocAction } from 'app/common/DocActions';
|
|||||||
import { FlexServer } from 'app/server/lib/FlexServer';
|
import { FlexServer } from 'app/server/lib/FlexServer';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import pick = require('lodash/pick');
|
import pick = require('lodash/pick');
|
||||||
import * as WebSocket from 'ws';
|
import WebSocket from 'ws';
|
||||||
|
|
||||||
interface GristRequest {
|
interface GristRequest {
|
||||||
reqId: number;
|
reqId: number;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user