aegean

Include the content of imports statements down to the importing file.

Usage no npm install needed!

<script type="module">
  import aegean from 'https://cdn.skypack.dev/aegean';
</script>

README

aegean

Include the content of imports statements down to the importing file.

npm NpmLicense Build Status Known Vulnerabilities

Before:

import "./helper/add";

const result = add(1, "+", 2); // 3

After:

function add(left, operator, right) {
    let result = 0;

    switch (operator) {
        case "+":
            result = left + right;

            break;
    }

    return result;
}

const result = add(1, "+", 2); // 3

Summary

Installation

With npm:

npm install --save-dev aegean

With yarn:

yarn add --dev aegean

Usage

Example 1: simple usage

main.js

import "add";

const result = add(1, "+", 2);

console.log(result); // 3

example-1.js

const aegan = require("aegean");
const fs = require("fs");

const result = aegan("example/example-1/main.js");

fs.writeFileSync("example/example-1/inlined-main.js", result);

inlined-main.js

function add(left, operator, right) {
    let result = 0;

    switch (operator) {
        case "+":
            result = left + right;

            break;
    }

    return result;
}

const result = add(1, "+", 2);

console.log(result); // 3

Example 2: importing file with nested imports

is_string.js

function is_string(mixed) {
    return mixed !== null && mixed !== undefined && mixed.constructor === String;
}

echo.js

import "is_string";

function echo(mixed) {
    if (is_string(mixed) === false) {
        throw new Error("echo expects parameter 1 to be a string");
    }

    console.log(mixed);
}

main.js

import "echo";

echo("hello world");

example-2.js

const fs = require("fs");
const aegean = require("aegean");

const result = aegean(__dirname + "/example-2/main.js");

fs.writeFileSync(__dirname + "/example-2/inlined-main.js", result);

inlined-main.js

function is_string(mixed) {
    return mixed !== null && mixed !== undefined && mixed.constructor === String;
}

function echo(mixed) {
    if (is_string(mixed) === false) {
        throw new Error("echo expects parameter 1 to be a string");
    }

    console.log(mixed);
}

echo("hello world");

Example 3: importing a node module

main.js

import "bootstrap/dist/js/bootstrap";

example-3.js

const aegean = require("aegean");
const fs = require("fs");

const bootstrap4 = aegean(__dirname + "/main.js");

fs.writeFileSync(__dirname + "/inlined.js", bootstrap4);

inlined.js

/*!
  * Bootstrap v4.2.1 (https://getbootstrap.com/)
  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :

  ...

Supported imports methods

import "./path/to/local/file";
import "./path/to/local/file.js";
import "path/to/node/module/file";
import "path/to/node/module/file.js";

Contributing

  1. Install dependencies
npm install

or

yarn install
  1. Light on dev (transpiling typescript to javascript)
npm run dev

or

yarn dev
  1. Add your feature on /src/main.ts
  2. Append your tests on /test/aegean.js
  3. Run tests
npm run test

or

yarn test