|
@@ -0,0 +1,73 @@
|
|
|
|
+import Mock from 'mockjs'
|
|
|
|
+import qs from 'qs'
|
|
|
|
+import withCredentials from './patch/withCredentials'
|
|
|
|
+
|
|
|
|
+/* 补丁 */
|
|
|
|
+withCredentials(Mock)
|
|
|
|
+
|
|
|
|
+/* Mock 默认配置 */
|
|
|
|
+Mock.setup({ timeout: '200-300' })
|
|
|
|
+
|
|
|
|
+/* 扩展 [生成器] */
|
|
|
|
+const Generator = (prop, template) => {
|
|
|
|
+ const obj = {}
|
|
|
|
+ obj[prop] = [template]
|
|
|
|
+ return Mock.mock(obj)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 扩展 [循环] */
|
|
|
|
+const Repeat = (num, itemTemplate) => Generator(`data|${num}`, itemTemplate).data
|
|
|
|
+
|
|
|
|
+const CustomExtends = {
|
|
|
|
+ Generator,
|
|
|
|
+ Repeat,
|
|
|
|
+ Mock,
|
|
|
|
+ Random: Mock.Random
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const extend = (prop, value) => {
|
|
|
|
+ CustomExtends[prop] = value
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 装配配置组 */
|
|
|
|
+const wired = ({ url, type, body }) => ({
|
|
|
|
+ method: type,
|
|
|
|
+ params: qs.parse(url.split('?').length > 1 ? url.split('?')[1] : ''),
|
|
|
|
+ body: JSON.parse(body),
|
|
|
|
+ url: qs.parse(url.split('?')[0]),
|
|
|
|
+ ...CustomExtends
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const setup = (path, method, handle) => {
|
|
|
|
+ Mock.mock(
|
|
|
|
+ RegExp(path),
|
|
|
|
+ method,
|
|
|
|
+ typeof handle === 'function' ? o => handle(wired(o)) : handle
|
|
|
|
+ )
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const load = (collection) => {
|
|
|
|
+ collection.map(({ path, method, handle }) => {
|
|
|
|
+ if (method === '*') {
|
|
|
|
+ method = [
|
|
|
|
+ 'get',
|
|
|
|
+ 'head',
|
|
|
|
+ 'post',
|
|
|
|
+ 'put',
|
|
|
|
+ 'delete',
|
|
|
|
+ 'connect',
|
|
|
|
+ 'options',
|
|
|
|
+ 'trace',
|
|
|
|
+ 'patch'
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ if (typeof method === 'string' && method.indexOf('|') > -1) method = method.split('|')
|
|
|
|
+ if (method instanceof Array) {
|
|
|
|
+ method.map(item => setup(path, item, handle))
|
|
|
|
+ } else {
|
|
|
|
+ setup(path, method, handle)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export default { setup, load, extend }
|