@ray-js/api 1.5.3 → 1.5.5

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.
@@ -71,6 +71,13 @@ type CookArg = {
71
71
  dpCode: string;
72
72
  dpValue: string;
73
73
  };
74
+ type CustomPropertiesItem = {
75
+ bizCode: string;
76
+ name: string;
77
+ desc: string;
78
+ fileUrl: string;
79
+ bizOrder: number;
80
+ };
74
81
  /**
75
82
  * 自定义食谱信息
76
83
  */
@@ -87,6 +94,7 @@ type MenuCustomInfo = {
87
94
  cookTime?: number;
88
95
  stepInfoParams: StepInfoParam[];
89
96
  cookStepParams: CookStepParam[];
97
+ customProperties?: CustomPropertiesItem[];
90
98
  };
91
99
  /**
92
100
  * AddCustomRecipeParams - 自定义食谱添加请求参数
@@ -140,6 +148,7 @@ type UpdateMenuCustomInfo = {
140
148
  cookTime?: number;
141
149
  stepInfoParams: UpdateStepInfoParam[];
142
150
  cookStepParams: UpdateCookStepParam[];
151
+ customProperties?: CustomPropertiesItem[];
143
152
  };
144
153
  /**
145
154
  * UpdateCustomRecipeParams - 自定义食谱更新请求参数
@@ -90,31 +90,40 @@ import { addCustomRecipe } from '@ray-js/ray'
90
90
 
91
91
  **MenuCustomInfo**
92
92
 
93
- | 属性 | 类型 | 说明 |
94
- | -------------- | ----------------- | ------------ |
95
- | mainImages | `string[]` | 主图数组 |
96
- | name | `string` | 食谱名称 |
97
- | desc | `string` | 食谱简介 |
98
- | productGroupId | `string` | 产品组 ID |
99
- | isPublish | `number` | 是否公开 |
100
- | cookType | `number` | 烹饪类型 |
101
- | foods | `string` | 食材 |
102
- | information | `string` | 相关常识 |
103
- | xyxk | `string` | 相宜相克 |
104
- | cookTime | `number` | 烹饪时间 |
105
- | stepInfoParams | `StepInfoParam[]` | 图文步骤 |
106
- | cookStepParams | `CookStepParam[]` | 烹饪步骤信息 |
107
-
108
- 下面是根据您提供的类型定义生成的表格:
109
-
110
- ### StepInfoParam
93
+ | 属性 | 类型 | 可选性 | 说明 |
94
+ | ---------------- | ------------------------ | ------ | ----------------------------------- |
95
+ | mainImages | `string[]` | 必须 | 主图数组 |
96
+ | name | `string` | 必须 | 食谱名称 |
97
+ | desc | `string` | 可选 | 食谱简介 |
98
+ | productGroupId | `string` | 必须 | 产品组 ID |
99
+ | isPublish | `number` | 可选 | 是否公开 |
100
+ | cookType | `number` | 必须 | 烹饪类型 |
101
+ | foods | `string` | 可选 | 食材 |
102
+ | information | `string` | 可选 | 相关常识 |
103
+ | xyxk | `string` | 可选 | 相宜相克 |
104
+ | cookTime | `number` | 可选 | 烹饪时间 |
105
+ | stepInfoParams | `StepInfoParam[]` | 必须 | 图文步骤 |
106
+ | cookStepParams | `CookStepParam[]` | 必须 | 烹饪步骤信息 |
107
+ | customProperties | `CustomPropertiesItem[]` | 可选 | 自定义属性 `@ray-js/ray^1.5.5` 新增 |
108
+
109
+ **CustomPropertiesItem**
110
+
111
+ | 字段 | 类型 | 可选性 | 描述 |
112
+ | -------- | ------ | ------ | ------------------ |
113
+ | bizCode | string | 必须 | 自定义属性 code |
114
+ | name | string | 必须 | 自定义属性名称 |
115
+ | desc | string | 必须 | 自定义属性内容 |
116
+ | fileUrl | string | 必须 | 自定义属性文件 URL |
117
+ | bizOrder | string | 必须 | 自定义属性排序 |
118
+
119
+ **StepInfoParam**
111
120
 
112
121
  | 字段 | 类型 | 可选性 | 描述 |
113
122
  | ------- | ------ | ------ | ------------ |
114
123
  | stepImg | string | 可选 | 步骤图片路径 |
115
124
  | desc | string | 必须 | 步骤描述 |
116
125
 
117
- ### CookStepParam 表格
126
+ **CookStepParam**
118
127
 
119
128
  | 字段 | 类型 | 可选性 | 描述 |
120
129
  | ---------- | --------- | ------ | ------------ |
@@ -124,7 +133,7 @@ import { addCustomRecipe } from '@ray-js/ray'
124
133
  | finishCtrl | string | 必须 | 完成执行选项 |
125
134
  | cookArgs | CookArg[] | 必须 | 烹饪参数数组 |
126
135
 
127
- ### CookArg 表格
136
+ **CookArg**
128
137
 
129
138
  | 字段 | 类型 | 可选性 | 描述 |
130
139
  | ------- | ------ | ------ | ------- |
@@ -169,23 +178,34 @@ import { updateCustomRecipe } from '@ray-js/ray'
169
178
 
170
179
  **UpdateMenuCustomInfo**
171
180
 
172
- | 属性 | 类型 | 说明 |
173
- | -------------- | ----------------------- | ------------ |
174
- | id | `number` | 食谱 ID |
175
- | mainImages | `string[]` | 主图数组 |
176
- | name | `string` | 食谱名称 |
177
- | desc | `string` | 食谱简介 |
178
- | productGroupId | `string` | 产品组 ID |
179
- | isPublish | `number` | 是否公开 |
180
- | cookType | `number` | 烹饪类型 |
181
- | foods | `string` | 食材 |
182
- | information | `string` | 相关常识 |
183
- | xyxk | `string` | 相宜相克 |
184
- | cookTime | `number` | 烹饪时间 |
185
- | stepInfoParams | `UpdateStepInfoParam[]` | 图文步骤 |
186
- | cookStepParams | `UpdateCookStepParam[]` | 烹饪步骤信息 |
187
-
188
- ### UpdateStepInfoParam
181
+ | 属性 | 类型 | 说明 |
182
+ | ---------------- | ------------------------ | ------------ | ----------------------------------- |
183
+ | id | `number` | 食谱 ID |
184
+ | mainImages | `string[]` | 主图数组 |
185
+ | name | `string` | 食谱名称 |
186
+ | desc | `string` | 食谱简介 |
187
+ | productGroupId | `string` | 产品组 ID |
188
+ | isPublish | `number` | 是否公开 |
189
+ | cookType | `number` | 烹饪类型 |
190
+ | foods | `string` | 食材 |
191
+ | information | `string` | 相关常识 |
192
+ | xyxk | `string` | 相宜相克 |
193
+ | cookTime | `number` | 烹饪时间 |
194
+ | stepInfoParams | `UpdateStepInfoParam[]` | 图文步骤 |
195
+ | cookStepParams | `UpdateCookStepParam[]` | 烹饪步骤信息 |
196
+ | customProperties | `CustomPropertiesItem[]` | 可选 | 自定义属性 `@ray-js/ray^1.5.5` 新增 |
197
+
198
+ **CustomPropertiesItem**
199
+
200
+ | 字段 | 类型 | 可选性 | 描述 |
201
+ | -------- | ------ | ------ | ------------------ |
202
+ | bizCode | string | 必须 | 自定义属性 code |
203
+ | name | string | 必须 | 自定义属性名称 |
204
+ | desc | string | 必须 | 自定义属性内容 |
205
+ | fileUrl | string | 必须 | 自定义属性文件 URL |
206
+ | bizOrder | string | 必须 | 自定义属性排序 |
207
+
208
+ **UpdateStepInfoParam**
189
209
 
190
210
  | 字段 | 类型 | 可选性 | 描述 |
191
211
  | ------- | ------ | ------ | ------------ |
@@ -193,7 +213,7 @@ import { updateCustomRecipe } from '@ray-js/ray'
193
213
  | stepImg | string | 可选 | 步骤图片路径 |
194
214
  | desc | string | 必须 | 步骤描述 |
195
215
 
196
- ### UpdateCookStepParam 表格
216
+ **UpdateCookStepParam**
197
217
 
198
218
  | 字段 | 类型 | 可选性 | 描述 |
199
219
  | ---------- | --------- | ------ | ------------ |
@@ -203,7 +223,7 @@ import { updateCustomRecipe } from '@ray-js/ray'
203
223
  | finishCtrl | string | 必须 | 完成执行选项 |
204
224
  | cookArgs | CookArg[] | 必须 | 烹饪参数数组 |
205
225
 
206
- ### CookArg 表格
226
+ **CookArg**
207
227
 
208
228
  | 字段 | 类型 | 可选性 | 描述 |
209
229
  | ------- | ------ | ------ | ------- |
@@ -18,9 +18,14 @@ interface RecipeListQuery {
18
18
  pvWeight?: number;
19
19
  starCountWeight?: number;
20
20
  avgScoreWeight?: number;
21
+ customInfoQuery?: CustomInfoQueryItem[];
21
22
  pageNo: number;
22
23
  pageSize: number;
23
24
  }
25
+ interface CustomInfoQueryItem {
26
+ code: string;
27
+ langValue: string;
28
+ }
24
29
  /**
25
30
  * RecipeInfo - 食谱信息
26
31
  */
