UNPKG

1.97 kBJavaScriptView Raw
1var config = require('./config.js');
2var fs = require('fs');
3var util = require('util');
4var path = require('path');
5var walker = require('./util/walk.js');
6var debug = require('debug')('clam:getMixedMockDate');
7
8var ifDatas = {};
9var global = {};
10
11function initFromIF(){
12 var root = config.root();
13 var dataPath = path.join(root,'.clam/data');
14 if(!fs.existsSync(dataPath)){
15 return;
16 }
17 var files = walker.walkSync(dataPath);
18
19 for(var i = 0; i < files.length; i++){
20 var file = files[i];
21 if(path.extname(file) !== '.js'){
22 continue;
23 }
24 var ifData = require(file);
25 var url = '';
26 if(ifData.config && ifData.config.url){
27 url = ifData.config.url;
28 }
29 else{
30 url = path.relative(dataPath, file);
31 url = '/' + path.basename(url, '.js');
32 }
33
34 ifDatas[url] = ifData;
35 }
36
37}
38
39function init(){
40 ifDatas = {};
41 global = {};
42 var prjMockData = config.get('mock');
43 if(!prjMockData){
44 config.set('mock', {});
45 prjMockData = {};
46 }
47 global = prjMockData;
48 initFromIF();
49}
50init();
51function getMixedMockDate(param, url, isRootPage){
52 if(!param){
53 param = {};
54 }
55
56 if(global){
57 for(var prop in global){
58 if(param[prop]){
59 continue;
60 }
61 param[prop] = global[prop];
62 }
63 }
64 param['_pageUrl'] = url;
65 param['_pageBaseName'] = path.basename(url);
66 if(!isRootPage){
67 return param;
68 }
69 if(!ifDatas[url]){
70 return param;
71 }
72 var urlData = ifDatas[url].response;
73 if(urlData){
74 for(var ifProp in urlData){
75 if(param[ifProp]){
76 continue;
77 }
78 param[ifProp] = urlData[ifProp];
79 }
80 }
81 debug('页面最终内容%s',url, util.inspect(param));
82 return param;
83}
84
85exports.getMixedMockDate = getMixedMockDate;
\No newline at end of file