rollup-plugin-typescript2/src/rollupcontext.ts
Anton Gilgur b08f272efb
refactor: sort all top-level imports (#337)
- basically, general format is:
  ```ts
  import x from "external-dep"

  import y from "./internal-dep"
  ```
  - so external deps, new line, then internal/local deps
  - with some further sorting within there, like trying to keep Node
    built-ins (e.g. `path`) at the top half of externals, then core deps
    like `typescript`, then any other external deps
    - and similar for internal deps -- core internals at the top half of
      internals, then any other internal deps
    - just to keep things consistent between files -- makes the top
      easier to read through when it's similar between files
    - also makes it easier for contributors to understand where to put
      imports, as there's a sorting already there

- this is how I generally sort my imports and how I wrote most of the
  unit test suite's imports as well

- there is automation for this that we should probably add once TSLint
  is replaced here; some previous art:
  - https://github.com/trivago/prettier-plugin-sort-imports
  - https://github.com/lydell/eslint-plugin-simple-import-sort/
  - Older:
    - https://github.com/renke/import-sort/tree/master/packages/import-sort-style-module
    - https://github.com/mcdougal/js-isort
    - inspired by Python's `isort` ofc
2022-06-01 14:40:54 -06:00

66 lines
1.5 KiB
TypeScript

import * as _ from "lodash";
import { PluginContext } from "rollup";
import { IContext, VerbosityLevel } from "./context";
export class RollupContext implements IContext
{
private hasContext: boolean = true;
constructor(private verbosity: VerbosityLevel, private bail: boolean, private context: PluginContext, private prefix: string = "")
{
this.hasContext = _.isFunction(this.context.warn) && _.isFunction(this.context.error);
}
public warn(message: string | (() => string)): void
{
if (this.verbosity < VerbosityLevel.Warning)
return;
const text = _.isFunction(message) ? message() : message;
if (this.hasContext)
this.context.warn(`${text}`);
else
console.log(`${this.prefix}${text}`);
}
public error(message: string | (() => string)): void
{
if (this.verbosity < VerbosityLevel.Error)
return;
const text = _.isFunction(message) ? message() : message;
if (this.hasContext)
{
if (this.bail)
this.context.error(`${text}`);
else
this.context.warn(`${text}`);
}
else
console.log(`${this.prefix}${text}`);
}
public info(message: string | (() => string)): void
{
if (this.verbosity < VerbosityLevel.Info)
return;
const text = _.isFunction(message) ? message() : message;
console.log(`${this.prefix}${text}`);
}
public debug(message: string | (() => string)): void
{
if (this.verbosity < VerbosityLevel.Debug)
return;
const text = _.isFunction(message) ? message() : message;
console.log(`${this.prefix}${text}`);
}
}