Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add typescript definition file. #35

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Installation
API
---

### readFile(filename, [options], callback)
### readFile(filename, callback, [options])

`options`: Pass in any `fs.readFile` options or set `reviver` for a [JSON reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse).

Expand Down Expand Up @@ -54,7 +54,7 @@ console.dir(jsonfile.readFileSync(file))
```


### writeFile(filename, [options], callback)
### writeFile(filename, obj, callback, [options])

`options`: Pass in any `fs.writeFile` options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces`.

Expand All @@ -78,13 +78,13 @@ var jsonfile = require('jsonfile')
var file = '/tmp/data.json'
var obj = {name: 'JP'}

jsonfile.writeFile(file, obj, {spaces: 2}, function(err) {
jsonfile.writeFile(file, obj, function(err) {
console.error(err)
})
}, {spaces: 2})
```


### writeFileSync(filename, [options])
### writeFileSync(filename, obj, [options])

`options`: Pass in any `fs.writeFileSync` options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces`.

Expand Down
14 changes: 4 additions & 10 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
var fs = require('fs')

function readFile (file, options, callback) {
if (callback == null) {
callback = options
options = {}
}
function readFile (file, callback, options) {
options = options || {}

fs.readFile(file, options, function (err, data) {
if (err) return callback(err)
Expand Down Expand Up @@ -42,11 +39,8 @@ function readFileSync (file, options) {
}
}

function writeFile (file, obj, options, callback) {
if (callback == null) {
callback = options
options = {}
}
function writeFile (file, obj, callback, options) {
options = options || {}

var spaces = typeof options === 'object' && options !== null
? 'spaces' in options
Expand Down
7 changes: 7 additions & 0 deletions jsonfile.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
declare module "jsonfile" {
var spaces: number;
function readFile(filename: string, callback:Function, options?:any);
function readFileSync(filename: string, options?:any);
function writeFile(filename: string, obj:any, callback:Function, options?:any);
function writeFileSync(filename: string, obj:any, options?:any);
}
2 changes: 1 addition & 1 deletion test/read-file-sync.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ describe('+ readFileSync()', function () {
jf.readFileSync(file)
}, function (err) {
assert(err instanceof Error)
assert(err.message.match(file))
assert(err.message.match(/somefile\.json/))
return true
})
})
Expand Down
12 changes: 6 additions & 6 deletions test/read-file.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('+ readFile()', function () {

jf.readFile(file, function (err, obj2) {
assert(err instanceof Error)
assert(err.message.match(file))
assert(err.message.match(/somefile\.json/))
done()
})
})
Expand All @@ -61,13 +61,13 @@ describe('+ readFile()', function () {
}

fs.writeFileSync(file, JSON.stringify(obj))
jf.readFile(file, {reviver: sillyReviver}, function (err, data) {
jf.readFile(file, function (err, data) {
assert.ifError(err)
assert.strictEqual(data.name, 'jp')
assert(data.day instanceof Date)
assert.strictEqual(data.day.toISOString(), '2015-06-19T11:41:26.815Z')
done()
})
}, {reviver: sillyReviver})
})
})

Expand All @@ -80,7 +80,7 @@ describe('+ readFile()', function () {
}
fs.writeFileSync(file, JSON.stringify(obj))

jf.readFile(file, null, function (err) {
jf.readFile(file, function (err) {
assert.ifError(err)
assert.strictEqual(obj.name, 'jp')
done()
Expand All @@ -97,11 +97,11 @@ describe('+ readFile()', function () {
}
fs.writeFileSync(file, JSON.stringify(obj))

jf.readFile(file, 'utf8', function (err) {
jf.readFile(file, function (err) {
assert.ifError(err)
assert.strictEqual(obj.name, 'jp')
done()
})
}, 'utf8')
})
})
})
16 changes: 8 additions & 8 deletions test/write-file.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,52 +70,52 @@ describe('+ writeFile()', function () {
reg: new RegExp(/hello/g)
}

jf.writeFile(file, obj, {replacer: sillyReplacer}, function (err) {
jf.writeFile(file, obj, function (err) {
assert.ifError(err)

var data = JSON.parse(fs.readFileSync(file))
assert.strictEqual(data.name, 'jp')
assert.strictEqual(typeof data.reg, 'string')
assert.strictEqual(data.reg, 'regex:/hello/g')
done()
})
}, {replacer: sillyReplacer})
})
})

describe('> when passing null and callback', function () {
it('should not throw an error', function (done) {
var file = path.join(TEST_DIR, 'somefile.json')
var obj = { name: 'jp' }
jf.writeFile(file, obj, null, function (err) {
jf.writeFile(file, obj, function (err) {
assert.ifError(err)
done()
})
}, null)
})
})

describe('> when spaces passed as an option', function () {
it('should write file with spaces', function (done) {
var file = path.join(TEST_DIR, 'somefile.json')
var obj = { name: 'jp' }
jf.writeFile(file, obj, {spaces: 8}, function (err) {
jf.writeFile(file, obj, function (err) {
assert.ifError(err)
var data = fs.readFileSync(file, 'utf8')
assert.strictEqual(data, JSON.stringify(obj, null, 8) + '\n')
done()
})
}, {spaces: 8})
})
})

describe('> when passing encoding string as options', function () {
it('should not error', function (done) {
var file = path.join(TEST_DIR, 'somefile.json')
var obj = { name: 'jp' }
jf.writeFile(file, obj, 'utf8', function (err) {
jf.writeFile(file, obj, function (err) {
assert.ifError(err)
var data = fs.readFileSync(file, 'utf8')
assert.strictEqual(data, JSON.stringify(obj) + '\n')
done()
})
}, 'utf8')
})
})
})