Roughing out the demo app
This commit is contained in:
19
node_modules/json-server/lib/cli/utils/is.js
generated
vendored
Normal file
19
node_modules/json-server/lib/cli/utils/is.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
FILE,
|
||||
JS,
|
||||
URL
|
||||
};
|
||||
|
||||
function FILE(s) {
|
||||
return !URL(s) && /\.json$/.test(s);
|
||||
}
|
||||
|
||||
function JS(s) {
|
||||
return !URL(s) && /\.js$/.test(s);
|
||||
}
|
||||
|
||||
function URL(s) {
|
||||
return /^(http|https):/.test(s);
|
||||
}
|
||||
74
node_modules/json-server/lib/cli/utils/load.js
generated
vendored
Normal file
74
node_modules/json-server/lib/cli/utils/load.js
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
"use strict";
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
const path = require('path');
|
||||
|
||||
const request = require('request');
|
||||
|
||||
const low = require('lowdb');
|
||||
|
||||
const FileAsync = require('lowdb/adapters/FileAsync');
|
||||
|
||||
const Memory = require('lowdb/adapters/Memory');
|
||||
|
||||
const is = require('./is');
|
||||
|
||||
const chalk = require('chalk');
|
||||
|
||||
const example = {
|
||||
posts: [{
|
||||
id: 1,
|
||||
title: 'json-server',
|
||||
author: 'typicode'
|
||||
}],
|
||||
comments: [{
|
||||
id: 1,
|
||||
body: 'some comment',
|
||||
postId: 1
|
||||
}],
|
||||
profile: {
|
||||
name: 'typicode'
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function (source) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (is.FILE(source)) {
|
||||
if (!fs.existsSync(source)) {
|
||||
console.log(chalk.yellow(` Oops, ${source} doesn't seem to exist`));
|
||||
console.log(chalk.yellow(` Creating ${source} with some default data`));
|
||||
console.log();
|
||||
fs.writeFileSync(source, JSON.stringify(example, null, 2));
|
||||
}
|
||||
|
||||
resolve(low(new FileAsync(source)));
|
||||
} else if (is.URL(source)) {
|
||||
// Load remote data
|
||||
const opts = {
|
||||
url: source,
|
||||
json: true
|
||||
};
|
||||
request(opts, (err, response) => {
|
||||
if (err) return reject(err);
|
||||
resolve(low(new Memory()).setState(response.body));
|
||||
});
|
||||
} else if (is.JS(source)) {
|
||||
// Clear cache
|
||||
const filename = path.resolve(source);
|
||||
delete require.cache[filename];
|
||||
|
||||
const dataFn = require(filename);
|
||||
|
||||
if (typeof dataFn !== 'function') {
|
||||
throw new Error('The database is a JavaScript file but the export is not a function.');
|
||||
} // Run dataFn to generate data
|
||||
|
||||
|
||||
const data = dataFn();
|
||||
resolve(low(new Memory()).setState(data));
|
||||
} else {
|
||||
throw new Error(`Unsupported source ${source}`);
|
||||
}
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user