@@ -120,9 +125,11 @@ interface CustomLangInfo {
120
125
  name: string;
121
126
  desc: string;
122
127
  fileUrl?: string;
128
+ origFileUrl: string;
123
129
  }
124
130
  interface CustomInfo {
125
131
  code: string;
132
+ fileUrl: string;
126
133
  langInfos: CustomLangInfo[];
127
134
  }
128
135
  interface RecipeDetailResult {
@@ -162,9 +169,28 @@ interface RecipeDetailResult {
162
169
  cookStepInfoVOList: CookStepInfoVO[];
163
170
  foodInfoVOList: FoodInfoVO[];
164
171
  customInfoList: CustomInfo[];
172
+ likes: number;
173
+ isLike: boolean;
165
174
  gmtCreate: number;
166
175
  gmtModified: number;
167
176
  }
168
177
  type RecipeDetailResponse = RecipeDetailResult;
169
178
  export declare const getRecipeDetail: (params: RecipeDetailParams) => Promise<RecipeDetailResponse>;
179
+ type OperateRecipeLikeParams = {
180
+ like: RecipeLike;
181
+ };
182
+ type RecipeLike = {
183
+ menuId: number;
184
+ devId: string;
185
+ };
186
+ /**
187
+ * OperateRecipeLikeResponse - 食谱点赞响应参数
188
+ */
189
+ type OperateRecipeLikeResponse = boolean;
190
+ /**
191
+ * 食谱点赞 1.5.5 新增
192
+ * @param {OperateRecipeLikeParams} params - 食谱点赞信息
193
+ * @returns {Promise<OperateRecipeLikeResponse>} - 食谱点赞响应 Promise
194
+ */
195
+ export declare const operateRecipeLike: (params: OperateRecipeLikeParams) => Promise<OperateRecipeLikeResponse>;
170
196
  export {};
@@ -1,6 +1,7 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- const _excluded = ["query"];
3
+ const _excluded = ["query"],
4
+ _excluded2 = ["like"];
4
5
  import { THING } from '../../constants';
5
6
  import requestCloud from '../../requestCloud';
6
7
  // #region 食谱列表
@@ -73,4 +74,31 @@ export const getRecipeDetail = params => {
73
74
  });
