Git Product home page Git Product logo

live-plugin-manager's Introduction

live-plugin-manager

npm version Build Status

live-plugin-manager is a Node.js module that allows you to install, uninstall and load any node package at runtime from npm registry.

My main goal is to allow any application to be easily extensible by installing and running any node package at runtime, without deployments or server customization. You can basically allow your users to decide what plugin/extension to install.

Main features are:

  • Install and run Node packages at runtime (no deployment)
  • Install from npm registry (private or public)
  • Install from filesystem
  • Install from github (branch, commit or tag)
  • Update/uninstall packages
  • Any Node.js packages can be installed
    • No special configuration is required
  • Installed packages can have dependencies
    • dependencies are automatically installed
    • when updating a dependencies all dependents are reloaded
  • Support for concurrency operation on filesystem (cloud/web farm scenario where file system is shared)
    • A filesystem lock is used to prevent multiple instances to work on the same filesystem in the same moment
  • Each package run in an semi isolated environment (VM sandbox)
  • Set different environment variables for each package
  • Implemented in TypeScript
  • Fully tested (mocha tests)

There are some known limitations, see section at the end.

Installation

npm install live-plugin-manager

Usage

import {PluginManager} from "live-plugin-manager";

const manager = new PluginManager();

async function run() {
  await manager.install("moment");

  const moment = manager.require("moment");
  console.log(moment().format());

  await manager.uninstall("moment");
}

run();  

In the above code I install moment package at runtime, load and execute it.

Plugins are installed inside the directory specified in the PluginManager constructor or in the plugin_packages directory if not specified.

Each time your application start you should reinstall any packages that you need; already downloaded packages are not automatically installed, but installation is faster because no new file is downloaded. Typically I suggest to put the list of the installed packages in a database or any other central repository.

Here another more complex scenario where I install express with all it's dependencies, just to demonstrate how many possibilities you can have:

import {PluginManager} from "live-plugin-manager";

const manager = new PluginManager();

async function run() {
  await manager.install("express");
  const express = manager.require("express");

  const app = express();
  app.get("/", function(req: any, res: any) {
    res.send("Hello World!");
  });

  const server = app.listen(3000, function() {
  });
}

run();

Load plugins

live-plugin-manager doesn't have any special code or convention to load plugins. When you require a plugin it just load the main file (taken from package.json) and execute it, exactly like standard node.js require. Often when working with plugins you need some extension point or convention to actually integrate your plugins inside your host application. Here are some possible solutions:

Another solution is to load your plugins inside a Dependency Injection container.

I'm working also on shelf-dependency, a simple dependency injection/inversion of control container that can be used to load plugins.

Samples

  • See ./samples and ./test directories
  • Sample of an extensible web application: lpm-admin

Reference

PluginManager.constructor(options?: Partial<PluginManagerOptions>)

