From 667358b23e1ac184fdcb2d64f37a5074e6a0075a Mon Sep 17 00:00:00 2001 From: Pagan Gazzard Date: Mon, 4 May 2020 15:57:23 +0100 Subject: [PATCH] Import just strip-tags from common-tags to reduce startup time This saves ~100ms for me on startup with no fast-boot cache and ~50ms with a fast-boot cache Change-type: patch --- automation/build-bin.ts | 2 +- automation/check-doc.js | 2 +- lib/actions-oclif/api-key/generate.ts | 3 +-- lib/actions-oclif/app/create.ts | 3 +-- lib/actions-oclif/app/index.ts | 3 +-- lib/actions-oclif/app/restart.ts | 3 +-- lib/actions-oclif/app/rm.ts | 3 +-- lib/actions-oclif/apps.ts | 3 +-- lib/actions-oclif/device/identify.ts | 3 +-- lib/actions-oclif/device/index.ts | 3 +-- lib/actions-oclif/device/move.ts | 3 +-- lib/actions-oclif/device/os-update.ts | 3 +-- lib/actions-oclif/device/public-url.ts | 3 +-- lib/actions-oclif/device/reboot.ts | 3 +-- lib/actions-oclif/device/register.ts | 3 +-- lib/actions-oclif/device/rename.ts | 3 +-- lib/actions-oclif/device/rm.ts | 3 +-- lib/actions-oclif/device/shutdown.ts | 3 +-- lib/actions-oclif/devices/index.ts | 3 +-- lib/actions-oclif/devices/supported.ts | 3 +-- lib/actions-oclif/env/add.ts | 3 +-- lib/actions-oclif/env/rename.ts | 3 +-- lib/actions-oclif/env/rm.ts | 3 +-- lib/actions-oclif/envs.ts | 3 +-- lib/actions-oclif/internal/osinit.ts | 2 +- lib/actions-oclif/internal/scandevices.ts | 2 +- lib/actions-oclif/join.ts | 3 +-- lib/actions-oclif/key/add.ts | 3 +-- lib/actions-oclif/key/index.ts | 3 +-- lib/actions-oclif/key/rm.ts | 3 +-- lib/actions-oclif/keys.ts | 3 +-- lib/actions-oclif/leave.ts | 3 +-- lib/actions-oclif/login.ts | 3 +-- lib/actions-oclif/logout.ts | 3 +-- lib/actions-oclif/note.ts | 3 +-- lib/actions-oclif/os/configure.ts | 3 +-- lib/actions-oclif/scan.ts | 3 +-- lib/actions-oclif/settings.ts | 3 +-- lib/actions-oclif/tag/rm.ts | 3 +-- lib/actions-oclif/tag/set.ts | 3 +-- lib/actions-oclif/tags.ts | 3 +-- lib/actions-oclif/version.ts | 2 +- lib/actions-oclif/whoami.ts | 3 +-- lib/actions/local/flash.ts | 3 +-- lib/actions/logs.ts | 3 +-- lib/actions/push.ts | 3 +-- lib/actions/ssh.ts | 3 +-- lib/actions/tunnel.ts | 3 +-- lib/actions/util.ts | 3 +-- lib/app-common.ts | 7 +++---- lib/errors.ts | 5 ++--- lib/preparser.ts | 2 +- lib/utils/cloud.ts | 2 +- lib/utils/compose.js | 3 +-- lib/utils/compose_ts.ts | 2 +- lib/utils/device/ssh.ts | 2 +- lib/utils/env-common.ts | 2 +- lib/utils/lazy.ts | 5 +++++ lib/utils/patterns.ts | 3 +-- lib/utils/promote.ts | 3 +-- lib/utils/qemu.ts | 3 +-- lib/utils/remote-build.ts | 4 +--- lib/utils/sudo.ts | 2 +- tests/commands/build.spec.ts | 2 +- tests/commands/env/envs.spec.ts | 2 +- tests/docker-build.ts | 2 +- tslint.json | 2 +- 67 files changed, 74 insertions(+), 121 deletions(-) diff --git a/automation/build-bin.ts b/automation/build-bin.ts index 2bb36cc1..8e0b39c1 100644 --- a/automation/build-bin.ts +++ b/automation/build-bin.ts @@ -21,7 +21,6 @@ import { run as oclifRun } from '@oclif/dev-cli'; import * as archiver from 'archiver'; import * as Bluebird from 'bluebird'; import { execFile } from 'child_process'; -import { stripIndent } from 'common-tags'; import * as filehound from 'filehound'; import * as fs from 'fs-extra'; import * as _ from 'lodash'; @@ -31,6 +30,7 @@ import * as rimraf from 'rimraf'; import * as semver from 'semver'; import * as util from 'util'; +import { stripIndent } from '../lib/utils/lazy'; import { getSubprocessStdout, loadPackageJson, diff --git a/automation/check-doc.js b/automation/check-doc.js index 3dfda9e2..75ad7180 100644 --- a/automation/check-doc.js +++ b/automation/check-doc.js @@ -15,7 +15,7 @@ * limitations under the License. */ -const { stripIndent } = require('common-tags'); +const stripIndent = require('common-tags/lib/stripIndent'); const _ = require('lodash'); const { promises: fs } = require('fs'); const path = require('path'); diff --git a/lib/actions-oclif/api-key/generate.ts b/lib/actions-oclif/api-key/generate.ts index 02f9df04..f5b353c0 100644 --- a/lib/actions-oclif/api-key/generate.ts +++ b/lib/actions-oclif/api-key/generate.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; interface FlagsDef { help: void; diff --git a/lib/actions-oclif/app/create.ts b/lib/actions-oclif/app/create.ts index 3ce1f93c..e3ab5410 100644 --- a/lib/actions-oclif/app/create.ts +++ b/lib/actions-oclif/app/create.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; interface FlagsDef { type?: string; // application device type diff --git a/lib/actions-oclif/app/index.ts b/lib/actions-oclif/app/index.ts index 9937778e..37764967 100644 --- a/lib/actions-oclif/app/index.ts +++ b/lib/actions-oclif/app/index.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/app/restart.ts b/lib/actions-oclif/app/restart.ts index f461738a..58a4fdbf 100644 --- a/lib/actions-oclif/app/restart.ts +++ b/lib/actions-oclif/app/restart.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/app/rm.ts b/lib/actions-oclif/app/rm.ts index 9c736c6b..9304fc47 100644 --- a/lib/actions-oclif/app/rm.ts +++ b/lib/actions-oclif/app/rm.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/apps.ts b/lib/actions-oclif/apps.ts index 7ccf0365..11c3243d 100644 --- a/lib/actions-oclif/apps.ts +++ b/lib/actions-oclif/apps.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { Application } from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../utils/lazy'; import { isV12 } from '../utils/version'; interface ExtendedApplication extends Application { diff --git a/lib/actions-oclif/device/identify.ts b/lib/actions-oclif/device/identify.ts index 1afc6d92..3be09167 100644 --- a/lib/actions-oclif/device/identify.ts +++ b/lib/actions-oclif/device/identify.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; import { ExpectedError } from '../../errors'; diff --git a/lib/actions-oclif/device/index.ts b/lib/actions-oclif/device/index.ts index ca5673f7..d46b1a70 100644 --- a/lib/actions-oclif/device/index.ts +++ b/lib/actions-oclif/device/index.ts @@ -17,11 +17,10 @@ import { flags } from '@oclif/command'; import { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; import { expandForAppName } from '../../utils/helpers'; -import { getBalenaSdk, getVisuals } from '../../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; import type { Application, Device } from 'balena-sdk'; diff --git a/lib/actions-oclif/device/move.ts b/lib/actions-oclif/device/move.ts index 4feab174..2573b53f 100644 --- a/lib/actions-oclif/device/move.ts +++ b/lib/actions-oclif/device/move.ts @@ -18,12 +18,11 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; import type { Application, Device } from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; import { expandForAppName } from '../../utils/helpers'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface ExtendedDevice extends Device { diff --git a/lib/actions-oclif/device/os-update.ts b/lib/actions-oclif/device/os-update.ts index 912546b8..6c473a99 100644 --- a/lib/actions-oclif/device/os-update.ts +++ b/lib/actions-oclif/device/os-update.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; import type { Device } from 'balena-sdk'; import { ExpectedError } from '../../errors'; diff --git a/lib/actions-oclif/device/public-url.ts b/lib/actions-oclif/device/public-url.ts index f465ef0e..761b3b56 100644 --- a/lib/actions-oclif/device/public-url.ts +++ b/lib/actions-oclif/device/public-url.ts @@ -17,11 +17,10 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/device/reboot.ts b/lib/actions-oclif/device/reboot.ts index c09bcffb..777e93f9 100644 --- a/lib/actions-oclif/device/reboot.ts +++ b/lib/actions-oclif/device/reboot.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/device/register.ts b/lib/actions-oclif/device/register.ts index 0565a925..1f84e70d 100644 --- a/lib/actions-oclif/device/register.ts +++ b/lib/actions-oclif/device/register.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/device/rename.ts b/lib/actions-oclif/device/rename.ts index a529b466..ce0c5db3 100644 --- a/lib/actions-oclif/device/rename.ts +++ b/lib/actions-oclif/device/rename.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/device/rm.ts b/lib/actions-oclif/device/rm.ts index b652abaa..2d8518dd 100644 --- a/lib/actions-oclif/device/rm.ts +++ b/lib/actions-oclif/device/rm.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; interface FlagsDef { diff --git a/lib/actions-oclif/device/shutdown.ts b/lib/actions-oclif/device/shutdown.ts index fcda9548..2a7c76ff 100644 --- a/lib/actions-oclif/device/shutdown.ts +++ b/lib/actions-oclif/device/shutdown.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { IArg } from '@oclif/parser/lib/args'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; import { ExpectedError } from '../../errors'; diff --git a/lib/actions-oclif/devices/index.ts b/lib/actions-oclif/devices/index.ts index 828c0b61..7b7e2c79 100644 --- a/lib/actions-oclif/devices/index.ts +++ b/lib/actions-oclif/devices/index.ts @@ -16,12 +16,11 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; import { expandForAppName } from '../../utils/helpers'; -import { getBalenaSdk, getVisuals } from '../../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../../utils/lazy'; import { tryAsInteger } from '../../utils/validation'; import type { Device, Application } from 'balena-sdk'; diff --git a/lib/actions-oclif/devices/supported.ts b/lib/actions-oclif/devices/supported.ts index b5f28ad5..708c70d4 100644 --- a/lib/actions-oclif/devices/supported.ts +++ b/lib/actions-oclif/devices/supported.ts @@ -16,12 +16,11 @@ */ import { flags } from '@oclif/command'; import type * as SDK from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../../utils/lazy'; import { CommandHelp } from '../../utils/oclif-utils'; import { isV12 } from '../../utils/version'; diff --git a/lib/actions-oclif/env/add.ts b/lib/actions-oclif/env/add.ts index da5a3a81..032202bc 100644 --- a/lib/actions-oclif/env/add.ts +++ b/lib/actions-oclif/env/add.ts @@ -17,13 +17,12 @@ import { flags } from '@oclif/command'; import type * as BalenaSdk from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { CommandHelp } from '../../utils/oclif-utils'; interface FlagsDef { diff --git a/lib/actions-oclif/env/rename.ts b/lib/actions-oclif/env/rename.ts index f0c9869b..8ab74d18 100644 --- a/lib/actions-oclif/env/rename.ts +++ b/lib/actions-oclif/env/rename.ts @@ -15,12 +15,11 @@ * limitations under the License. */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; import * as ec from '../../utils/env-common'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { CommandHelp } from '../../utils/oclif-utils'; import { parseAsInteger } from '../../utils/validation'; diff --git a/lib/actions-oclif/env/rm.ts b/lib/actions-oclif/env/rm.ts index 62d9f675..59d44024 100644 --- a/lib/actions-oclif/env/rm.ts +++ b/lib/actions-oclif/env/rm.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as ec from '../../utils/env-common'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { CommandHelp } from '../../utils/oclif-utils'; import { parseAsInteger } from '../../utils/validation'; diff --git a/lib/actions-oclif/envs.ts b/lib/actions-oclif/envs.ts index 1f022baf..7cac7dc0 100644 --- a/lib/actions-oclif/envs.ts +++ b/lib/actions-oclif/envs.ts @@ -16,13 +16,12 @@ */ import { flags } from '@oclif/command'; import type * as SDK from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import Command from '../command'; import { ExpectedError } from '../errors'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../utils/lazy'; import { CommandHelp } from '../utils/oclif-utils'; import { isV12 } from '../utils/version'; diff --git a/lib/actions-oclif/internal/osinit.ts b/lib/actions-oclif/internal/osinit.ts index af657943..cb08d412 100644 --- a/lib/actions-oclif/internal/osinit.ts +++ b/lib/actions-oclif/internal/osinit.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { stripIndent } from 'common-tags'; import Command from '../../command'; +import { stripIndent } from '../../utils/lazy'; import { CommandHelp } from '../../utils/oclif-utils'; // 'Internal' commands are called during the execution of other commands. diff --git a/lib/actions-oclif/internal/scandevices.ts b/lib/actions-oclif/internal/scandevices.ts index 00578408..0d39575a 100644 --- a/lib/actions-oclif/internal/scandevices.ts +++ b/lib/actions-oclif/internal/scandevices.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { stripIndent } from 'common-tags'; import Command from '../../command'; +import { stripIndent } from '../../utils/lazy'; // 'Internal' commands are called during the execution of other commands. // `scandevices` is called during by `join`,`leave'. diff --git a/lib/actions-oclif/join.ts b/lib/actions-oclif/join.ts index ef8785cc..6599720f 100644 --- a/lib/actions-oclif/join.ts +++ b/lib/actions-oclif/join.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; interface FlagsDef { application?: string; diff --git a/lib/actions-oclif/key/add.ts b/lib/actions-oclif/key/add.ts index e31324f1..4dfbe74a 100644 --- a/lib/actions-oclif/key/add.ts +++ b/lib/actions-oclif/key/add.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; interface FlagsDef { help: void; diff --git a/lib/actions-oclif/key/index.ts b/lib/actions-oclif/key/index.ts index 1fb3ebc3..dcc03e77 100644 --- a/lib/actions-oclif/key/index.ts +++ b/lib/actions-oclif/key/index.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../../utils/lazy'; import { parseAsInteger } from '../../utils/validation'; type IArg = import('@oclif/parser').args.IArg; diff --git a/lib/actions-oclif/key/rm.ts b/lib/actions-oclif/key/rm.ts index b2f13514..320d9edf 100644 --- a/lib/actions-oclif/key/rm.ts +++ b/lib/actions-oclif/key/rm.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { parseAsInteger } from '../../utils/validation'; type IArg = import('@oclif/parser').args.IArg; diff --git a/lib/actions-oclif/keys.ts b/lib/actions-oclif/keys.ts index e7f3d7f4..0fd0fa5b 100644 --- a/lib/actions-oclif/keys.ts +++ b/lib/actions-oclif/keys.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../utils/lazy'; interface FlagsDef { help: void; diff --git a/lib/actions-oclif/leave.ts b/lib/actions-oclif/leave.ts index 80f3d955..a7653d4b 100644 --- a/lib/actions-oclif/leave.ts +++ b/lib/actions-oclif/leave.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; interface FlagsDef { help?: void; diff --git a/lib/actions-oclif/login.ts b/lib/actions-oclif/login.ts index 77082d99..0de1c465 100644 --- a/lib/actions-oclif/login.ts +++ b/lib/actions-oclif/login.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; import { ExpectedError } from '../errors'; interface FlagsDef { diff --git a/lib/actions-oclif/logout.ts b/lib/actions-oclif/logout.ts index 32b2ed27..499ae816 100644 --- a/lib/actions-oclif/logout.ts +++ b/lib/actions-oclif/logout.ts @@ -15,9 +15,8 @@ * limitations under the License. */ -import { stripIndent } from 'common-tags'; import Command from '../command'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; export default class LogoutCmd extends Command { public static description = stripIndent` diff --git a/lib/actions-oclif/note.ts b/lib/actions-oclif/note.ts index eee91ce4..263dd95d 100644 --- a/lib/actions-oclif/note.ts +++ b/lib/actions-oclif/note.ts @@ -16,12 +16,11 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import Command from '../command'; import { ExpectedError } from '../errors'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; interface FlagsDef { device?: string; // device UUID diff --git a/lib/actions-oclif/os/configure.ts b/lib/actions-oclif/os/configure.ts index 8acd9c76..ecb20abd 100644 --- a/lib/actions-oclif/os/configure.ts +++ b/lib/actions-oclif/os/configure.ts @@ -18,14 +18,13 @@ import { flags } from '@oclif/command'; import type * as BalenaSdk from 'balena-sdk'; import Bluebird = require('bluebird'); -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import * as path from 'path'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { CommandHelp } from '../../utils/oclif-utils'; const BOOT_PARTITION = 1; diff --git a/lib/actions-oclif/scan.ts b/lib/actions-oclif/scan.ts index f9194c43..8024abe4 100644 --- a/lib/actions-oclif/scan.ts +++ b/lib/actions-oclif/scan.ts @@ -17,10 +17,9 @@ import { flags } from '@oclif/command'; import type { LocalBalenaOsDevice } from 'balena-sync'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getVisuals } from '../utils/lazy'; +import { getVisuals, stripIndent } from '../utils/lazy'; interface FlagsDef { verbose: boolean; diff --git a/lib/actions-oclif/settings.ts b/lib/actions-oclif/settings.ts index dd1207ae..72414430 100644 --- a/lib/actions-oclif/settings.ts +++ b/lib/actions-oclif/settings.ts @@ -16,10 +16,9 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; interface FlagsDef { help: void; diff --git a/lib/actions-oclif/tag/rm.ts b/lib/actions-oclif/tag/rm.ts index 8690b6c4..acc7348e 100644 --- a/lib/actions-oclif/tag/rm.ts +++ b/lib/actions-oclif/tag/rm.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { disambiguateReleaseParam } from '../../utils/normalization'; import { tryAsInteger } from '../../utils/validation'; diff --git a/lib/actions-oclif/tag/set.ts b/lib/actions-oclif/tag/set.ts index e73c134c..1492aa62 100644 --- a/lib/actions-oclif/tag/set.ts +++ b/lib/actions-oclif/tag/set.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../../command'; import { ExpectedError } from '../../errors'; import * as cf from '../../utils/common-flags'; -import { getBalenaSdk } from '../../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../../utils/lazy'; import { disambiguateReleaseParam } from '../../utils/normalization'; import { tryAsInteger } from '../../utils/validation'; diff --git a/lib/actions-oclif/tags.ts b/lib/actions-oclif/tags.ts index d71b2fe9..e0e85021 100644 --- a/lib/actions-oclif/tags.ts +++ b/lib/actions-oclif/tags.ts @@ -16,11 +16,10 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; import { ExpectedError } from '../errors'; import * as cf from '../utils/common-flags'; -import { getBalenaSdk, getVisuals } from '../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../utils/lazy'; import { disambiguateReleaseParam } from '../utils/normalization'; import { tryAsInteger } from '../utils/validation'; import { isV12 } from '../utils/version'; diff --git a/lib/actions-oclif/version.ts b/lib/actions-oclif/version.ts index 3e5b9b1f..173ecb7b 100644 --- a/lib/actions-oclif/version.ts +++ b/lib/actions-oclif/version.ts @@ -16,8 +16,8 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; import Command from '../command'; +import { stripIndent } from '../utils/lazy'; interface FlagsDef { all?: boolean; diff --git a/lib/actions-oclif/whoami.ts b/lib/actions-oclif/whoami.ts index 08099d90..9e3ef9c4 100644 --- a/lib/actions-oclif/whoami.ts +++ b/lib/actions-oclif/whoami.ts @@ -15,9 +15,8 @@ * limitations under the License. */ -import { stripIndent } from 'common-tags'; import Command from '../command'; -import { getBalenaSdk, getVisuals } from '../utils/lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from '../utils/lazy'; export default class WhoamiCmd extends Command { public static description = stripIndent` diff --git a/lib/actions/local/flash.ts b/lib/actions/local/flash.ts index c9f5f5d7..8ceb19d9 100644 --- a/lib/actions/local/flash.ts +++ b/lib/actions/local/flash.ts @@ -15,9 +15,8 @@ limitations under the License. */ import type { CommandDefinition } from 'capitano'; -import { stripIndent } from 'common-tags'; import type * as SDK from 'etcher-sdk'; -import { getChalk, getVisuals } from '../../utils/lazy'; +import { getChalk, getVisuals, stripIndent } from '../../utils/lazy'; async function getDrive(options: { drive?: string; diff --git a/lib/actions/logs.ts b/lib/actions/logs.ts index a6465b9f..3dcdaa0c 100644 --- a/lib/actions/logs.ts +++ b/lib/actions/logs.ts @@ -16,9 +16,8 @@ limitations under the License. import type { LogMessage } from 'balena-sdk'; import type { CommandDefinition } from 'capitano'; -import { stripIndent } from 'common-tags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; import { normalizeUuidProp } from '../utils/normalization'; import { validateDotLocalUrl } from '../utils/validation'; diff --git a/lib/actions/push.ts b/lib/actions/push.ts index 39465485..31b2b351 100644 --- a/lib/actions/push.ts +++ b/lib/actions/push.ts @@ -16,10 +16,9 @@ limitations under the License. import type { BalenaSDK } from 'balena-sdk'; import type { CommandDefinition } from 'capitano'; -import { stripIndent } from 'common-tags'; import { ExpectedError } from '../errors'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; import { dockerignoreHelp, registrySecretsHelp } from '../utils/messages'; import { validateApplicationName, diff --git a/lib/actions/ssh.ts b/lib/actions/ssh.ts index 3a5fea7b..fc3f8e32 100644 --- a/lib/actions/ssh.ts +++ b/lib/actions/ssh.ts @@ -15,9 +15,8 @@ limitations under the License. */ import type * as BalenaSdk from 'balena-sdk'; import type { CommandDefinition } from 'capitano'; -import { stripIndent } from 'common-tags'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; import { validateDotLocalUrl, validateIPAddress } from '../utils/validation'; async function getContainerId( diff --git a/lib/actions/tunnel.ts b/lib/actions/tunnel.ts index bab3fbe4..461f933a 100644 --- a/lib/actions/tunnel.ts +++ b/lib/actions/tunnel.ts @@ -15,11 +15,10 @@ limitations under the License. */ import * as Bluebird from 'bluebird'; import type { CommandDefinition } from 'capitano'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import { createServer, Server, Socket } from 'net'; -import { getBalenaSdk } from '../utils/lazy'; +import { getBalenaSdk, stripIndent } from '../utils/lazy'; import { getOnlineTargetUuid } from '../utils/patterns'; import { tunnelConnectionToDevice } from '../utils/tunnel'; diff --git a/lib/actions/util.ts b/lib/actions/util.ts index 0216fc8a..80b6fae4 100644 --- a/lib/actions/util.ts +++ b/lib/actions/util.ts @@ -20,8 +20,7 @@ limitations under the License. */ import type { CommandDefinition } from 'capitano'; -import { stripIndent } from 'common-tags'; -import { getChalk, getVisuals } from '../utils/lazy'; +import { getChalk, getVisuals, stripIndent } from '../utils/lazy'; export const availableDrives: CommandDefinition<{}, {}> = { signature: 'util available-drives', diff --git a/lib/app-common.ts b/lib/app-common.ts index 61208b7a..7af892ad 100644 --- a/lib/app-common.ts +++ b/lib/app-common.ts @@ -16,7 +16,7 @@ */ import * as packageJSON from '../package.json'; -import { onceAsync } from './utils/lazy'; +import { onceAsync, stripIndent } from './utils/lazy'; class CliSettings { public readonly settings: any; @@ -64,10 +64,9 @@ export const setupSentry = onceAsync(async () => { return Sentry.getCurrentHub(); }); -function checkNodeVersion() { +async function checkNodeVersion() { const validNodeVersions = packageJSON.engines.node; - if (!require('semver').satisfies(process.version, validNodeVersions)) { - const { stripIndent } = require('common-tags'); + if (!(await import('semver')).satisfies(process.version, validNodeVersions)) { console.warn(stripIndent` ------------------------------------------------------------------------------ Warning: Node version "${process.version}" does not match required versions "${validNodeVersions}". diff --git a/lib/errors.ts b/lib/errors.ts index d4b45b10..88d5d561 100644 --- a/lib/errors.ts +++ b/lib/errors.ts @@ -14,12 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { BalenaError } from 'balena-errors'; -import { stripIndent } from 'common-tags'; +import type { BalenaError } from 'balena-errors'; import * as _ from 'lodash'; import * as os from 'os'; import { TypedError } from 'typed-error'; -import { getChalk } from './utils/lazy'; +import { getChalk, stripIndent } from './utils/lazy'; import { getHelp } from './utils/messages'; export class ExpectedError extends TypedError {} diff --git a/lib/preparser.ts b/lib/preparser.ts index 7ae6e823..6a9b6913 100644 --- a/lib/preparser.ts +++ b/lib/preparser.ts @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { stripIndent } from 'common-tags'; +import { stripIndent } from './utils/lazy'; import { exitWithExpectedError } from './errors'; diff --git a/lib/utils/cloud.ts b/lib/utils/cloud.ts index 99c66a6a..fb6eddb0 100644 --- a/lib/utils/cloud.ts +++ b/lib/utils/cloud.ts @@ -16,8 +16,8 @@ */ import type * as SDK from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; +import { stripIndent } from './lazy'; import { ExpectedError } from '../errors'; diff --git a/lib/utils/compose.js b/lib/utils/compose.js index 89890672..d3968608 100644 --- a/lib/utils/compose.js +++ b/lib/utils/compose.js @@ -16,10 +16,9 @@ */ import * as Bluebird from 'bluebird'; -import { stripIndent } from 'common-tags'; import * as path from 'path'; -import { getChalk } from './lazy'; +import { getChalk, stripIndent } from './lazy'; export const appendProjectOptions = (opts) => opts.concat([ diff --git a/lib/utils/compose_ts.ts b/lib/utils/compose_ts.ts index e50b17b6..856299e3 100644 --- a/lib/utils/compose_ts.ts +++ b/lib/utils/compose_ts.ts @@ -16,7 +16,6 @@ */ import { BalenaSDK } from 'balena-sdk'; import * as Bluebird from 'bluebird'; -import { stripIndent } from 'common-tags'; import type * as Dockerode from 'dockerode'; import * as _ from 'lodash'; import { promises as fs } from 'fs'; @@ -25,6 +24,7 @@ import { Composition } from 'resin-compose-parse'; import * as MultiBuild from 'resin-multibuild'; import { Readable } from 'stream'; import * as tar from 'tar-stream'; +import { stripIndent } from './lazy'; import { ExpectedError } from '../errors'; import { getBalenaSdk, getChalk } from '../utils/lazy'; diff --git a/lib/utils/device/ssh.ts b/lib/utils/device/ssh.ts index 7438d00c..4d64f4df 100644 --- a/lib/utils/device/ssh.ts +++ b/lib/utils/device/ssh.ts @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ import type { ContainerInfo } from 'dockerode'; +import { stripIndent } from '../lazy'; export interface DeviceSSHOpts { address: string; @@ -31,7 +32,6 @@ export async function performLocalDeviceSSH( const reduce = await import('lodash/reduce'); const { spawnSshAndExitOnError } = await import('../ssh'); const { ExpectedError } = await import('../../errors'); - const { stripIndent } = await import('common-tags'); let command = ''; diff --git a/lib/utils/env-common.ts b/lib/utils/env-common.ts index 25b48f50..0fbea364 100644 --- a/lib/utils/env-common.ts +++ b/lib/utils/env-common.ts @@ -16,7 +16,7 @@ */ import { flags } from '@oclif/command'; -import { stripIndent } from 'common-tags'; +import { stripIndent } from './lazy'; import { ExpectedError } from '../errors'; diff --git a/lib/utils/lazy.ts b/lib/utils/lazy.ts index 0c786f33..33c01164 100644 --- a/lib/utils/lazy.ts +++ b/lib/utils/lazy.ts @@ -19,6 +19,7 @@ limitations under the License. import type * as BalenaSdk from 'balena-sdk'; import type { Chalk } from 'chalk'; import type * as visuals from 'resin-cli-visuals'; +import type { stripIndent as StripIndent } from 'common-tags'; // Equivalent of _.once but avoiding the need to import lodash for lazy deps const once = (fn: () => T) => { @@ -50,3 +51,7 @@ export const getVisuals = once( ); export const getChalk = once(() => require('chalk') as Chalk); + +// Directly export stripIndent as we always use it immediately, but importing just `stripIndent` reduces startup time +// tslint:disable-next-line:no-var-requires +export const stripIndent = require('common-tags/lib/stripIndent') as typeof StripIndent; diff --git a/lib/utils/patterns.ts b/lib/utils/patterns.ts index c2461178..fc6b495f 100644 --- a/lib/utils/patterns.ts +++ b/lib/utils/patterns.ts @@ -16,12 +16,11 @@ limitations under the License. import { BalenaApplicationNotFound } from 'balena-errors'; import type * as BalenaSdk from 'balena-sdk'; import Bluebird = require('bluebird'); -import { stripIndent } from 'common-tags'; import _ = require('lodash'); import _form = require('resin-cli-form'); import { exitWithExpectedError, instanceOf, NotLoggedInError } from '../errors'; -import { getBalenaSdk, getVisuals } from './lazy'; +import { getBalenaSdk, getVisuals, stripIndent } from './lazy'; import validation = require('./validation'); import { isV12 } from './version'; diff --git a/lib/utils/promote.ts b/lib/utils/promote.ts index a8c91b8e..311ebc70 100644 --- a/lib/utils/promote.ts +++ b/lib/utils/promote.ts @@ -15,10 +15,9 @@ * limitations under the License. */ import type * as BalenaSdk from 'balena-sdk'; -import { stripIndent } from 'common-tags'; import { ExpectedError, printErrorMessage } from '../errors'; -import { getVisuals } from './lazy'; +import { getVisuals, stripIndent } from './lazy'; import Logger = require('./logger'); import { exec, execBuffered, getDeviceOsRelease } from './ssh'; diff --git a/lib/utils/qemu.ts b/lib/utils/qemu.ts index b8d9475d..e48b15f1 100644 --- a/lib/utils/qemu.ts +++ b/lib/utils/qemu.ts @@ -16,9 +16,8 @@ */ import * as Bluebird from 'bluebird'; -import { stripIndent } from 'common-tags'; import type * as Dockerode from 'dockerode'; -import { getBalenaSdk } from './lazy'; +import { getBalenaSdk, stripIndent } from './lazy'; import Logger = require('./logger'); export const QEMU_VERSION = 'v4.0.0+balena2'; diff --git a/lib/utils/remote-build.ts b/lib/utils/remote-build.ts index 25958a4f..50f892f5 100644 --- a/lib/utils/remote-build.ts +++ b/lib/utils/remote-build.ts @@ -26,7 +26,7 @@ import type { Pack } from 'tar-stream'; import { ExpectedError } from '../errors'; import { exitWithExpectedError } from '../errors'; import { tarDirectory } from './compose'; -import { getVisuals } from './lazy'; +import { getVisuals, stripIndent } from './lazy'; import Logger = require('./logger'); const globalLogger = Logger.getLogger(); @@ -183,8 +183,6 @@ function handleHeadlessBuildMessage(message: HeadlessBuilderMessage) { } function handleBuilderMetadata(obj: BuilderMessage, build: RemoteBuild) { - const { stripIndent } = require('common-tags'); - switch (obj.resource) { case 'cursor': if (obj.value == null) { diff --git a/lib/utils/sudo.ts b/lib/utils/sudo.ts index 781035d2..680f087d 100644 --- a/lib/utils/sudo.ts +++ b/lib/utils/sudo.ts @@ -16,7 +16,7 @@ */ import { ChildProcess, spawn, SpawnOptions } from 'child_process'; -import { stripIndent } from 'common-tags'; +import { stripIndent } from './lazy'; /** * Execute a child process with admin / superuser privileges, prompting the user for diff --git a/tests/commands/build.spec.ts b/tests/commands/build.spec.ts index 530a2d1e..8f9c55d6 100644 --- a/tests/commands/build.spec.ts +++ b/tests/commands/build.spec.ts @@ -19,11 +19,11 @@ require('../config-tests'); // required for side effects import { expect } from 'chai'; -import { stripIndent } from 'common-tags'; import mock = require('mock-require'); import { promises as fs } from 'fs'; import * as path from 'path'; +import { stripIndent } from '../../lib/utils/lazy'; import { BalenaAPIMock } from '../balena-api-mock'; import { expectStreamNoCRLF, testDockerBuildStream } from '../docker-build'; import { DockerMock, dockerResponsePath } from '../docker-mock'; diff --git a/tests/commands/env/envs.spec.ts b/tests/commands/env/envs.spec.ts index ca5284fd..254ffd5d 100644 --- a/tests/commands/env/envs.spec.ts +++ b/tests/commands/env/envs.spec.ts @@ -16,7 +16,7 @@ */ import { expect } from 'chai'; -import { stripIndent } from 'common-tags'; +import { stripIndent } from '../../../lib/utils/lazy'; import { isV12 } from '../../../lib/utils/version'; import { BalenaAPIMock } from '../../balena-api-mock'; diff --git a/tests/docker-build.ts b/tests/docker-build.ts index 26fc1622..5ca534ca 100644 --- a/tests/docker-build.ts +++ b/tests/docker-build.ts @@ -16,7 +16,6 @@ */ import { expect } from 'chai'; -import { stripIndent } from 'common-tags'; import * as _ from 'lodash'; import { promises as fs } from 'fs'; import * as path from 'path'; @@ -27,6 +26,7 @@ import * as tar from 'tar-stream'; import { streamToBuffer } from 'tar-utils'; import { URL } from 'url'; +import { stripIndent } from '../lib/utils/lazy'; import { BuilderMock } from './builder-mock'; import { DockerMock } from './docker-mock'; import { cleanOutput, fillTemplateArray, runCommand } from './helpers'; diff --git a/tslint.json b/tslint.json index 910a4e09..497c672c 100644 --- a/tslint.json +++ b/tslint.json @@ -2,6 +2,6 @@ "extends": "./node_modules/@balena/lint/config/tslint-prettier.json", "rules": { "ignoreDefinitionFiles": false, - "import-blacklist": [true, "resin-cli-visuals", "chalk"] + "import-blacklist": [true, "resin-cli-visuals", "chalk", "common-tags"] } }