74
75
  };
75
76
 
77
+ //#endregion
78
+
79
+ // #region 食谱点赞
80
+
81
+ /**
82
+ * OperateRecipeLikeResponse - 食谱点赞响应参数
83
+ */
84
+
85
+ /**
86
+ * 食谱点赞 1.5.5 新增
87
+ * @param {OperateRecipeLikeParams} params - 食谱点赞信息
88
+ * @returns {Promise<OperateRecipeLikeResponse>} - 食谱点赞响应 Promise
89
+ */
90
+ export const operateRecipeLike = params => {
91
+ const {
92
+ like
93
+ } = params,
94
+ rest = _objectWithoutProperties(params, _excluded2);
95
+ return requestCloud({
96
+ api: "m.ha.recipe.operate.like",
97
+ version: '1.0',
98
+ data: _objectSpread({
99
+ likeJson: JSON.stringify(like)
100
+ }, rest)
101
+ });
102
+ };
103
+
76
104
  //#endregion
@@ -20,23 +20,31 @@ import { getRecipeList } from '@ray-js/ray'
20
20
 
21
21
  `RecipeListQuery` 包含以下属性:
22
22
 
23
- | 属性 | 类型 | 默认值 | 必填 | 说明 |
24
- | --------------- | ---------- | ------ | ---- | ---------------- |
25
- | productId | `string` | | 是 | 产品 ID |
26
- | name | `string` | | 否 | 食谱名称 |
27
- | categoryIds | `number[]` | | 否 | 分类 ID 数组 |
28
- | cookTimeMin | `number` | | 否 | 最小烹饪时间 |
29
- | cookTimeMax | `number` | | 否 | 最大烹饪时间 |
30
- | easyLevelIds | `number[]` | | 否 | 难易等级 ID 数组 |
31
- | foodTypeIds | `number[]` | | 否 | 食品类型 ID 数组 |
32
- | allergenIds | `number[]` | | 否 | 过敏原 ID 数组 |
33
- | isFoodChannel | `number` | | 否 | 是否为食品频道 |
34
- | orderType | `number` | | 否 | 排序类型 |
35
- | pvWeight | `number` | | 否 | 浏览量权重 |
36
- | starCountWeight | `number` | | 否 | 收藏数权重 |
37
- | avgScoreWeight | `number` | | 否 | 平均评分权重 |
38
- | pageNo | `number` | | | 页码 |
39
- | pageSize | `number` | | 是 | 每页显示数量 |
23
+ | 属性 | 类型 | 默认值 | 必填 | 说明 |
24
+ | --- | --- | --- | --- | --- |
25
+ | productId | `string` | | 是 | 产品 ID |
26
+ | name | `string` | | 否 | 食谱名称 |
27
+ | categoryIds | `number[]` | | 否 | 分类 ID 数组 |
28
+ | cookTimeMin | `number` | | 否 | 最小烹饪时间 |
29
+ | cookTimeMax | `number` | | 否 | 最大烹饪时间 |
30
+ | easyLevelIds | `number[]` | | 否 | 难易等级 ID 数组 |
31
+ | foodTypeIds | `number[]` | | 否 | 食品类型 ID 数组 |
32
+ | allergenIds | `number[]` | | 否 | 过敏原 ID 数组 |
33
+ | isFoodChannel | `number` | | 否 | 是否为食品频道 |
34
+ | orderType | `number` | | 否 | 排序类型 |
35
+ | pvWeight | `number` | | 否 | 浏览量权重 |
36
+ | starCountWeight | `number` | | 否 | 收藏数权重 |
37
+ | avgScoreWeight | `number` | | 否 | 平均评分权重 |
38
+ | customInfoQuery | `CustomInfoQueryItem[]` | | | 自定义属性查询 `@ray-js/ray^1.5.5` 新增 |
39
+ | pageNo | `number` | | 是 | 页码 |
40
+ | pageSize | `number` | | 是 | 每页显示数量 |
41
+
42
+ **CustomInfoQueryItem**
43
+
44
+ | 属性 | 类型 | 默认值 | 必填 | 说明 |
45
+ | --------- | -------- | ------ | ---- | ---------------- |
46
+ | code | `string` | | 是 | 自定义属性 code |
47
+ | langValue | `string` | | 是 | 自定义属性 value |
40
48
 
