@oasp/ts-merger

2.0.0 • Public • Published

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

Readme

Keywords

Package Sidebar

Install

npm i @oasp/ts-merger

Weekly Downloads

1

Version

2.0.0

License

Apache-2.0

Last publish

Collaborators

  • rgarciam
  • dario-rodriguez
  • sjimenez77
  • dalfonso
  • eastwindshak
  • maybeec
  • salfuve