Skip to content

Commit

Permalink
Merge branch 'master' of github.com:adamreisnz/replace-in-file
Browse files Browse the repository at this point in the history
  • Loading branch information
adamreisnz committed Apr 25, 2020
2 parents d40d4e9 + 931bee7 commit 86bde4a
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 6 deletions.
6 changes: 5 additions & 1 deletion lib/replace-in-file.js
Expand Up @@ -65,7 +65,7 @@ function replaceInFile(config, cb) {
/**
* Sync API
*/
replaceInFile.sync = function(config) {
function replaceInFileSync(config) {

//Parse config
config = parseConfig(config);
Expand All @@ -84,5 +84,9 @@ replaceInFile.sync = function(config) {
return paths.map(path => replaceSync(path, from, to, config));
};

replaceInFile.replaceInFile = replaceInFile; // Self-reference to support named import
replaceInFile.replaceInFileSync = replaceInFileSync;
replaceInFile.sync = replaceInFileSync;

//Export
module.exports = replaceInFile;
20 changes: 19 additions & 1 deletion lib/replace-in-file.spec.js
Expand Up @@ -3,7 +3,7 @@
/**
* Dependencies
*/
const replace = require('./replace-in-file');
import replace, {sync, replaceInFile, replaceInFileSync} from './replace-in-file'
const fs = require('fs');
const writeFile = Promise.promisify(fs.writeFile);
const deleteFile = Promise.promisify(fs.unlink);
Expand Down Expand Up @@ -1151,4 +1151,22 @@ describe('Replace in file', () => {
expect(results[0].numReplacements).to.equal(0);
});
});

describe('module export', () => {
it('default module export refers to async replace implementation', () => {
expect(replace).to.be.a('function');
});

it('exports named replaceInFile, replaceInFileSync and sync from module facade', () => {
expect(replaceInFile).to.be.a('function');
expect(replaceInFileSync).to.be.a('function');
expect(sync).to.be.a('function');
});

it('exposes inner functions as own fields of replace', () => {
expect(replace.replaceInFile).to.equal(replace);
expect(replace.sync).to.equal(replaceInFileSync);
expect(replace.replaceInFileSync).to.equal(replaceInFileSync);
});
})
});
17 changes: 13 additions & 4 deletions types/index.d.ts
@@ -1,18 +1,27 @@

declare module 'replace-in-file' {
function replaceInFile(config: ReplaceInFileConfig): Promise<ReplaceResult[]>;
function replaceInFile(config: ReplaceInFileConfig, cb: (error: Error, results: ReplaceResult[]) => void): void;
export function replaceInFile(config: ReplaceInFileConfig): Promise<ReplaceResult[]>;
export function replaceInFile(config: ReplaceInFileConfig, cb: (error: Error, results: ReplaceResult[]) => void): void;
export default replaceInFile;

namespace replaceInFile {
export function sync(config: ReplaceInFileConfig): ReplaceResult[];
export function replaceInFileSync(config: ReplaceInFileConfig): ReplaceResult[];
export function replaceInFile(config: ReplaceInFileConfig): Promise<ReplaceResult[]>;
export function replaceInFile(config: ReplaceInFileConfig, cb: (error: Error, results: ReplaceResult[]) => void): void;
}

export function sync(config: ReplaceInFileConfig): ReplaceResult[];
export function replaceInFileSync(config: ReplaceInFileConfig): ReplaceResult[];

export type From = string | RegExp | FromCallback;
export type To = string | ToCallback;

export interface ReplaceInFileConfig {
files: string | string[];
ignore?: string | string[];
from: string | RegExp | string[] | RegExp[] | FromCallback;
to: string | string[] | ToCallback;
from: From | Array<From>;
to: To | Array<To>;
countMatches?: boolean;
allowEmptyPaths?: boolean,
disableGlobs?: boolean,
Expand Down

0 comments on commit 86bde4a

Please sign in to comment.