41
49
  **返回结果 RecipeListResponse**
42
50
 
@@ -150,46 +158,48 @@ import { getRecipeDetail } from '@ray-js/ray'
150
158
 
151
159
  **返回结果 RecipeDetailResponse**
152
160
 
153
- | 属性 | 类型 | 说明 |
154
- | ------------------ | ------------------ | ------------------ |
155
- | id | `number` | 食谱 ID |
156
- | name | `string` | 名称 |
157
- | desc | `string` | 描述 |
158
- | information | `string` | 信息 |
159
- | xyxk | `string` | 食谱相关信息 |
160
- | foods | `string` | 食材 |
161
- | mainImgs | `string[]` | 主图数组 |
162
- | origMainImgs | `string[]` | 原始主图数组 |
163
- | lang | `number` | 语言类型 |
164
- | langDesc | `string` | 语言描述 |
165
- | preVideo | `string` | 准备视频 |
166
- | stepVideo | `string` | 步骤视频 |
167
- | isMainShow | `number` | 是否主显示 |
168
- | isControl | `number` | 是否受控 |
169
- | isShowControl | `number` | 是否显示控制 |
170
- | sourceType | `number` | 来源类型 |
171
- | cookType | `number` | 烹饪方式 |
172
- | extInfo | `string` | 扩展信息 |
173
- | cookTime | `number` | 烹饪时间 |
174
- | useFoodLib | `number` | 使用食材库 |
175
- | eatCount | `number` | 用餐人数 |
176
- | isFoodChannel | `number` | 是否为食品频道 |
177
- | easyLevel | `string` | 难易等级 |
178
- | easyLevelDesc | `string` | 难易等级描述 |
179
- | taste | `string` | 口味 |
180
- | tasteDesc | `string` | 口味描述 |
181
- | foodType | `string` | 食品类型 |
182
- | foodTypeDesc | `string` | 食品类型描述 |
183
- | allergens | `AllergenInfo[]` | 过敏原信息数组 |
184
- | author | `string` | 作者 |
185
- | pv | `number` | 浏览量 |
186
- | avgScore | `number` | 平均评分 |
187
- | menuStepInfoVOList | `MenuStepInfoVO[]` | 图文步骤信息数组 |
188
- | cookStepInfoVOList | `CookStepInfoVO[]` | 烹饪步骤信息数组 |
189
- | foodInfoVOList | `FoodInfoVO[]` | 食材信息数组 |
190
- | customInfoList | `CustomInfo[]` | 自定义属性信息数组 |
191
- | gmtCreate | `number` | 创建时间 |
192
- | gmtModified | `number` | 修改时间 |
161
+ | 属性 | 类型 | 说明 |
162
+ | ------------------ | ------------------ | -------------------------------- |
163
+ | id | `number` | 食谱 ID |
164
+ | name | `string` | 名称 |
165
+ | desc | `string` | 描述 |
166
+ | information | `string` | 信息 |
167
+ | xyxk | `string` | 食谱相关信息 |
168
+ | foods | `string` | 食材 |
169
+ | mainImgs | `string[]` | 主图数组 |
170
+ | origMainImgs | `string[]` | 原始主图数组 |
171
+ | lang | `number` | 语言类型 |
172
+ | langDesc | `string` | 语言描述 |
173
+ | preVideo | `string` | 准备视频 |
174
+ | stepVideo | `string` | 步骤视频 |
175
+ | isMainShow | `number` | 是否主显示 |
176
+ | isControl | `number` | 是否受控 |
177
+ | isShowControl | `number` | 是否显示控制 |
178
+ | sourceType | `number` | 来源类型 |
179
+ | cookType | `number` | 烹饪方式 |
180
+ | extInfo | `string` | 扩展信息 |
181
+ | cookTime | `number` | 烹饪时间 |
182
+ | useFoodLib | `number` | 使用食材库 |
183
+ | eatCount | `number` | 用餐人数 |
184
+ | isFoodChannel | `number` | 是否为食品频道 |
185
+ | easyLevel | `string` | 难易等级 |
186
+ | easyLevelDesc | `string` | 难易等级描述 |
187
+ | taste | `string` | 口味 |
188
+ | tasteDesc | `string` | 口味描述 |
189
+ | foodType | `string` | 食品类型 |
190
+ | foodTypeDesc | `string` | 食品类型描述 |
191
+ | allergens | `AllergenInfo[]` | 过敏原信息数组 |
192
+ | author | `string` | 作者 |
193
+ | pv | `number` | 浏览量 |
194
+ | avgScore | `number` | 平均评分 |
195
+ | menuStepInfoVOList | `MenuStepInfoVO[]` | 图文步骤信息数组 |
196
+ | cookStepInfoVOList | `CookStepInfoVO[]` | 烹饪步骤信息数组 |
197
+ | foodInfoVOList | `FoodInfoVO[]` | 食材信息数组 |
198
+ | customInfoList | `CustomInfo[]` | 自定义属性信息数组 |
199
+ | likes | `number` | 点赞次数 `@ray-js/ray^1.5.5`新增 |
200
+ | isLike | `boolean` | 是否点赞 `@ray-js/ray^1.5.5`新增 |
201
+ | gmtCreate | `number` | 创建时间 |
202
+ | gmtModified | `number` | 修改时间 |
193
203
 
