mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
51ff72c15e
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
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import log from 'app/server/lib/log';
|
|
|
|
export type ILogMeta = log.ILogMeta;
|
|
|
|
/**
|
|
* Helper for logging with metadata. The created object has methods similar to those of the `log`
|
|
* module, but with an extra required first argument. The produced messages get metadata produced
|
|
* by the constructor callback applied to that argument, and the specified prefix.
|
|
*
|
|
* Usage:
|
|
* _log = new LogMethods(prefix, (info) => ({...logMetadata...}))
|
|
* _log.info(info, "hello %", name);
|
|
* _log.warn(info, "hello %", name);
|
|
* etc.
|
|
*/
|
|
export class LogMethods<Info> {
|
|
constructor(
|
|
private _prefix: string,
|
|
private _getMeta: (info: Info) => log.ILogMeta,
|
|
) {}
|
|
|
|
public debug(info: Info, msg: string, ...args: any[]) { this.log('debug', info, msg, ...args); }
|
|
public info(info: Info, msg: string, ...args: any[]) { this.log('info', info, msg, ...args); }
|
|
public warn(info: Info, msg: string, ...args: any[]) { this.log('warn', info, msg, ...args); }
|
|
public error(info: Info, msg: string, ...args: any[]) { this.log('error', info, msg, ...args); }
|
|
|
|
public log(level: string, info: Info, msg: string, ...args: any[]): void {
|
|
log.origLog(level, this._prefix + msg, ...args, this._getMeta(info));
|
|
}
|
|
|
|
// Log with the given level, and include the provided log metadata in addition to that produced
|
|
// by _getMeta(info).
|
|
public rawLog(level: string, info: Info, msg: string, meta: ILogMeta): void {
|
|
log.origLog(level, this._prefix + msg, {...this._getMeta(info), ...meta});
|
|
}
|
|
}
|