@oasp/ts-merger

2-way TypeScript Merger

Stats

StarsIssuesVersionUpdatedCreatedSize
@oasp/ts-merger
5122.0.04 years ago4 years agoMinified + gzip package size for @oasp/ts-merger in KB

Readme

TS-Merger

Generic TypeScript Merger

build status build status

Usage

let tsm = require('@oasp/ts-merger');
let mergedCode: string = tsm.merge(baseContents, pathContents, patchOverrides);

Being:

  • baseContents: contents of the base in a string
  • patchContents: contents of the patch in a string
  • patchOverrides(true/false): Being false, base will have priority in case of conflicts. With true, patch will have priority.

Example

let tsm = require('@oasp/ts-merger');
let mergedCode: string = tsm.merge(baseContents, pathContents, patchOverrides);

Features

The merger allows merging of this node kinds:

  • ImportDeclaration
  • ClassDeclaration
  • Decorator
  • FunctionDeclaration
  • MethodDeclaration
  • Parameter
  • BodyMethod
  • PropertyAssignment
  • PropertyDeclaration
  • Constructor
  • ArrayLiteralExpression
  • ObjectLiteralExpression
  • CallExpression
  • VariableAssignment

This version allows merging of TypeScript files that follow this structure:

  • Array of imports
  • Array of functions
  • Array of variables
  • Array of classes

##Examples

Base file

import a from 'b';
import f from 'g';

class Example1 {
    private propertyFromBase: string;

    oneMethod() {
        let variable = 'base';
    }
}

Patch file

import c from 'd';
import h from 'g';

class Example1 {
    private propertyFromPatch: number;

    oneMethod() {
        let variable = 'patch';
    }

    anotherMethod(){}
}

class AnotherClass {}

Resultant merged code (patchOverrides=false)

import a from 'b';
import c from 'd';
import { f, h } from 'g';

class Example1 {
    private propertyFromBase: string;
    private propertyFromPatch: number;

    oneMethod() {
        let variable = 'base';
    }

    anotherMethod(){}
}

class AnotherClass {}

Resulting merged code (patchOverrides=true)

import a from 'b';
import c from 'd';
import { f, h } from 'g';

class Example1 {
    private propertyFromBase: string;
    private propertyFromPatch: number;

    oneMethod() {
        let variable = 'patch';
    }

    anotherMethod(){}
}

class AnotherClass {}

Future version

Next releases will include merge support for:

  • InterfaceDeclaration

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.