194
204
  **AllergenInfo**
195
205
 
@@ -250,19 +260,21 @@ import { getRecipeDetail } from '@ray-js/ray'
250
260
 
251
261
  **CustomLangInfo**
252
262
 
253
- | 属性 | 类型 | 说明 |
254
- | ------- | -------- | ---------------- |
255
- | lang | `string` | 语言标识 |
256
- | name | `string` | 名称 |
257
- | desc | `string` | 描述 |
258
- | fileUrl | `string` | 文件 URL(可选) |
263
+ | 属性 | 类型 | 说明 |
264
+ | ----------- | -------- | ---------------- |
265
+ | lang | `string` | 语言标识 |
266
+ | name | `string` | 名称 |
267
+ | desc | `string` | 描述 |
268
+ | fileUrl | `string` | 文件 URL |
269
+ | origFileUrl | `string` | 自定义食谱才会有 |
259
270
 
260
271
  **CustomInfo**
261
272
 
262
- | 属性 | 类型 | 说明 |
263
- | --------- | ------------------ | -------------- |
264
- | code | `string` | 自定义属性编码 |
265
- | langInfos | `CustomLangInfo[]` | 多语言信息数组 |
273
+ | 属性 | 类型 | 说明 |
274
+ | --------- | ------------------ | ------------------ |
275
+ | code | `string` | 自定义属性编码 |
276
+ | fileUrl | `string` | 自定义属性文件 URL |
277
+ | langInfos | `CustomLangInfo[]` | 多语言信息数组 |
266
278
 
