123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 'use strict';
- var path = require('path');
- var _mkdirp;
- function getMkdirp() {
- if (!_mkdirp) {
- _mkdirp = require('mkdirp');
- }
- return _mkdirp;
- }
- var _fs;
- function getFS() {
- if (!_fs) {
- _fs = require('mz/fs');
- }
- return _fs;
- }
- exports.strictJSONParse = function (str) {
- var obj = JSON.parse(str);
- if (!obj || typeof obj !== 'object') {
- throw new Error('JSON string is not object');
- }
- return obj;
- };
- exports.readJSONSync = function(filepath) {
- if (!getFS().existsSync(filepath)) {
- throw new Error(filepath + ' is not found');
- }
- return JSON.parse(getFS().readFileSync(filepath));
- };
- exports.writeJSONSync = function(filepath, str, options) {
- options = options || {};
- if (!('space' in options)) {
- options.space = 2;
- }
- getMkdirp().sync(path.dirname(filepath));
- if (typeof str === 'object') {
- str = JSON.stringify(str, options.replacer, options.space) + '\n';
- }
- getFS().writeFileSync(filepath, str);
- };
- exports.readJSON = function(filepath) {
- return getFS().exists(filepath)
- .then(function(exists) {
- if (!exists) {
- throw new Error(filepath + ' is not found');
- }
- return getFS().readFile(filepath);
- })
- .then(function(buf) {
- return JSON.parse(buf);
- });
- };
- exports.writeJSON = function(filepath, str, options) {
- options = options || {};
- if (!('space' in options)) {
- options.space = 2;
- }
- if (typeof str === 'object') {
- str = JSON.stringify(str, options.replacer, options.space) + '\n';
- }
- return mkdir(path.dirname(filepath))
- .then(function() {
- return getFS().writeFile(filepath, str);
- });
- };
- function mkdir(dir) {
- return new Promise(function(resolve, reject) {
- getMkdirp()(dir, function(err) {
- if (err) {
- return reject(err);
- }
- resolve();
- });
- });
- }
|