@ibiz-template/runtime 0.6.5 → 0.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +177 -29
- package/dist/index.system.min.js +1 -1
- package/out/command/app/open-app-view/open-app-view.d.ts.map +1 -1
- package/out/command/app/open-app-view/open-app-view.js +3 -0
- package/out/controller/common/view/view.controller.d.ts.map +1 -1
- package/out/controller/common/view/view.controller.js +3 -0
- package/out/controller/control/form/form-detail/form-button/form-button.controller.d.ts +36 -0
- package/out/controller/control/form/form-detail/form-button/form-button.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-button/form-button.controller.js +66 -0
- package/out/controller/control/report-panel/report-panel.service.d.ts.map +1 -1
- package/out/controller/control/report-panel/report-panel.service.js +1 -2
- package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
- package/out/controller/control/toolbar/toolbar.controllerr.js +2 -1
- package/out/controller/control/wizard-panel/wizard-panel.controller.js +1 -1
- package/out/controller/utils/data-file-util/data-file-util.js +2 -2
- package/out/engine/md-view.engine.d.ts +7 -0
- package/out/engine/md-view.engine.d.ts.map +1 -1
- package/out/engine/md-view.engine.js +9 -0
- package/out/engine/view-base.engine.d.ts +7 -0
- package/out/engine/view-base.engine.d.ts.map +1 -1
- package/out/engine/view-base.engine.js +7 -0
- package/out/interface/engine/i-view.engine.d.ts +7 -0
- package/out/interface/engine/i-view.engine.d.ts.map +1 -1
- package/out/interface/provider/i-error-view.provider.d.ts +19 -0
- package/out/interface/provider/i-error-view.provider.d.ts.map +1 -0
- package/out/interface/provider/i-error-view.provider.js +1 -0
- package/out/interface/provider/index.d.ts +1 -0
- package/out/interface/provider/index.d.ts.map +1 -1
- package/out/model/utils/util.d.ts +12 -1
- package/out/model/utils/util.d.ts.map +1 -1
- package/out/model/utils/util.js +37 -0
- package/out/register/helper/error-view-register.d.ts +22 -0
- package/out/register/helper/error-view-register.d.ts.map +1 -0
- package/out/register/helper/error-view-register.js +32 -0
- package/out/register/helper/index.d.ts +1 -0
- package/out/register/helper/index.d.ts.map +1 -1
- package/out/register/helper/index.js +1 -0
- package/out/service/service/entity/de.service.js +3 -3
- package/out/service/service/entity/method/de-action.d.ts.map +1 -1
- package/out/service/service/entity/method/de-action.js +17 -12
- package/out/service/service/entity/method/method.d.ts +8 -1
- package/out/service/service/entity/method/method.d.ts.map +1 -1
- package/out/service/service/entity/method/method.js +10 -3
- package/out/service/service/file/file.service.js +1 -1
- package/out/ui-action/provider/front-ui-action-provider.d.ts.map +1 -1
- package/out/ui-action/provider/front-ui-action-provider.js +6 -6
- package/package.json +4 -5
|
@@ -48,35 +48,38 @@ export class DEActionMethod extends Method {
|
|
|
48
48
|
if (data && !this.isLocalMode) {
|
|
49
49
|
data = await this.inputHandle(context, data);
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
const methodTag = this.method.actionTag
|
|
52
|
+
? this.method.actionTag.toUpperCase()
|
|
53
|
+
: this.method.codeName.toUpperCase();
|
|
54
|
+
switch (methodTag) {
|
|
55
|
+
case 'CREATE':
|
|
53
56
|
result = await this.create(context, data, params || {}, header);
|
|
54
57
|
break;
|
|
55
|
-
case '
|
|
58
|
+
case 'GET':
|
|
56
59
|
result = await this.get(context, params, header);
|
|
57
60
|
break;
|
|
58
|
-
case '
|
|
61
|
+
case 'GETDRAFT':
|
|
59
62
|
result = await this.getDraft(context, params, header);
|
|
60
63
|
break;
|
|
61
|
-
case '
|
|
64
|
+
case 'REMOVE':
|
|
62
65
|
result = await this.remove(context, params);
|
|
63
66
|
break;
|
|
64
|
-
case '
|
|
67
|
+
case 'UPDATE':
|
|
65
68
|
result = await this.update(context, data, params, header);
|
|
66
69
|
break;
|
|
67
|
-
case '
|
|
70
|
+
case 'CREATETEMP':
|
|
68
71
|
result = await this.createTemp(context, data);
|
|
69
72
|
break;
|
|
70
|
-
case '
|
|
73
|
+
case 'GETTEMP':
|
|
71
74
|
result = await this.getTemp(context, data);
|
|
72
75
|
break;
|
|
73
|
-
case '
|
|
76
|
+
case 'GETDRAFTTEMP':
|
|
74
77
|
result = await this.getDraftTemp(context, params);
|
|
75
78
|
break;
|
|
76
|
-
case '
|
|
79
|
+
case 'REMOVETEMP':
|
|
77
80
|
result = await this.removeTemp(context, data);
|
|
78
81
|
break;
|
|
79
|
-
case '
|
|
82
|
+
case 'UPDATETEMP':
|
|
80
83
|
result = await this.updateTemp(context, data);
|
|
81
84
|
break;
|
|
82
85
|
default: {
|
|
@@ -194,7 +197,9 @@ export class DEActionMethod extends Method {
|
|
|
194
197
|
return this.getDraftTemp(context, params);
|
|
195
198
|
}
|
|
196
199
|
const path = this.calcPath(context);
|
|
197
|
-
const res = await this.app.net.get(`${path}/getdraft`, params, header);
|
|
200
|
+
// const res = await this.app.net.get(`${path}/getdraft`, params, header);
|
|
201
|
+
// 讲固定请求方法调整为指定的请求路径
|
|
202
|
+
const res = await this.app.net.get(this.mergeRequestPath(path, this.method.requestPath), params, header);
|
|
198
203
|
res.data = await this.result.handle(context, res.data);
|
|
199
204
|
return res;
|
|
200
205
|
}
|
|
@@ -70,7 +70,14 @@ export declare abstract class Method {
|
|
|
70
70
|
* @return {*} {Promise<HttpResponse<any>>}
|
|
71
71
|
*/
|
|
72
72
|
protected request(path: string, context: IContext, data?: IData | IData[], params?: IParams, header?: IData): Promise<HttpResponse<any>>;
|
|
73
|
-
|
|
73
|
+
/**
|
|
74
|
+
* 合并请求路径
|
|
75
|
+
* @author lionlau
|
|
76
|
+
* @param path
|
|
77
|
+
* @param methodName 方法名,以 / 开始
|
|
78
|
+
* @returns
|
|
79
|
+
*/
|
|
80
|
+
protected mergeRequestPath(path: string, methodName?: string): string;
|
|
74
81
|
/**
|
|
75
82
|
* 根据上下文计算当前请求路径
|
|
76
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/method.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;;;;;;GAOG;AACH,8BAAsB,MAAM;IAiCxB,SAAS,CAAC,OAAO,EAAE,aAAa;IAChC,SAAS,CAAC,MAAM,EAAE,cAAc;IAChC,SAAS,CAAC,MAAM,EAAE,YAAY;IAC9B,SAAS,CAAC,WAAW,EAAE,OAAO;IAnChC,SAAS,CAAC,GAAG,EAAG,WAAW,CAAC;IAE5B;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAG,WAAW,CAAC;IAE9B;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAG,YAAY,CAAC;IAEhC;;;;;;;;OAQG;gBAES,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,WAAW,GAAE,OAAe;IAOxC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,CACX,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,KAAK,GACb,OAAO,CAAC,YAAY,CAAC;IAExB;;;;;;;;;;;OAWG;cACa,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,KAAK,GAEb,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAkD7B,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/method.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;;;;;;GAOG;AACH,8BAAsB,MAAM;IAiCxB,SAAS,CAAC,OAAO,EAAE,aAAa;IAChC,SAAS,CAAC,MAAM,EAAE,cAAc;IAChC,SAAS,CAAC,MAAM,EAAE,YAAY;IAC9B,SAAS,CAAC,WAAW,EAAE,OAAO;IAnChC,SAAS,CAAC,GAAG,EAAG,WAAW,CAAC;IAE5B;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAG,WAAW,CAAC;IAE9B;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAG,YAAY,CAAC;IAEhC;;;;;;;;OAQG;gBAES,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,WAAW,GAAE,OAAe;IAOxC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,CACX,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,KAAK,GACb,OAAO,CAAC,YAAY,CAAC;IAExB;;;;;;;;;;;OAWG;cACa,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,KAAK,GAEb,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAkD7B;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrE;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM;IAM7C;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CACpB,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,GAAG,WAAW,GAClD,WAAW,GAAG,WAAW,EAAE;CAG/B"}
|
|
@@ -45,7 +45,7 @@ export class Method {
|
|
|
45
45
|
async request(path, context, data, params, header) {
|
|
46
46
|
const { actionType, requestMethod } = this.method;
|
|
47
47
|
if (actionType === 'REMOTE') {
|
|
48
|
-
const methodName = this.method.
|
|
48
|
+
const methodName = this.method.requestPath;
|
|
49
49
|
let res = null;
|
|
50
50
|
switch (requestMethod) {
|
|
51
51
|
case 'POST':
|
|
@@ -73,8 +73,15 @@ export class Method {
|
|
|
73
73
|
}
|
|
74
74
|
throw new RuntimeModelError(this.method, `未支持的行为类型[${actionType}]`);
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* 合并请求路径
|
|
78
|
+
* @author lionlau
|
|
79
|
+
* @param path
|
|
80
|
+
* @param methodName 方法名,以 / 开始
|
|
81
|
+
* @returns
|
|
82
|
+
*/
|
|
76
83
|
mergeRequestPath(path, methodName) {
|
|
77
|
-
return `${path}
|
|
84
|
+
return methodName ? `${path}${methodName}` : `${path}`;
|
|
78
85
|
}
|
|
79
86
|
/**
|
|
80
87
|
* 根据上下文计算当前请求路径
|
|
@@ -86,7 +93,7 @@ export class Method {
|
|
|
86
93
|
* @return {*} {string} 拼接结果说明: /祖父实体/祖父实体主键/爷爷实体/爷爷实体主键/父实体/父实体主键/当前实体
|
|
87
94
|
*/
|
|
88
95
|
calcPath(context) {
|
|
89
|
-
const curPath = `/${this.entity.
|
|
96
|
+
const curPath = `/${this.entity.deapicodeName2}`;
|
|
90
97
|
const resPath = calcResPath(context, this.entity);
|
|
91
98
|
return resPath + curPath;
|
|
92
99
|
}
|
|
@@ -22,7 +22,7 @@ export class FileService {
|
|
|
22
22
|
*/
|
|
23
23
|
exportData(dataExport, fetchAction, context, params) {
|
|
24
24
|
const resPath = calcResPath(context, this.model);
|
|
25
|
-
const exportUrl = `${resPath}/${this.model.
|
|
25
|
+
const exportUrl = `${resPath}/${this.model.deapicodeName2}/exportdata/${fetchAction.toLowerCase()}/?srfexporttag=${dataExport.codeName}`;
|
|
26
26
|
return ibiz.net.request(exportUrl, {
|
|
27
27
|
method: 'post',
|
|
28
28
|
data: params,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-ui-action-provider.d.ts","sourceRoot":"","sources":["../../../src/ui-action/provider/front-ui-action-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,oBAAoB;IACvD,UAAU,CACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC;IAiE3B;;;;;;;;OAQG;IAEH,SAAS,CAAC,OAAO,CACf,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,eAAe;IAalB;;;;;;OAMG;cACa,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;IAiEhB;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC;IA4C3B;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"front-ui-action-provider.d.ts","sourceRoot":"","sources":["../../../src/ui-action/provider/front-ui-action-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,oBAAoB;IACvD,UAAU,CACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC;IAiE3B;;;;;;;;OAQG;IAEH,SAAS,CAAC,OAAO,CACf,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,eAAe;IAalB;;;;;;OAMG;cACa,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;IAiEhB;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC;IA4C3B;;;;;;OAMG;cACa,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC;CAmDjB"}
|
|
@@ -87,7 +87,7 @@ export class FrontUIActionProvider extends UIActionProviderBase {
|
|
|
87
87
|
* @return {*}
|
|
88
88
|
*/
|
|
89
89
|
async executePrint(action, args) {
|
|
90
|
-
var _a, _b
|
|
90
|
+
var _a, _b;
|
|
91
91
|
// 处理参数
|
|
92
92
|
const { resultContext, resultParams } = await this.handleParams(action, args.context, args.data, args.params);
|
|
93
93
|
const appDataEntity = await ibiz.hub.getAppDataEntity(action.appDataEntityId, action.appId);
|
|
@@ -99,7 +99,7 @@ export class FrontUIActionProvider extends UIActionProviderBase {
|
|
|
99
99
|
if (resultContext &&
|
|
100
100
|
resultContext[appDataEntity.codeName.toLowerCase()]) {
|
|
101
101
|
// TODO 临时写死printdata, 非标准,后续优化
|
|
102
|
-
requestUrl += `/${
|
|
102
|
+
requestUrl += `/${appDataEntity.deapicodeName2}/printdata/${resultContext[appDataEntity.codeName.toLowerCase()]}`;
|
|
103
103
|
}
|
|
104
104
|
else {
|
|
105
105
|
throw new RuntimeError('没有找到数据主键');
|
|
@@ -114,9 +114,9 @@ export class FrontUIActionProvider extends UIActionProviderBase {
|
|
|
114
114
|
if (resultParams && resultParams.srfcontenttype) {
|
|
115
115
|
// 获取文件
|
|
116
116
|
const disposition = res.headers['content-disposition'];
|
|
117
|
-
const filename = (
|
|
117
|
+
const filename = (_b = disposition
|
|
118
118
|
.split(';')
|
|
119
|
-
.find((str) => str.indexOf('filename=') !== -1)) === null ||
|
|
119
|
+
.find((str) => str.indexOf('filename=') !== -1)) === null || _b === void 0 ? void 0 : _b.slice(9);
|
|
120
120
|
const href = URL.createObjectURL(res.data);
|
|
121
121
|
const a = document.createElement('a');
|
|
122
122
|
a.href = href;
|
|
@@ -184,7 +184,7 @@ export class FrontUIActionProvider extends UIActionProviderBase {
|
|
|
184
184
|
* @return {*}
|
|
185
185
|
*/
|
|
186
186
|
async executeDataExport(action, args) {
|
|
187
|
-
var _a
|
|
187
|
+
var _a;
|
|
188
188
|
// 处理参数
|
|
189
189
|
const { resultParams } = await this.handleParams(action, args.context, args.data, args.params);
|
|
190
190
|
const appDataEntity = await ibiz.hub.getAppDataEntity(action.appDataEntityId, action.appId);
|
|
@@ -193,7 +193,7 @@ export class FrontUIActionProvider extends UIActionProviderBase {
|
|
|
193
193
|
});
|
|
194
194
|
if (appDEDataExport) {
|
|
195
195
|
// TODO 临时写死fetchdefault,应该从appDEDataExport的主表格上获取加载行为,但现在缺主表格模型,后续优化
|
|
196
|
-
const url = `/${
|
|
196
|
+
const url = `/${appDataEntity.deapicodeName2}/exportdata/fetchdefault?srfexporttag=${appDEDataExport.codeName}`;
|
|
197
197
|
// 参数
|
|
198
198
|
const params = Object.assign(Object.assign({ page: 0, size: appDEDataExport.maxRowCount ? appDEDataExport.maxRowCount : 1000 }, args.params), resultParams);
|
|
199
199
|
const res = await ibiz.net.request(url, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/runtime",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.8",
|
|
4
4
|
"description": "控制器包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "out/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@ibiz-template/core": "^0.6.3",
|
|
39
|
-
"@ibiz/model-core": "^0.1.
|
|
39
|
+
"@ibiz/model-core": "^0.1.15",
|
|
40
40
|
"@types/animejs": "^3.1.12",
|
|
41
41
|
"@types/path-browserify": "^1.0.2",
|
|
42
42
|
"@types/qs": "^6.9.11",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"@ibiz-template/core": "^0.6.0",
|
|
57
|
-
"@ibiz/model-core": "^0.1.
|
|
57
|
+
"@ibiz/model-core": "^0.1.15",
|
|
58
58
|
"async-validator": "^4.2.5",
|
|
59
59
|
"dayjs": "^1.11.7",
|
|
60
60
|
"echarts": "^5.4.3",
|
|
@@ -65,6 +65,5 @@
|
|
|
65
65
|
"qs": "^6.11.0",
|
|
66
66
|
"qx-util": "^0.4.8",
|
|
67
67
|
"ramda": "^0.29.0"
|
|
68
|
-
}
|
|
69
|
-
"gitHead": "cce7f66fe82ec7d7e111deef965c619b0cc0a16b"
|
|
68
|
+
}
|
|
70
69
|
}
|