267
279
  **函数定义示例**
268
280
 
@@ -8,7 +8,7 @@ export declare function factory(name: string, opts?: Opts): (option: {
8
8
  key: string;
9
9
  data?: any;
10
10
  }) => any;
11
- export declare function factoryContants(name: string, opts?: Opts): any;
11
+ export declare function factoryConstants(name: string, opts?: Opts): any;
12
12
  export declare const parseUrl: (url: string) => import("query-string").ParsedUrl;
13
13
  export declare const stringifyUrl: (object: UrlObject) => string;
14
14
  export {};
@@ -35,7 +35,7 @@ export function factory(name) {
35
35
  return wx[name].apply(this, arguments);
36
36
  };
37
37
  }
38
- export function factoryContants(name) {
38
+ export function factoryConstants(name) {
39
39
  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
40
40
  if (opts.deprecated) {
41
41
  console.warn("\u8BE5\u53D8\u91CF ".concat(name, " \u5DF2\u5F03\u7528"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/api",
3
- "version": "1.5.3",
3
+ "version": "1.5.5",
4
4
  "description": "Ray universal api",
5
5
  "keywords": [
6
6
  "ray"
@@ -29,14 +29,14 @@
29
29
  "watch": "ray start --type=component"
30
30
  },
31
31
  "dependencies": {
32
- "@ray-js/framework": "1.5.3",
33
- "@ray-js/router": "1.5.3",
32
+ "@ray-js/framework": "1.5.5",
33
+ "@ray-js/router": "1.5.5",
34
34
  "@ray-js/wechat": "^0.2.9",
35
35
  "base64-browser": "^1.0.1",
36
36
  "query-string": "^7.1.3"
37
37
  },
38
38
  "devDependencies": {
39
- "@ray-js/cli": "1.5.3",
39
+ "@ray-js/cli": "1.5.5",
40
40
  "art-template": "^4.13.2",
41
41
  "fs-extra": "^10.1.0",
42
42
  "miniprogram-api-typings": "^3.12.2",
@@ -46,5 +46,5 @@
46
46
  "access": "public",
47
47
  "registry": "https://registry.npmjs.org"
48
48
  },
49
- "gitHead": "37d41dd13e4161b62dc68a644720ca32b33a2bcd"
49
+ "gitHead": "3e915fc6eb55c48b0829cfbe32d9a0c6dee1852b"
50
50
  }