Create a new instance of PluginManager. Takes an optional options parameter with the following properties:

  • cwd: current working directory (default to process.cwd())
  • pluginsPath: plugins installation directory (default to .\plugin_packages, see cwd). Directory is created if not exists
  • npmRegistryUrl: npm registry to use (default to https://registry.npmjs.org)
  • npmRegistryConfig: npm registry configuration see npm-registry-client config
  • ignoredDependencies: array of string or RegExp with the list of dependencies to ignore, default to @types/*
  • staticDependencies: object with an optional list of static dependencies that can be used to force a dependencies to be ignored (not installed when a plugin depend on it) and loaded from this list
  • githubAuthentication: Github authentication configuration (optional). See installFromGithub or Github api authentication for more info.
  • lockWait: A number of milliseconds to wait for locks when installing modules to expire before giving up. (default 2 min)
  • lockStale: A number of milliseconds before installations locks are considered to have expired. (default 3 min)

pluginManager.install(name: string, version?: string): Promise<IPluginInfo>

Install the specified package from npm registry or directly from github repository. version parameter can be a version like 1.0.3 or a github repository in the format owner/repository_name#ref (like expressjs/express#351396f). If a version is specified package is downloaded from NPM.

Dependencies are automatically installed (devDependencies are ignored).

pluginManager.installFromNpm(name: string, version = "latest"): Promise<IPluginInfo>

Install the specified package from npm registry. Dependencies are automatically installed (devDependencies are ignored). By default is the package is already available in the download folder then and version is compatible then it is not requested again from npm. Change this behavior by setting npmInstallMode: "noCache" options.

To setup authentication for private npm registry use:

const manager = new PluginManager({
  npmRegistryUrl: "http://your-private-registry",
  npmRegistryConfig: {
    auth: {
      token: "your-token"
    }
  }
});

pluginManager.installFromGithub(repository: string): Promise<IPluginInfo>

Install the specified package from github. repository is specified in the format owner/repository_name#ref (like expressjs/express#351396f). Dependencies are automatically installed (devDependencies are ignored).

Note: Github has an API rate limit of 60 calls if not authenticated. To authenticate calls just set the githubAuthentication property in the options:

manager = new PluginManager({
  githubAuthentication: {
    "type": "basic",
    "username": "YOUR_USER",
    "password": "YOUR_PERSONAL_TOKEN"
  }
});

See Github api authentication for more info.

installFromPath(location: string, options: {force: boolean} = {}): Promise<IPluginInfo>

Install the specified package from a filesystem location. Dependencies are automatically installed from npm. node_modules folder is excluded from source location.

installFromCode(name: string, code: string, version?: string): Promise<IPluginInfo>

Install a package by specifying code directly. If no version is specified it will be always reinstalled.

uninstall(name: string): Promise<void>

Uninstall the package. Dependencies are not uninstalled automatically.

uninstallAll(): Promise<void>

Uninstall all installed packages.

list(): Promise<IPluginInfo[]>

Get the list of installed packages.

require(name: string): any

Load and get the instance of the plugin. Node.js require rules are used to load modules. Calling require multiple times gives always the same instance until plugins changes.

getInfo(name: string): IPluginInfo | undefined

Get information about an installed package.

runScript(code: string): any

Run the specified Node.js javascript code with the same context of plugins. Script are executed using vm as with each plugin.

async queryPackage(name: string, version?: string): Promise

Get package/module info from npm registry or github depending of the version format.

async queryPackageFromNpm(name: string, version = "latest"): Promise

Get package/module info from npm registry.

async queryPackageFromGithub(repository: string): Promise

Get package/module info from github registry.

Security

Often is a bad idea for security to allow installation and execution of any node.js package inside your application. When installing a package it's code is executed with the same permissions of your host application and can potentially damage your entire server. I suggest usually to allow to install only a limited sets of plugins or only allow trusted administrator to install plugins.

Sandbox

For advanced scenarios you can customize the sandbox where each plugin run. Sandbox defined NodeJS global object. A typical scenario is to customize the environment variables global.process.env. To customize the sandbox you can set a single sandbox for all plugins using options.sandbox in the PluginManager constructor or set a different sandbox for each plugin, see PluginManager.setSandboxTemplate and PluginManager.getSandboxTemplate functions.

Under to hood

This project use the following dependencies to do it's job:

  • vm: compiling and running plugin code within V8 Virtual Machine contexts
  • lockfile: file system locking to prevent concurrent operations (see below)
  • tar.gz: extract package file
  • fs-extra: file system operations
  • debug: debug information
  • (removed for now because I have problems with getArchiveLink api, 302 ...) github
  • (removed for now because for some dependencies issues) npm-registry-client: npm registry handling

While I have tried to mimic the standard Node.js module and package architecture there are some differences. First of all is the fact that plugins by definition are installed at runtime in contrast with a standard Node.js application where modules are installed before executing the node.js process. Modules can be loaded one or more times, instead in standard Node.js they are loaded only the first time that you require it. Only one version of a plugin can be installed, also for dependencies, while in Node.js multiple version can be installed (each module can have it's own node_modules).

Locking

A file system locking is implemented using lockfile library to allow multiple app instances to share the file system. This is common in some cloud scenario (for example Azure) where file system is shared between instances.

Locking is used to ensure that only one instance is installing/uninstalling plugins in a given moment.

You can configure lockWait inside constructor to configure lock timeout, and lockStale to consider a file lock no more valid after that period.

Git integration

Remember to git ignore the directory where packages are installed, see pluginsPath. Usually you should add this to your .gitignore file:

plugin_packages

Known limitations

There are some known limitations when installing a package:

  • Different plugins cannot depend on different/incompatible modules. If plugin A require module x at version 1 and plugin B require the same module X at version 2 then plugin A and plugin B cannot be installed simultaneously. Version 2 of module X will be used and this can cause problems on your code.
  • process.on has been stubbed, so plugins that use these events may not work as expected.
  • No pre/post-install scripts are executed (some packages use this scripts to build assets or for platform specific installation, so for this reason some packages are not supported)
  • C/C++ packages (.node) are not supported
  • Plugin dependencies can be specified only as NPM dependencies (version number) or github dependencies (owner/repo), url or other kind of dependencies are not supported

If you find other problems please open an issue.

Development

Compile typescript using:

npm run src-build

Run tests using:

npm run test

Due to some github rate limits, github related tests can fail if you don't specify a github token. To specify it use:

github_auth_username=YOURUSER github_auth_token=YOUR_TOKEN npm test

The token must only have public access permission.

License (MIT)

MIT License

Copyright (c) 2021 Davide Icardi

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

live-plugin-manager's People

Contributors

danieldelcore avatar davideicardi avatar fgreinacher avatar jtsui avatar quarenw avatar samtv12345 avatar strogonoff avatar xxczaki avatar ylc395 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

live-plugin-manager's Issues

sharp lib install failed

Hello, i've try to install sharp package but its have error:

Tagspaces WS: Error:
Tagspaces WS: Something went wrong installing the "sharp" module
Tagspaces WS: Cannot find module '../build/Release/sharp.node'
Tagspaces WS: Require stack:
Tagspaces WS: - C:\Users\smari\IdeaProjects\tagspaces\app\node_modules\tagspaces-ws\node_modules\sharp\lib\constructor.js
Tagspaces WS: - C:\Users\smari\IdeaProjects\tagspaces\app\node_modules\tagspaces-ws\node_modules\sharp\lib\index.js

I have try to install sharp with npm and build folder is missing on install it with live-plugin-manager
Screenshot_23
Screenshot_24

Error: Invalid plugin github repository

Hi.

Im trying to use the live-plugin-manager library to load my custom-made module(Typescript) from a public github repo during runtime. But it errors with the following:

/Users/david/WebstormProjects/send_help/node_modules/live-plugin-manager/dist/src/GithubRegistryClient.js:67
                throw new Error("Invalid plugin github repository " + repository);
                      ^

Error: Invalid plugin github repository dnhook123/modules#25c265c
    at GithubRegistryClient.<anonymous> (/Users/david/WebstormProjects/send_help/node_modules/live-plugin-manager/dist/src/GithubRegistryClient.js:67:23)
    at Generator.next (<anonymous>)
    at fulfilled (/Users/david/WebstormProjects/send_help/node_modules/live-plugin-manager/dist/src/GithubRegistryClient.js:24:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
import {PluginManager} from 'live-plugin-manager';
const manager = new PluginManager();

const test = await manager.queryPackageFromGithub('dnhook123/modules#25c265c');

Index.js code

I've already found out that the github repo's like express.js works but mine do not. Do you know perhaps why?

My github error example: example error
The module i want to load in module

Enhance the IPluginInfo to contain also the description

I would really appreciate, if the IPluginInfo could also include the the descritpion of the installed package. My application make a a very good use of live-plugin-manager in a way which offers users the possibility to install additional packages from NPM or local filesystem. The installable packages are shown in a list showing their name and the description.

Having the IPluginInfos location property I can parse the package.json, but this is basically the same thing live-plugin-manager is doing when creating the IPluginInfo.

So far I investigated the code a little bit an it seems, that only a small addition would be necessary to the createPluginInfo method in the PluginManager.ts file

private async createPluginInfo(name: string): Promise<IPluginInfo> {
		const location = this.getPluginLocation(name);
		const packageJson = await this.readPackageJsonFromPath(location);

		const mainFile = path.normalize(path.join(location, packageJson.main || DefaultMainFile));

		return {
			name: packageJson.name,
			description: packageJson.description,
			version: packageJson.version,
			location,
			mainFile,
			dependencies: packageJson.dependencies || {}
		};
	}

Regression in 0.15.1 (when used in browser context)

I triple-checked and everything else left alone 0.15.1 results in an error while 0.15.0 works, so this must be a regression.

The error happens when plugin manager is used in browser context (Electron renderer) and is thrown by this specific line:

sandbox.console = new console.Console({ stdout: process.stdout, stderr: process.stderr });

I’ll try to copy the exact error later, it’s about console.Console either missing or not being a constructor.

For now downgraded to 0.15.0.

New user here, nice work!

0.13.2 - global.Date is undefined

I ran into a package that tries to use the global Date function and fails because it is undefined in the context
Package is "tedious" a dependency of "mssql", from it's code:

const globalDate = global.Date;
const YEAR_ONE = new globalDate(2000, 0, -730118);

The second line fails with TypeError: globalDate is not a constructor
I can debug and there are plenty of global variables but not Date

fix: circular dependencies result in endless loop + out of memory crash

I tried installing a plugin that has es6-iterator as a dependency which has es5-ext as a dependency which has es6-iterator and so there's a cycle in the dependency graph that I think live-plugin-manager needs a circuit breaker for.
It might be that some additional things are needed to make sure it is handled correctly, if anyone has any information about how npm/yarn handle these cases (on top of having the circuit breaker) that would be great to know!

Plugin manager require gives module not found but passing the path directly works

Hi,

I am trying to use live-plugin-manager in my cli tool and am having a couple issues.

  1. running pluginManager.install installs the package but does not install its dependencies.
  2. running pluginManager.require gives a "module not found" error even if I cd to the module directory and install the dependencies manually.

error text:

Error: Cannot find module 'src/plugins/@myNamespace/myModule/dist/services/index.js'

I am able to successfully require the package using either await import('${pathToModuleInPluginDir') or require('$pathToModuleInPluginDir' after manually installing dependencies but running pluginManager.require('moduleName') fails with no found.

My setup is fairly simple, here is how I am initializing the plugin manager:

this.pluginManager = new PluginManager({
      pluginsPath: './src/plugins',
      // hostRequire: undefined,
    })

I tried the suggestion from another issue of using hostRequire: undefined but had the same result.

Here is the code requiring the plugin:

const installOra = ora(`Installing ${providerName} plugin`).start()
        await this.pluginManager.install(importPath)
        installOra.succeed(`${providerName} plugin installed successfully!`)
        // plugin = client
        // plugin = require('../plugins/@cloudgraph/cg-provider-aws/dist/services/index.js')
        plugin = this.pluginManager.require(importPath)

Note importPath === something like @myNamespace/myModule
Any ideas?

Thanks!

Problem installing mathjs with plugin-manager

First off, wow: amazing package!

Just discovered it and am testing it out to manage plugins for an electron app, but I ran into problems with one package in particular: mathjs. Here's a chunk of code:

  await manager.install('mathjs')
  const m = manager.require('mathjs')
  console.log(m.evaluate('7 + 12'))

Ther error is actually coming from dependency typed-function, which seems to provide typing for math.js:

 UnhandledPromiseRejectionWarning: .../typed-function/typed-function.js:128
        throw new TypeError('Unknown type "' + typeName + '"' +
        ^

  TypeError: Unknown type "Function". Did you mean "function"?

I looked through your known issues and checked those packages, but I'm not seeing why it wouldn't work when other packages do. Any immediate ideas or debugging tips in general? Thanks!

https://github.com/josdejong/mathjs
https://github.com/josdejong/typed-function

handle peerDependencies

If when installing a package we found that there is one or more peerDependencies not available inside staticDependencies throw an error.

From #24 :

Installing peerDependencies automatically would be unexpected for people who are used to NPM/Yarn behavior.
From my understanding, it seems like staticDependencies could play well with peerDependencies. For example:

  • package A specifies peer dependency X
  • my project installs & requires package A using live-plugin-manager
  • live-plugin-manager will not install X
  • (new behavior) if my project does not pass X via staticDependencies, live-plugin-manager will error or warn
    (just my 2 cents)

"Cannot find ./maps/entities.json in plugin entities" when requiring Cheerio

Hi,

I am using Windows, tried with both native nodejs on Windows and using Bash for Windows.
When trying to use cheerio with the live-plugin-manager, I get this error:

    at PluginVm.sandboxResolve (/mnt/g/Code/live-plugin-manager/src/PluginVm.js:205:19)
    at PluginVm.resolve (/mnt/g/Code/live-plugin-manager/src/PluginVm.js:57:21)
    at PluginManager.load (/mnt/g/Code/live-plugin-manager/src/PluginManager.js:520:38)
    at PluginManager.require (/mnt/g/Code/live-plugin-manager/src/PluginManager.js:162:21)
    at PluginVm.sandboxRequire (/mnt/g/Code/live-plugin-manager/src/PluginVm.js:239:33)
    at Object.assign (/mnt/g/Code/live-plugin-manager/src/PluginVm.js:155:25)
    at /mnt/g/Code/live-plugin-manager/plugin_packages/htmlparser2/lib/Tokenizer.js:5:17
    at /mnt/g/Code/live-plugin-manager/plugin_packages/htmlparser2/lib/Tokenizer.js:973:2
    at Script.runInContext (vm.js:133:20)
    at PluginVm.vmRunScriptInSandbox (/mnt/g/Code/live-plugin-manager/src/PluginVm.js:113:16)

This is my basic test case to reproduce the issue:

const PluginManager = require("live-plugin-manager").PluginManager;

const manager = new PluginManager();

async function run() {
  await manager.install("cheerio");

  const cheerio = manager.require("cheerio");
  const $ = cheerio.load('<h2 class="title">Hello world</h2>')

  $('h2.title').text('Hello there!')
  $('h2').addClass('welcome')

  console.log($.html());

  await manager.uninstall("cheerio");
}

run();

I've tracked this down to cheerio's dependency on the "entities" module. Entities does a local include of a JSON file that fails because live-plugin-manager is trying to load "./maps/entities.json" relative to the root of the plugin path, rather than where the require was requested from.

I've had some luck by adding the following to PluginVM.sandboxResolve, which basically looks for the include where the main entrypoint file is, rather than the module base.

// check relative path to main entry point if plugin root fails
const subDirPath = path.resolve(path.dirname(pluginContext.mainFile), requiredName);
if (!subDirPath.startsWith(pluginContext.location)) {
    throw new Error("Cannot require a module outside a plugin");
}
const subDirFile = this.tryResolveAsFile(subDirPath);
if (subDirFile) {
    return subDirFile;
}
const isSubdirectory = this.tryResolveAsDirectory(subDirPath);
if (isSubdirectory) {
    return isSubdirectory;
}

... but am not confident in this fix as I believe pluginContext.mainFile isn't the file requesting the require, but the entrypoint to the whole plugin?

0.14.1 -> 0.15.1 issue on 0.15.1

Hi, 0.14.1 works fine, on 0.15.1 I have the following issue:

TypeError: console.Console is not a constructor
at PluginVm.createGlobalSandbox (PluginVm.ts:438)
at PluginVm.getPluginSandbox (PluginVm.ts:377)
at PluginVm.createModuleSandbox (PluginVm.ts:176)
at PluginVm.load (PluginVm.ts:37)
at PluginManager.load (PluginManager.ts:624)
at PluginManager.require (PluginManager.ts:188)
at Object.init (amazon_buy_from_shopify.js:34)
at async HTMLButtonElement.document.getElementById.onclick (script.js:405)

Handling modules with index.json entrypoints

image image

I've run into an issue with this module spdx-license-ids which is transitively brought in by one of my dependencies.

And imported like so:

'use strict'

var licenses = []
  .concat(require('spdx-license-ids'))
  .concat(require('spdx-license-ids/deprecated'))
var exceptions = require('spdx-exceptions')

module.exports = function (source) {
  var index = 0

Keen to hear your thoughts on how live-plugin-manager should handle or workaround this module 🤔

Async function

Hi,

I installed an AsyncFunction-returning package. Unfortunately, when I try to use it (via manager.require(name).default, it shows [Function], instead of [AsyncFunction].

FR: Support for `"exports"` in `package.json`

Right now if (saltcorn) plugin requires (directly or indirectly), for example require("@saltcorn/db-common/internal") it raises Error: Cannot find ./internal in plugin @saltcorn/db-common, but in node code outsize live-plugin-manager's vm it works.

Docs: https://nodejs.org/api/all.html#all_packages_subpath-exports
Example: https://github.com/saltcorn/saltcorn/blob/11742abda9d6145c19d2081d492b9c1231ad61c1/packages/db-common/package.json#L14
Reference implementation: https://github.com/nodejs/node/blob/952cf0d17ae51c644a434684dabf493ccf2ebf38/lib/internal/modules/esm/resolve.js#L567

Literal Object prototype is not working properly inside the plugin's context

({}).constructor === Object is not working as expected, it should be true, but it's false if the code is run inside the plugin's code. As many libraries rely on that (bad practice) check, they don't fully work (such as aws sdk #56)

This is a local hack, but easy enough to reproduce. It can be tested with any plugin, as we can simply replace 2 lines (in dist if you don't want to rebuild).

this line

const iifeCode = `(function(exports){${newLine}${code}${newLine}}(module.exports));`;

replace by the following 2 lines.

  console.log('This is outside plugin:', new Object().constructor === Object, ({}).constructor === Object)
  const iifeCode = `console.log('This is inside', new Object().constructor === Object, ({}).constructor === Object)`;

The output is

This is outside plugin: true true
This is inside true false

I spent some time trying to customize the context variables with no luck. Maybe someone with more expertise, I have no clue how the constructor of {} is defined in that child context we create.

Thanks!

Support url dependencies?

Is there anyway to install url dependencies? E.g. dependencies that are specified just via a full url to their tarball? This is supported by npm natively I believe, and I can see some tgz download related code already in the repo. So if not currently supported, could be a quick win?

{
  "dependencies": {
    "foo": "https://registry.npmjs.org/foo/-/foo-1.0.0.tgz"
  }
}

"Cannot require a module outside a plugin" error when adding querystring to staticDependencies

This is actually a followup of the issue #32. So far I was able to resolve most of the MODULE_NOT_FOUND issues with adding modules to the staticDependencies array when initializing the plugin manager. Sadly I hit a rock bottom when doing this for the querystring dependency. This results in an error: Cannot require a module outside a plugin when trying to use the module, which required the querystring as dependancy.

Here is the output with a DEBU=* flag set:
live-plugin-manager Acquiring lock ... +0ms
  live-plugin-manager.NpmRegistryClient Getting npm info for jsonresume-theme-mocha-responsive:latest... +0ms
  live-plugin-manager.HttpUtils Json GET https://registry.npmjs.org/jsonresume-theme-mocha-responsive ... +0ms
  live-plugin-manager.HttpUtils HEADERS {
  'accept-encoding': 'gzip',
  accept: 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*',
  'user-agent': 'live-plugin-manager'
} +0ms
  live-plugin-manager.HttpUtils Response HEADERS Headers {
  [Symbol(map)]: [Object: null prototype] {
    date: [ 'Mon, 02 Nov 2020 20:48:41 GMT' ],
    'content-type': [ 'application/vnd.npm.install-v1+json' ],
    'content-length': [ '1679' ],
    connection: [ 'close' ],
    'set-cookie': [
      '__cfduid=d580fdf1b13c8805f5af2d9277da76b3b1604350121; expires=Wed, 02-Dec-20 20:48:41 GMT; path=/; domain=.npmjs.org; HttpOnly; SameSite=Lax'
    ],
    'cf-ray': [ '5ec0b7c49edad11d-TXL' ],
    'accept-ranges': [ 'bytes' ],
    age: [ '2345' ],
    'cache-control': [ 'public, max-age=300' ],
    etag: [ '"4dc6c522263874c99a41e8c8ba66a68a"' ],
    'last-modified': [ 'Fri, 14 Feb 2020 18:48:59 GMT' ],
    vary: [ 'accept-encoding, accept' ],
    'cf-cache-status': [ 'HIT' ],
    'cf-request-id': [ '062c512ee10000d11d0b25f000000001' ],
    'expect-ct': [
      'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"'
    ],
    server: [ 'cloudflare' ]
  }
} +90ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: address-format ... +101ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: base64-img ... +3ms
  live-plugin-manager Installing dependencies of base64-img: ajax-request ... +2ms
  live-plugin-manager Installing dependencies of ajax-request: file-system ... +2ms
  live-plugin-manager Installing dependencies of file-system: file-match ... +3ms
  live-plugin-manager Installing dependencies of file-match: utils-extend ... +2ms
  live-plugin-manager Installing dependencies of file-system: utils-extend is already installed +1ms
  live-plugin-manager Installing dependencies of ajax-request: utils-extend is already installed +0ms
  live-plugin-manager Installing dependencies of base64-img: file-system is already installed +1ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: handlebars ... +0ms
  live-plugin-manager Installing dependencies of handlebars: minimist ... +1ms
  live-plugin-manager Installing dependencies of handlebars: neo-async ... +2ms
  live-plugin-manager Installing dependencies of handlebars: source-map ... +1ms
  live-plugin-manager Installing dependencies of handlebars: wordwrap ... +2ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: handlebars-wax ... +1ms
  live-plugin-manager Installing dependencies of handlebars-wax: object-assign ... +2ms
  live-plugin-manager Installing dependencies of handlebars-wax: require-glob ... +1ms
  live-plugin-manager Installing dependencies of require-glob: glob-parent ... +2ms
  live-plugin-manager Installing dependencies of glob-parent: is-glob ... +1ms
  live-plugin-manager Installing dependencies of is-glob: is-extglob ... +1ms
  live-plugin-manager Installing dependencies of glob-parent: path-dirname ... +2ms
  live-plugin-manager Installing dependencies of require-glob: globby ... +1ms
  live-plugin-manager Installing dependencies of globby: array-union ... +2ms
  live-plugin-manager Installing dependencies of array-union: array-uniq ... +1ms
  live-plugin-manager Installing dependencies of globby: glob ... +2ms
  live-plugin-manager Installing dependencies of glob: fs.realpath ... +2ms
  live-plugin-manager Installing dependencies of glob: inflight ... +1ms
  live-plugin-manager Installing dependencies of inflight: once ... +2ms
  live-plugin-manager Installing dependencies of once: wrappy ... +1ms
  live-plugin-manager Installing dependencies of inflight: wrappy is already installed +1ms
  live-plugin-manager Installing dependencies of glob: inherits ... +0ms
  live-plugin-manager Installing dependencies of glob: minimatch ... +2ms
  live-plugin-manager Installing dependencies of minimatch: brace-expansion ... +1ms
  live-plugin-manager Installing dependencies of brace-expansion: balanced-match ... +1ms
  live-plugin-manager Installing dependencies of brace-expansion: concat-map ... +2ms
  live-plugin-manager Installing dependencies of glob: once is already installed +1ms
  live-plugin-manager Installing dependencies of glob: path-is-absolute ... +0ms
  live-plugin-manager Installing dependencies of globby: object-assign is already installed +2ms
  live-plugin-manager Installing dependencies of globby: pify ... +0ms
  live-plugin-manager Installing dependencies of globby: pinkie-promise ... +2ms
  live-plugin-manager Installing dependencies of pinkie-promise: pinkie ... +1ms
  live-plugin-manager Installing dependencies of require-glob: parent-module ... +1ms
  live-plugin-manager Installing dependencies of parent-module: callsites ... +2ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: is-url ... +1ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: marked ... +1ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: moment ... +2ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: promised-handlebars ... +1ms
  live-plugin-manager Installing dependencies of promised-handlebars: deep-aplus ... +2ms
  live-plugin-manager Installing dependencies of deep-aplus: lodash.isplainobject ... +2ms
  live-plugin-manager Installing dependencies of jsonresume-theme-mocha-responsive: swag ... +2ms
  live-plugin-manager Installing dependencies of swag: handlebars is already installed +2ms
  live-plugin-manager Releasing lock ... +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js of jsonresume-theme-mocha-responsive (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js)... +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +5ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +1ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'promised-handlebars' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +0ms
  live-plugin-manager.PluginVm Resolved promised-handlebars as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/index.js of promised-handlebars (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/index.js)... +6ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'deep-aplus' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/index.js... +4ms
  live-plugin-manager.PluginVm Resolved deep-aplus as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js of deep-aplus (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'lodash.isplainobject' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js... +4ms
  live-plugin-manager.PluginVm Resolved lodash.isplainobject as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/lodash.isplainobject/index.js of lodash.isplainobject (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/lodash.isplainobject/index.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/lodash.isplainobject/index.js ... +1ms
  live-plugin-manager.PluginVm Requiring './lib/markers' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/index.js... +3ms
  live-plugin-manager.PluginVm Resolved ./lib/markers as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/markers.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/markers.js ... +0ms
  live-plugin-manager.PluginVm Requiring './utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/markers.js... +2ms
  live-plugin-manager.PluginVm Resolved ./utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/utils.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/utils.js ... +0ms
  live-plugin-manager.PluginVm Requiring './replaceP' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/markers.js... +3ms
  live-plugin-manager.PluginVm Resolved ./replaceP as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/replaceP.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/replaceP.js ... +1ms
  live-plugin-manager.PluginVm Requiring './lib/utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/index.js... +3ms
  live-plugin-manager.PluginVm Resolved ./lib/utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/utils.js +6ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'handlebars' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +0ms
  live-plugin-manager.PluginVm Resolved handlebars as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js of handlebars (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js)... +19ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../dist/cjs/handlebars' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js... +4ms
  live-plugin-manager.PluginVm Resolved ../dist/cjs/handlebars as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js ... +0ms
  live-plugin-manager.PluginVm Requiring './handlebars.runtime' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +2ms
  live-plugin-manager.PluginVm Resolved ./handlebars.runtime as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js ... +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/base' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js... +2ms
  live-plugin-manager.PluginVm Resolved ./handlebars/base as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js ... +0ms
  live-plugin-manager.PluginVm Requiring './utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js... +3ms
  live-plugin-manager.PluginVm Resolved ./utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js ... +0ms
  live-plugin-manager.PluginVm Requiring './exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js... +2ms
  live-plugin-manager.PluginVm Resolved ./exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js ... +0ms
  live-plugin-manager.PluginVm Requiring './helpers' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js... +3ms
  live-plugin-manager.PluginVm Resolved ./helpers as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js ... +0ms
  live-plugin-manager.PluginVm Requiring './helpers/block-helper-missing' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +2ms
  live-plugin-manager.PluginVm Resolved ./helpers/block-helper-missing as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js... +17ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './helpers/each' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +0ms
  live-plugin-manager.PluginVm Resolved ./helpers/each as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/each.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/each.js ... +1ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/each.js... +3ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/each.js... +0ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './helpers/helper-missing' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +0ms
  live-plugin-manager.PluginVm Resolved ./helpers/helper-missing as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/helper-missing.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/helper-missing.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/helper-missing.js... +2ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './helpers/if' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +0ms
  live-plugin-manager.PluginVm Resolved ./helpers/if as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/if.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/if.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/if.js... +2ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/if.js... +0ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './helpers/log' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +0ms
  live-plugin-manager.PluginVm Resolved ./helpers/log as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/log.js +21ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/log.js ... +0ms
  live-plugin-manager.PluginVm Requiring './helpers/lookup' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +3ms
  live-plugin-manager.PluginVm Resolved ./helpers/lookup as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/lookup.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/lookup.js ... +0ms
  live-plugin-manager.PluginVm Requiring './helpers/with' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js... +2ms
  live-plugin-manager.PluginVm Resolved ./helpers/with as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/with.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/with.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/with.js... +3ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers/with.js... +0ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './decorators' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js... +0ms
  live-plugin-manager.PluginVm Resolved ./decorators as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/decorators.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/decorators.js ... +0ms
  live-plugin-manager.PluginVm Requiring './decorators/inline' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/decorators.js... +2ms
  live-plugin-manager.PluginVm Resolved ./decorators/inline as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/decorators/inline.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/decorators/inline.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/decorators/inline.js... +2ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +21ms
  live-plugin-manager.PluginVm Requiring './logger' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js... +0ms
  live-plugin-manager.PluginVm Resolved ./logger as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/logger.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/logger.js ... +0ms
  live-plugin-manager.PluginVm Requiring './utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/logger.js... +2ms
  live-plugin-manager.PluginVm Resolved ./utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './internal/proto-access' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js... +0ms
  live-plugin-manager.PluginVm Resolved ./internal/proto-access as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/proto-access.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/proto-access.js ... +0ms
  live-plugin-manager.PluginVm Requiring './create-new-lookup-object' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/proto-access.js... +2ms
  live-plugin-manager.PluginVm Resolved ./create-new-lookup-object as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js... +4ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../logger' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/proto-access.js... +0ms
  live-plugin-manager.PluginVm Resolved ../logger as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/logger.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/logger.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/safe-string' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/safe-string as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/safe-string.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/safe-string.js ... +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js... +2ms
  live-plugin-manager.PluginVm Resolved ./handlebars/exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +18ms
  live-plugin-manager.PluginVm Requiring './handlebars/runtime' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/runtime as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js ... +0ms
  live-plugin-manager.PluginVm Requiring './utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js... +2ms
  live-plugin-manager.PluginVm Resolved ./utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +1ms
  live-plugin-manager.PluginVm Requiring './exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './base' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./base as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './helpers' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./helpers as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/helpers.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './internal/wrapHelper' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./internal/wrapHelper as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/wrapHelper.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/wrapHelper.js ... +0ms
  live-plugin-manager.PluginVm Requiring './internal/proto-access' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/runtime.js... +3ms
  live-plugin-manager.PluginVm Resolved ./internal/proto-access as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/proto-access.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/internal/proto-access.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/no-conflict' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.runtime.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/no-conflict as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/no-conflict.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/no-conflict.js ... +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/compiler/ast' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +4ms
  live-plugin-manager.PluginVm Resolved ./handlebars/compiler/ast as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/ast.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/ast.js ... +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/compiler/base' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +3ms
  live-plugin-manager.PluginVm Resolved ./handlebars/compiler/base as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/base.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/base.js ... +0ms
  live-plugin-manager.PluginVm Requiring './parser' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/base.js... +2ms
  live-plugin-manager.PluginVm Resolved ./parser as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/parser.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/parser.js ... +0ms
  live-plugin-manager.PluginVm Requiring './whitespace-control' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/base.js... +5ms
  live-plugin-manager.PluginVm Resolved ./whitespace-control as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js ... +0ms
  live-plugin-manager.PluginVm Requiring './visitor' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js... +13ms
  live-plugin-manager.PluginVm Resolved ./visitor as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js +2ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js... +2ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './helpers' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/base.js... +1ms
  live-plugin-manager.PluginVm Resolved ./helpers as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/helpers.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/helpers.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/helpers.js... +2ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/base.js... +0ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/compiler/compiler' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/compiler/compiler as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/compiler.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/compiler.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/compiler.js... +3ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/compiler.js... +20ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +1ms
  live-plugin-manager.PluginVm Requiring './ast' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/compiler.js... +0ms
  live-plugin-manager.PluginVm Resolved ./ast as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/ast.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/ast.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/compiler/javascript-compiler' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +1ms
  live-plugin-manager.PluginVm Resolved ./handlebars/compiler/javascript-compiler as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../base' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js... +3ms
  live-plugin-manager.PluginVm Resolved ../base as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/base.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../exception' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js... +0ms
  live-plugin-manager.PluginVm Resolved ../exception as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/exception.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js... +0ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './code-gen' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js... +0ms
  live-plugin-manager.PluginVm Resolved ./code-gen as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/code-gen.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/code-gen.js ... +0ms
  live-plugin-manager.PluginVm Requiring '../utils' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/code-gen.js... +2ms
  live-plugin-manager.PluginVm Resolved ../utils as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/utils.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'source-map' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/code-gen.js... +0ms
  live-plugin-manager.PluginVm Resolved source-map as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/source-map.js of source-map (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/source-map.js)... +210ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/source-map.js ... +1ms
  live-plugin-manager.PluginVm Requiring './lib/source-map-generator' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/source-map.js... +5ms
  live-plugin-manager.PluginVm Resolved ./lib/source-map-generator as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js ... +0ms
  live-plugin-manager.PluginVm Requiring './base64-vlq' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js... +2ms
  live-plugin-manager.PluginVm Resolved ./base64-vlq as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64-vlq.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64-vlq.js ... +0ms
  live-plugin-manager.PluginVm Requiring './base64' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64-vlq.js... +2ms
  live-plugin-manager.PluginVm Resolved ./base64 as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64.js ... +0ms
  live-plugin-manager.PluginVm Requiring './util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js... +2ms
  live-plugin-manager.PluginVm Resolved ./util as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js ... +0ms
  live-plugin-manager.PluginVm Requiring './array-set' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js... +3ms
  live-plugin-manager.PluginVm Resolved ./array-set as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/array-set.js +9ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/array-set.js ... +0ms
  live-plugin-manager.PluginVm Requiring './util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/array-set.js... +2ms
  live-plugin-manager.PluginVm Resolved ./util as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './mapping-list' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js... +0ms
  live-plugin-manager.PluginVm Resolved ./mapping-list as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/mapping-list.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/mapping-list.js ... +1ms
  live-plugin-manager.PluginVm Requiring './util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/mapping-list.js... +2ms
  live-plugin-manager.PluginVm Resolved ./util as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './lib/source-map-consumer' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/source-map.js... +0ms
  live-plugin-manager.PluginVm Resolved ./lib/source-map-consumer as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js ... +0ms
  live-plugin-manager.PluginVm Requiring './util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js... +3ms
  live-plugin-manager.PluginVm Resolved ./util as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './binary-search' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js... +0ms
  live-plugin-manager.PluginVm Resolved ./binary-search as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/binary-search.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/binary-search.js ... +0ms
  live-plugin-manager.PluginVm Requiring './array-set' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js... +4ms
  live-plugin-manager.PluginVm Resolved ./array-set as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/array-set.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/array-set.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './base64-vlq' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js... +0ms
  live-plugin-manager.PluginVm Resolved ./base64-vlq as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64-vlq.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/base64-vlq.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './quick-sort' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-consumer.js... +0ms
  live-plugin-manager.PluginVm Resolved ./quick-sort as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/quick-sort.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/quick-sort.js ... +0ms
  live-plugin-manager.PluginVm Requiring './lib/source-node' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/source-map.js... +3ms
  live-plugin-manager.PluginVm Resolved ./lib/source-node as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-node.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-node.js ... +0ms
  live-plugin-manager.PluginVm Requiring './source-map-generator' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-node.js... +2ms
  live-plugin-manager.PluginVm Resolved ./source-map-generator as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-map-generator.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/source-node.js... +16ms
  live-plugin-manager.PluginVm Resolved ./util as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/source-map/lib/util.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/compiler/visitor' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/compiler/visitor as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './handlebars/no-conflict' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars.js... +0ms
  live-plugin-manager.PluginVm Resolved ./handlebars/no-conflict as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/no-conflict.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/no-conflict.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring '../dist/cjs/handlebars/compiler/printer' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js... +1ms
  live-plugin-manager.PluginVm Resolved ../dist/cjs/handlebars/compiler/printer as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/printer.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/printer.js ... +0ms
  live-plugin-manager.PluginVm Requiring './visitor' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/printer.js... +2ms
  live-plugin-manager.PluginVm Resolved ./visitor as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/dist/cjs/handlebars/compiler/visitor.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'deep-aplus' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/promised-handlebars/lib/replaceP.js... +0ms
  live-plugin-manager.PluginVm Resolved deep-aplus as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js of deep-aplus (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js)... +64ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/deep-aplus/index.js loaded from cache +1ms
  live-plugin-manager.PluginVm Requiring 'handlebars' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +0ms
  live-plugin-manager.PluginVm Resolved handlebars as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js of handlebars (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js)... +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars/lib/index.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'handlebars-wax' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +0ms
  live-plugin-manager.PluginVm Resolved handlebars-wax as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js of handlebars-wax (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js)... +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js... +4ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'object-assign' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js... +0ms
  live-plugin-manager.PluginVm Resolved object-assign as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/object-assign/index.js of object-assign (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/object-assign/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/object-assign/index.js ... +1ms
  live-plugin-manager.PluginVm Requiring 'require-glob' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/handlebars-wax/src/handlebars-wax.js... +4ms
  live-plugin-manager.PluginVm Resolved require-glob as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js of require-glob (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js... +4ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'glob-parent' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js... +0ms
  live-plugin-manager.PluginVm Resolved glob-parent as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js of glob-parent (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js... +5ms
  live-plugin-manager.PluginVm Resolved path as static dependency +12ms
  live-plugin-manager.PluginVm Requiring 'is-glob' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js... +0ms
  live-plugin-manager.PluginVm Resolved is-glob as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-glob/index.js of is-glob (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-glob/index.js)... +17ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-glob/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'is-extglob' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-glob/index.js... +5ms
  live-plugin-manager.PluginVm Resolved is-extglob as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-extglob/index.js of is-extglob (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-extglob/index.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-extglob/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'path-dirname' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js... +6ms
  live-plugin-manager.PluginVm Resolved path-dirname as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-dirname/index.js of path-dirname (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-dirname/index.js)... +7ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-dirname/index.js ... +1ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-dirname/index.js... +4ms
  live-plugin-manager.PluginVm Resolved path as static dependency +1ms
  live-plugin-manager.PluginVm Requiring 'util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-dirname/index.js... +0ms
  live-plugin-manager.PluginVm Resolved util as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'os' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob-parent/index.js... +0ms
  live-plugin-manager.PluginVm Resolved os as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'globby' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js... +0ms
  live-plugin-manager.PluginVm Resolved globby as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js of globby (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'pinkie-promise' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js... +5ms
  live-plugin-manager.PluginVm Resolved pinkie-promise as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/pinkie-promise/index.js of pinkie-promise (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/pinkie-promise/index.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/pinkie-promise/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'array-union' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js... +7ms
  live-plugin-manager.PluginVm Resolved array-union as plugin +1ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-union/index.js of array-union (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-union/index.js)... +8ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-union/index.js ... +2ms
  live-plugin-manager.PluginVm Requiring 'array-uniq' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-union/index.js... +4ms
  live-plugin-manager.PluginVm Resolved array-uniq as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-uniq/index.js of array-uniq (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-uniq/index.js)... +6ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/array-uniq/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'object-assign' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js... +4ms
  live-plugin-manager.PluginVm Resolved object-assign as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/object-assign/index.js of object-assign (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/object-assign/index.js)... +4ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/object-assign/index.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'glob' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js... +0ms
  live-plugin-manager.PluginVm Resolved glob as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js of glob (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js)... +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +5ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'fs.realpath' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved fs.realpath as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js of fs.realpath (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js... +3ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +1ms
  live-plugin-manager.PluginVm Requiring './old.js' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js... +0ms
  live-plugin-manager.PluginVm Resolved ./old.js as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/old.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/old.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/old.js... +2ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/old.js... +12ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'minimatch' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved minimatch as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js of minimatch (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js)... +18ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js... +4ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'brace-expansion' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js... +0ms
  live-plugin-manager.PluginVm Resolved brace-expansion as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/brace-expansion/index.js of brace-expansion (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/brace-expansion/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/brace-expansion/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'concat-map' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/brace-expansion/index.js... +4ms
  live-plugin-manager.PluginVm Resolved concat-map as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/concat-map/index.js of concat-map (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/concat-map/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/concat-map/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'balanced-match' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/brace-expansion/index.js... +4ms
  live-plugin-manager.PluginVm Resolved balanced-match as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/balanced-match/index.js of balanced-match (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/balanced-match/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/balanced-match/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'inherits' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +4ms
  live-plugin-manager.PluginVm Resolved inherits as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inherits/inherits.js of inherits (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/inherits/inherits.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inherits/inherits.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inherits/inherits.js... +4ms
  live-plugin-manager.PluginVm Resolved util as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'events' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved events as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'assert' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved assert as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path-is-absolute' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved path-is-absolute as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js of path-is-absolute (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js ... +13ms
  live-plugin-manager.PluginVm Requiring './sync.js' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +5ms
  live-plugin-manager.PluginVm Resolved ./sync.js as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +2ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +1ms
  live-plugin-manager.PluginVm Requiring 'fs.realpath' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved fs.realpath as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js of fs.realpath (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js)... +21ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/fs.realpath/index.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'minimatch' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved minimatch as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js of minimatch (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js)... +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './glob.js' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved ./glob.js as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved util as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'assert' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved assert as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path-is-absolute' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved path-is-absolute as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js of path-is-absolute (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js)... +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './common.js' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/sync.js... +0ms
  live-plugin-manager.PluginVm Resolved ./common.js as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js... +3ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'minimatch' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js... +0ms
  live-plugin-manager.PluginVm Resolved minimatch as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js of minimatch (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js)... +3ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/minimatch/minimatch.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'path-is-absolute' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js... +0ms
  live-plugin-manager.PluginVm Resolved path-is-absolute as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js of path-is-absolute (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js)... +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/path-is-absolute/index.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring './common.js' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved ./common.js as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/common.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'inflight' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +1ms
  live-plugin-manager.PluginVm Resolved inflight as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inflight/inflight.js of inflight (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/inflight/inflight.js)... +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inflight/inflight.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'wrappy' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inflight/inflight.js... +26ms
  live-plugin-manager.PluginVm Resolved wrappy as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/wrappy/wrappy.js of wrappy (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/wrappy/wrappy.js)... +26ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/wrappy/wrappy.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'once' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/inflight/inflight.js... +4ms
  live-plugin-manager.PluginVm Resolved once as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js of once (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'wrappy' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js... +5ms
  live-plugin-manager.PluginVm Resolved wrappy as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/wrappy/wrappy.js of wrappy (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/wrappy/wrappy.js)... +5ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/wrappy/wrappy.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved util as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'once' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/glob/glob.js... +0ms
  live-plugin-manager.PluginVm Resolved once as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js of once (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js)... +0ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/once/once.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'pify' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/globby/index.js... +0ms
  live-plugin-manager.PluginVm Resolved pify as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/pify/index.js of pify (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/pify/index.js)... +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/pify/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'parent-module' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/require-glob/src/require-glob.js... +5ms
  live-plugin-manager.PluginVm Resolved parent-module as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/parent-module/index.js of parent-module (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/parent-module/index.js)... +5ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/parent-module/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'callsites' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/parent-module/index.js... +20ms
  live-plugin-manager.PluginVm Resolved callsites as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/callsites/index.js of callsites (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/callsites/index.js)... +20ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/callsites/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'address-format' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +4ms
  live-plugin-manager.PluginVm Resolved address-format as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/index.js of address-format (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/index.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring './locales' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/index.js... +4ms
  live-plugin-manager.PluginVm Resolved ./locales as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales.js ... +0ms
  live-plugin-manager.PluginVm Requiring './locales/dk' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales.js... +2ms
  live-plugin-manager.PluginVm Resolved ./locales/dk as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales/dk.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales/dk.js ... +0ms
  live-plugin-manager.PluginVm Requiring './locales/us' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales.js... +3ms
  live-plugin-manager.PluginVm Resolved ./locales/us as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales/us.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales/us.js ... +0ms
  live-plugin-manager.PluginVm Requiring './locales/international' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales.js... +2ms
  live-plugin-manager.PluginVm Resolved ./locales/international as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales/international.js +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/address-format/src/locales/international.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'moment' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +3ms
  live-plugin-manager.PluginVm Resolved moment as plugin +10ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/moment/moment.js of moment (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/moment/moment.js)... +25ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/moment/moment.js ... +1ms
  live-plugin-manager.PluginVm Requiring 'swag' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +8ms
  live-plugin-manager.PluginVm Resolved swag as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/swag/index.js of swag (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/swag/index.js)... +9ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/swag/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring './lib/swag' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/swag/index.js... +4ms
  live-plugin-manager.PluginVm Resolved ./lib/swag as file /Users/kmacha/Library/Application Support/kiss-my-resume/themes/swag/lib/swag.js +1ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/swag/lib/swag.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'base64-img' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +3ms
  live-plugin-manager.PluginVm Resolved base64-img as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/base64-img/base64-img.js of base64-img (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/base64-img/base64-img.js)... +8ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/base64-img/base64-img.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'file-system' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/base64-img/base64-img.js... +4ms
  live-plugin-manager.PluginVm Resolved file-system as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js of file-system (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js)... +4ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'fs' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js... +4ms
  live-plugin-manager.PluginVm Resolved fs as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'utils-extend' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js... +0ms
  live-plugin-manager.PluginVm Resolved utils-extend as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js of utils-extend (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js)... +6ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js ... +10ms
  live-plugin-manager.PluginVm Requiring 'util' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js... +4ms
  live-plugin-manager.PluginVm Resolved util as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'file-match' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js... +0ms
  live-plugin-manager.PluginVm Resolved file-match as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-match/file-match.js of file-match (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-match/file-match.js)... +12ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-match/file-match.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'utils-extend' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-match/file-match.js... +4ms
  live-plugin-manager.PluginVm Resolved utils-extend as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js of utils-extend (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js)... +4ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/base64-img/base64-img.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'ajax-request' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/base64-img/base64-img.js... +0ms
  live-plugin-manager.PluginVm Resolved ajax-request as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js of ajax-request (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js)... +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js ... +0ms
  live-plugin-manager.PluginVm Requiring 'http' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js... +4ms
  live-plugin-manager.PluginVm Resolved http as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'utils-extend' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js... +0ms
  live-plugin-manager.PluginVm Resolved utils-extend as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js of utils-extend (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js)... +4ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/utils-extend/index.js loaded from cache +1ms
  live-plugin-manager.PluginVm Requiring 'url' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js... +0ms
  live-plugin-manager.PluginVm Resolved url as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'path' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js... +0ms
  live-plugin-manager.PluginVm Resolved path as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'querystring' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js... +0ms
  live-plugin-manager.PluginVm Resolved querystring as static dependency +0ms
  live-plugin-manager.PluginVm Requiring 'file-system' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/ajax-request/index.js... +0ms
  live-plugin-manager.PluginVm Resolved file-system as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js of file-system (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js)... +1ms
  live-plugin-manager.PluginVm /Users/kmacha/Library/Application Support/kiss-my-resume/themes/file-system/file-system.js loaded from cache +0ms
  live-plugin-manager.PluginVm Requiring 'is-url' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +0ms
  live-plugin-manager.PluginVm Resolved is-url as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-url/index.js of is-url (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-url/index.js)... +0ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/is-url/index.js ... +18ms
  live-plugin-manager.PluginVm Requiring 'marked' from /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-mocha-responsive/index.js... +4ms
  live-plugin-manager.PluginVm Resolved marked as plugin +0ms
  live-plugin-manager Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/marked/lib/marked.js of marked (/Users/kmacha/Library/Application Support/kiss-my-resume/themes/marked/lib/marked.js)... +22ms
  live-plugin-manager.PluginVm Loading /Users/kmacha/Library/Application Support/kiss-my-resume/themes/marked/lib/marked.js ... +0ms
Error occurred in handler for 'process-cv': An error occurred when processing the resume: Error: Cannot require a module outside a plugin

Fail to compile (typescript)

There is an error small error in PluginManager.ts that prevents tsc from finishing the compile.

if (!this.isValidPluginName(registryInfo.name)) {
	throw new Error(`Invalid plugin name '${name}'`);
}

I believe the variable in the template string should be registryInfo.name

if (!this.isValidPluginName(registryInfo.name)) {
	throw new Error(`Invalid plugin name '${registryInfo.name}'`);
}

I didn't create a pull request since I'm not 100% sure what the intention was just glancing at the code.

pluginManager.require results in an immediate exception - 'MODULE_NOT_FOUND'

Hello,

I am trying to use the live-plugin-manager to allow users use different json-resume themes without needing to bundle them with my app. The themes are basically nodejs packages exposing a render method.

My code looks like this:

export const getLocalTheme = async (theme: IThemeEntry) => {
    try {
       await pluginManager.install(theme.name);
       const themePkg = await pluginManager.require(theme.name); // the NPM package name
        return themePkg;
    } catch (err) {
        console.log('Something went wrong', err)
    }
};

Calling getLocalTheme end in the catch block just after await pluginManager.require(theme.name) I get:

Error: Cannot find module 'fs'
    at Function.webpackEmptyContext [as resolve] (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:23417:10)
    at PluginVm.isCoreModule (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:24688:118)
    at PluginVm.sandboxResolve (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:24645:18)
    at PluginVm.sandboxRequire (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:24652:31)
    at Object.assign.resolve (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:24596:25)
    at /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-material/index.js:2:10
    at /Users/kmacha/Library/Application Support/kiss-my-resume/themes/jsonresume-theme-material/index.js:277:2
    at Script.runInContext (vm.js:127:20)
    at PluginVm.vmRunScriptInSandbox (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:24554:16)
    at PluginVm.load (/Users/kmacha/Dev/kiss-my-resume/.webpack/main/index.js:24479:22) {
  code: 'MODULE_NOT_FOUND'
}

Needles to say I am in the electron environment and I build my app with the help of electron-forge. Here is the complete output, when I started my app with the DEBUG=* flag:

Support npm authentication

Npm registry that require authentication need to pass the params object to the npm-registry-client. Params should be:

{
auth: {
                alwaysAuth: true,
                token: "your-token"
            }
}

Provide a way to pass this, maybe using the npm config already available?

Under the hood it just add an header:
headers.authorization = 'Bearer ' + credentials.token

Problem inside Electron environment (res.body.pipe is not a function)

I am trying to install a package from a private registry (verdaccio) like this:

let registryHost = ...
let token = ...

let tmpDir: string;
tmpDir = await mkdirTmp();

const manager = new PluginManager({
	cwd: tmpDir,
	pluginsPath: tmpDir,
	npmRegistryUrl: registryHost,
	npmRegistryConfig: {
		auth: {
			token: token
		}
	}
});

await manager.install('mypackage');

but it throws this error:

TypeError: res.body.pipe is not a function
    at Promise (httpUtils.js:65)
    at Promise (<anonymous>)
    at Object.<anonymous> (httpUtils.js:63)
    at Generator.next (<anonymous>)
    at fulfilled (httpUtils.js:4)
    at <anonymous>

Here is the verdaccio log:

verdaccio_1        |  info <-- 172.18.0.1 requested 'GET /PACKAGE_NAME'
verdaccio_1        |  trace--- api middleware using JWT auth token
verdaccio_1        |  trace--- [middleware/allow][access] allow for ç
verdaccio_1        |  trace--- allow access for PACKAGE_NAME
verdaccio_1        |  trace--- [auth/allow_action]: user: undefined
verdaccio_1        |  trace--- [auth/allow_action]: hasPermission? true for user: undefined
verdaccio_1        |  trace--- auth/allow_action: access granted to: undefined
verdaccio_1        |  trace--- allowed access for PACKAGE_NAME
verdaccio_1        |  info --> making request: 'GET https://registry.npmjs.org/PACKAGE_NAME'
verdaccio_1        |  http --> 404, req: 'GET https://registry.npmjs.org/PACKAGE_NAME' (streaming)
verdaccio_1        |  http --> 404, req: 'GET https://registry.npmjs.org/PACKAGE_NAME', bytes: 0/21
verdaccio_1        |  http <-- 200, user: USERNAME(172.18.0.1), req: 'GET /PACKAGE_NAME', bytes: 0/882
verdaccio_1        |  info <-- 172.18.0.1 requested 'GET /PACKAGE_NAME/-/PACKAGE_NAME-0.0.0.tgz'
verdaccio_1        |  trace--- api middleware using JWT auth token
verdaccio_1        |  trace--- [middleware/allow][access] allow for USERNAME
verdaccio_1        |  trace--- allow access for PACKAGE_NAME
verdaccio_1        |  trace--- [auth/allow_action]: user: undefined
verdaccio_1        |  trace--- [auth/allow_action]: hasPermission? true for user: undefined
verdaccio_1        |  trace--- auth/allow_action: access granted to: undefined
verdaccio_1        |  trace--- allowed access for PACKAGE_NAME
verdaccio_1        |  http <-- 200, user: USERNAME(172.18.0.1), req: 'GET /PACKAGE_NAME/-/PACKAGE_NAME-0.0.0.tgz', bytes: 0/18210

Downloading the same package with npm from the cli works.
Any idea?

Plugin manager gives an error requiring aws-sdk

I am trying to install and require the aws-sdk package at runtime and am getting the following error

UnhandledPromiseRejectionWarning: TypeError: attachOn.addNamedListener is not a function

This error does not appear when installing the aws-sdk directly and importing it. I tried with several versions of the package with the same result.

Here is some simple code to test

import {PluginManager} from "live-plugin-manager";

async function test() {
  const pluginManager = new PluginManager({
    // pluginsPath: './plugins'
  })
  await pluginManager.install('aws-sdk')
  const aws = pluginManager.require('aws-sdk')
  
  console.log(aws)
}

test()

Add download progress

It could be nice to have download progress access when install package ?
And why not each other info like, download speed ?

Support loading plugins without FS access

Use case: install plugins in Electron’s window without nodeIntegration, and hence without filesystem access.

This use case could be addressed by allowing to install in-memory.

Which, in turn, could be supported by allowing to pass a custom conforming fs implementation to PluginManager (there’re API-compatible implementations of FS like LightningFS, for example).

I know this might be out of scope of this project, but thought I’d file this just in case.

PluginManager.install is not compatible with NodeJS workers

If you use the PluginManager in a NodeJS worker, modules can no longer be downloaded because the temp folder has an undefined path.

The exception I get when I try to use the PluginManager inside a worker to install a module:

Error: ENOENT: no such file or directory, open
'D:\Projects\Example\undefined\temp\1632144135599.tgz'.

As you can see there is an 'undefined' in the path which means that a variable used to create the path is not available

If a dependencies is reinstall we should reload dependant

It should already work but probably in some scenario it doesn't ...

How to reproduce:

  • moment is already installed as module in the host
  • install package A that depend on moment (it should work)
  • install a different moment version (it should work, but check if version is correct)
  • uninstall moment (now package A gives an error that can't load moment)

Make VM sandboxing optional

I know this may be controversial, but considering that VM may not be foolproof, perhaps an option to not use VM may be useful? E.g., if the host app only allows running vetted plugins.

VM causes issues with plugins intended to run in window context. I have troubles accessing setTimeout, Blob and other native window features. Also it breaks React’s useEffect, although that can be worked around by passing the plugin useEffect implementation from the host (so far I can’t find workarounds for native window features).

(Context: I’m working on a project that uses plugins in Electron, and plugins provide both components that run in Node context and components that run in browser window context.)

Error when using require to load an ES6 module

Hi,

First off great NPM package by the way as well as your DI solution truly excellent work. Second, When I try to use the manager.require() method with my ES6 module I get the following error:
Cannot use import statement outside a module
If I install the package directly and use it with an import statement it works. I have check my package JSON sets the type to "module" which it does but I still get the error.
Is this intentional that import is not supported or is this a bug. Or am I doing something wrong here? Sample code block of my import attempt below

async installCustomPluginLibrary (customPackage, version) {
    await this._manager.installFromNpm(customPackage, version)
    try {
      const newPluginLib = this._manager.require(customPackage)
      const plugins = newPluginLib.libraryPlugins
      const installed = []
      for (let i = 0; i < plugins.length; i++) {
        const plugin = {
          parentPackage: customPackage,
          parentPackageVersion: version,
          key: plugins[i].pluginKey(),
          name: plugins[i].pluginName(),
          description: plugins[i].pluginDescription(),
          params: plugins[i].parameters
        }
        console.log('starting creation of plugin ' + plugins[i].pluginKey())
        console.log(plugin)
        moduleService.CreateModulePlugin(plugin)
        console.log('Plugin ' + plugins[i].pluginKey() + ' created in plugin store')

        installed.push(plugin)
      }
      return installed
    } catch (error) {
      console.log(error)
      throw error
    }
  }

The install works but the line const newPluginLib = this._manager.require(customPackage) fails with the error above. I am going to try changing my files from .js to .mjs to see if that works and will report back. I would appreciate some info though as to whether this is supposed to work or not.

Update:
I tried changing my ES6 module file types to .mjs and the live-plugin-manager failed with the following error: Invalid javascript file

Thanks!,

Improper Error handling

Hello, live-plugin-manager works well. Well, except it constantly throws an error: Invalid plugin name 'undefined'.
I use node v18.3.0, and npm 8.11.0, and ES modules.

Are there any reasons for PluginManager not installing plugin dependencies

Hi, thanks for the great lib.

I am having a problem that I cant seem to find an answer to. I am using this library in a cli program that I am building. So I wrapped the PluginManager class and made a library in my monorepo. Here is the npm package.

The strange thing is that I can use the library in one script, and it will download the plugin's npm package and all of it's dependencies to pluginsPath, and I when I use the same library from my cli program it only downloads the plugin and none of the dependencies.

This is some pretty weird behavior that I have spent the past 2 days debugging with no luck at all. I was hoping that maybe you could shed some light on why this issue may be occurring.

Thanks.

Dependencies resolve issue

Hi,

I have this scenario: a module/plugin with two dependencies that uses a different (major) versions are override each other and potentially throw an error if major functionality changed.

In my case is jszip (dep of selenium-webdriver) and winston-transport (that is a dep of winston) and winston itself (see below npm ls output)

When Im trying to install my plugin everything is good, but when I tried to require using live-plugin-manager I'm getting the following error:

Cannot find ./writable in plugin readable-stream

I started to debug live-plugin-manager and looks like it requires readable-stream 3.6.0 even for modules that has a different (major) version of this package and it's clear why it's broken now, in 3.6.0 they removed the writable.js file from the root of the module while others still using it.

The output of npm ls readable-stream is this:

$ npm ls readable-stream
[email protected] C:\personal\dev\github\live-plugin-manager-bug-scenario\package
+-- UNMET DEPENDENCY [email protected]
| `-- UNMET DEPENDENCY [email protected]
|   `-- UNMET DEPENDENCY [email protected]
`-- UNMET DEPENDENCY [email protected]
  +-- UNMET DEPENDENCY [email protected]
  `-- UNMET DEPENDENCY [email protected]
    `-- UNMET DEPENDENCY [email protected]

Here is a POC of my problem: https://github.com/shlomisas/live-plugin-manager-bug-scenario

It sounds quite basic to support multiple versions of the same package, so I wonder: do I do something wrong here?

TU,

Shlomi.

Tons of errors for me

I'm at esnext, "typescript": "^3.9.2", "ts-loader": "^7.0.4" - let me know if you need anything else.

WARNING in ./node_modules/live-plugin-manager/src/PluginManager.js 42:17-24
Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
 @ ./node_modules/live-plugin-manager/index.js
 @ ./src/index.tsx

WARNING in ./node_modules/live-plugin-manager/src/PluginVm.js 245:19-40
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/live-plugin-manager/src/PluginManager.js
 @ ./node_modules/live-plugin-manager/index.js
 @ ./src/index.tsx

WARNING in ./node_modules/live-plugin-manager/src/PluginVm.js 257:15-44
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/live-plugin-manager/src/PluginManager.js
 @ ./node_modules/live-plugin-manager/index.js
 @ ./src/index.tsx

ERROR in ./node_modules/fs-extra/lib/index.js
Module not found: Error: Can't resolve 'fs' in '/Users/jordanzimmerman/dev/oss/journalator/journalator-main/node_modules/fs-extra/lib'
 @ ./node_modules/fs-extra/lib/index.js 22:11-24
 @ ./node_modules/live-plugin-manager/src/fileSystem.js
 @ ./node_modules/live-plugin-manager/src/PluginManager.js
 @ ./node_modules/live-plugin-manager/index.js
 @ ./src/index.tsx

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.