@cgboiler/biz-mobile 1.18.21 → 1.18.23

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/es/index.d.ts CHANGED
@@ -7,7 +7,7 @@ declare namespace _default {
7
7
  }
8
8
  export default _default;
9
9
  export function install(app: any): void;
10
- export const version: "1.18.20";
10
+ export const version: "1.18.22";
11
11
  import MdPreview from './md-preview';
12
12
  import OrgPicker from './org-picker';
13
13
  import ProjectSelect from './project-select';
package/es/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import MdPreview from "./md-preview";
2
2
  import OrgPicker from "./org-picker";
3
3
  import ProjectSelect from "./project-select";
4
- const version = "1.18.20";
4
+ const version = "1.18.22";
5
5
  function install(app) {
6
6
  const components = [
7
7
  MdPreview,
@@ -59,29 +59,24 @@ var stdin_default = defineComponent({
59
59
  isSearchFocus
60
60
  });
61
61
  const selectedItems = ref([]);
62
- const fullySelectedDepts = ref(/* @__PURE__ */ new Set());
63
- const partiallySelectedDepts = ref(/* @__PURE__ */ new Set());
64
- const updateDeptSelectionStatus = () => {
62
+ const getDeptStatus = (deptId) => {
65
63
  if (!props.multiple)
66
- return;
67
- const newFullySelected = /* @__PURE__ */ new Set();
68
- const newPartiallySelected = /* @__PURE__ */ new Set();
64
+ return {
65
+ fully: false,
66
+ partially: false
67
+ };
68
+ const deptUsers = getUsersByDeptId(deptId);
69
+ if (deptUsers.length === 0)
70
+ return {
71
+ fully: false,
72
+ partially: false
73
+ };
69
74
  const selectedUserIds = new Set(selectedItems.value.map((item) => item.id));
70
- const checkGroupStatus = (groupId) => {
71
- const groupUsers = getUsersByDeptId(groupId);
72
- if (groupUsers.length === 0)
73
- return;
74
- const selectedCount = groupUsers.filter((user) => selectedUserIds.has(user.id)).length;
75
- if (selectedCount === groupUsers.length) {
76
- newFullySelected.add(groupId);
77
- } else if (selectedCount > 0) {
78
- newPartiallySelected.add(groupId);
79
- }
75
+ const selectedCount = deptUsers.filter((user) => selectedUserIds.has(user.id)).length;
76
+ return {
77
+ fully: selectedCount === deptUsers.length,
78
+ partially: selectedCount > 0 && selectedCount < deptUsers.length
80
79
  };
81
- api.deptList.value.forEach((dept) => checkGroupStatus(dept.id));
82
- api.getCompanies().forEach((comp) => checkGroupStatus(comp.id));
83
- fullySelectedDepts.value = newFullySelected;
84
- partiallySelectedDepts.value = newPartiallySelected;
85
80
  };
86
81
  const sortOrgList = computed(() => {
87
82
  const departments = orgList.value.filter((item) => item.type === "dept");
@@ -97,17 +92,11 @@ var stdin_default = defineComponent({
97
92
  if (userList == null ? void 0 : userList.length) {
98
93
  selectedItems.value = newValue.map((id) => {
99
94
  return userList.find((item) => item.id === id);
100
- });
101
- updateDeptSelectionStatus();
95
+ }).filter(Boolean);
102
96
  }
103
97
  }), {
104
98
  immediate: true
105
99
  });
106
- watch(() => selectedItems.value, () => {
107
- updateDeptSelectionStatus();
108
- }, {
109
- deep: true
110
- });
111
100
  watch(() => props.show, (newValue) => {
112
101
  const handleKeyDown = (event) => {
113
102
  if (event.key === "Escape") {
@@ -127,7 +116,9 @@ var stdin_default = defineComponent({
127
116
  if (item.type !== "dept" || !props.multiple)
128
117
  return;
129
118
  const deptUsers = getUsersByDeptId(item.id);
130
- const isFullySelected = fullySelectedDepts.value.has(item.id);
119
+ const {
120
+ fully: isFullySelected
121
+ } = getDeptStatus(item.id);
131
122
  const deduplicateById = (arr) => {
132
123
  const seenIds = /* @__PURE__ */ new Set();
133
124
  return arr.filter((item2) => {
@@ -276,8 +267,12 @@ var stdin_default = defineComponent({
276
267
  }, null) : _createVNode(List, null, {
277
268
  default: () => [sortOrgList.value.map((item) => {
278
269
  const isDept = item.type === "dept";
279
- const isFullySelected = isDept && fullySelectedDepts.value.has(item.id);
280
- const isPartiallySelected = isDept && partiallySelectedDepts.value.has(item.id);
270
+ const status = isDept ? getDeptStatus(item.id) : {
271
+ fully: false,
272
+ partially: false
273
+ };
274
+ const isFullySelected = status.fully;
275
+ const isPartiallySelected = status.partially;
281
276
  const isUserSelected = !isDept && isSelected(item);
282
277
  return _createVNode("div", {
283
278
  "class": ["org-item", isUserSelected ? "selected" : "", isFullySelected ? "dept-fully-selected" : "", isPartiallySelected ? "dept-partially-selected" : ""],
@@ -64,6 +64,47 @@ const deptMap = computed(() => {
64
64
  });
65
65
  return map;
66
66
  });
67
+ const deptToUsersMap = computed(() => {
68
+ const map = /* @__PURE__ */ new Map();
69
+ userList.value.forEach((u) => {
70
+ if (u.status === 5)
71
+ return;
72
+ const list = map.get(u.deptId) || [];
73
+ list.push(u);
74
+ map.set(u.deptId, list);
75
+ });
76
+ userList.value.forEach((u) => {
77
+ if (u.status === 5)
78
+ return;
79
+ if (!u.deptId || u.deptId === "0") {
80
+ const cid = u.companyId;
81
+ if (cid) {
82
+ const list = map.get(`root_${cid}`) || [];
83
+ list.push(u);
84
+ map.set(`root_${cid}`, list);
85
+ }
86
+ }
87
+ });
88
+ return map;
89
+ });
90
+ const deptToSubDeptsMap = computed(() => {
91
+ const map = /* @__PURE__ */ new Map();
92
+ deptList.value.forEach((d) => {
93
+ const pid = d.parentId || "0";
94
+ const list = map.get(pid) || [];
95
+ list.push(d);
96
+ map.set(pid, list);
97
+ });
98
+ deptList.value.forEach((d) => {
99
+ if (d.parentId === "0" || !d.parentId) {
100
+ const cid = d.companyId;
101
+ const list = map.get(`root_${cid}`) || [];
102
+ list.push(d);
103
+ map.set(`root_${cid}`, list);
104
+ }
105
+ });
106
+ return map;
107
+ });
67
108
  let initPromise = null;
68
109
  const fetchAllCompaniesData = () => __async(void 0, null, function* () {
69
110
  const companyIds = [COMPANY_CHUANGUO, COMPANY_HAZHOU];
@@ -276,7 +317,7 @@ const useApi = () => {
276
317
  userInfo.value = user;
277
318
  }
278
319
  const url = decodeURIComponent(
279
- `${window.globalConfig.wFlowApiTest}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
320
+ `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
280
321
  );
281
322
  const res = yield fetchData(url);
282
323
  let recentList = [];
@@ -313,10 +354,10 @@ const useApi = () => {
313
354
  data.field5375578403639 = JSON.stringify(list);
314
355
  }
315
356
  if (dataId.value) {
316
- url = `${window.globalConfig.wFlowApiTest}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
357
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
317
358
  method = "PUT";
318
359
  } else {
319
- url = `${window.globalConfig.wFlowApiTest}/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d`;
360
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d`;
320
361
  method = "POST";
321
362
  }
322
363
  const token = user.token;
@@ -408,54 +449,35 @@ const useApi = () => {
408
449
  };
409
450
  const getUsersByDeptId = (deptId, cid, visited = /* @__PURE__ */ new Set()) => {
410
451
  const effectiveCompanyId = cid || browsedCompanyId.value;
411
- if (visited.has(deptId)) {
452
+ if (visited.has(deptId))
412
453
  return [];
413
- }
414
454
  visited.add(deptId);
415
455
  const isCompany = COMPANIES.some((c) => c.id === deptId);
416
456
  if (isCompany) {
417
457
  const companyId = deptId;
418
- if (!deptList.value.length || !userList.value.length)
419
- return [];
420
- const gatherUsers = (dId) => {
421
- const result = [];
422
- if (dId === companyId) {
423
- result.push(
424
- ...userList.value.filter(
425
- (u) => u.companyId === dId && (u.deptId === "0" || !u.deptId) && u.status !== 5
426
- )
427
- );
428
- } else {
429
- result.push(
430
- ...userList.value.filter(
431
- (u) => u.deptId === dId && u.companyId === companyId && u.status !== 5
432
- )
433
- );
434
- }
435
- const children = dId === companyId ? deptList.value.filter((d) => d.companyId === dId && (d.parentId === "0" || !d.parentId)) : deptList.value.filter((d) => d.parentId === dId && d.companyId === companyId);
458
+ const result2 = [];
459
+ const traverse = (dId, isRoot) => {
460
+ const users = deptToUsersMap.value.get(isRoot ? `root_${companyId}` : dId) || [];
461
+ result2.push(...users);
462
+ const children = deptToSubDeptsMap.value.get(isRoot ? `root_${companyId}` : dId) || [];
436
463
  children.forEach((child) => {
437
464
  if (!visited.has(child.id)) {
438
465
  visited.add(child.id);
439
- result.push(...gatherUsers(child.id));
466
+ traverse(child.id, false);
440
467
  }
441
468
  });
442
- return result;
443
469
  };
444
- return gatherUsers(companyId);
470
+ traverse(companyId, true);
471
+ return result2;
445
472
  }
446
- const users = [];
447
- const directUsers = userList.value.filter(
448
- (user) => user.deptId === deptId && user.status !== 5 && (!effectiveCompanyId || user.companyId === effectiveCompanyId)
449
- );
450
- users.push(...directUsers);
451
- const childDepts = deptList.value.filter(
452
- (dept) => dept.parentId === deptId && (!effectiveCompanyId || dept.companyId === effectiveCompanyId)
453
- );
473
+ const result = [];
474
+ const directUsers = deptToUsersMap.value.get(deptId) || [];
475
+ result.push(...directUsers);
476
+ const childDepts = deptToSubDeptsMap.value.get(deptId) || [];
454
477
  childDepts.forEach((childDept) => {
455
- const childUsers = getUsersByDeptId(childDept.id, effectiveCompanyId, visited);
456
- users.push(...childUsers);
478
+ result.push(...getUsersByDeptId(childDept.id, effectiveCompanyId, visited));
457
479
  });
458
- return users;
480
+ return result;
459
481
  };
460
482
  const getDeptById = (deptId) => {
461
483
  return deptMap.value.get(deptId);
@@ -24,7 +24,7 @@ const useApi = () => {
24
24
  const projectList = ref([]);
25
25
  const getProjectList = () => __async(void 0, null, function* () {
26
26
  const res = yield useFetch(
27
- `${window.globalConfig.vxApiTest}/v1/note/projects`,
27
+ `${window.globalConfig.vxApi}/v1/note/projects`,
28
28
  {
29
29
  method: "GET"
30
30
  }
package/lib/index.d.ts CHANGED
@@ -7,7 +7,7 @@ declare namespace _default {
7
7
  }
8
8
  export default _default;
9
9
  export function install(app: any): void;
10
- export const version: "1.18.20";
10
+ export const version: "1.18.22";
11
11
  import MdPreview from './md-preview';
12
12
  import OrgPicker from './org-picker';
13
13
  import ProjectSelect from './project-select';
package/lib/index.js CHANGED
@@ -42,7 +42,7 @@ var import_project_select = __toESM(require("./project-select"));
42
42
  __reExport(stdin_exports, require("./md-preview"), module.exports);
43
43
  __reExport(stdin_exports, require("./org-picker"), module.exports);
44
44
  __reExport(stdin_exports, require("./project-select"), module.exports);
45
- const version = "1.18.20";
45
+ const version = "1.18.22";
46
46
  function install(app) {
47
47
  const components = [
48
48
  import_md_preview.default,
@@ -91,29 +91,24 @@ var stdin_default = (0, import_vue2.defineComponent)({
91
91
  isSearchFocus
92
92
  });
93
93
  const selectedItems = (0, import_vue2.ref)([]);
94
- const fullySelectedDepts = (0, import_vue2.ref)(/* @__PURE__ */ new Set());
95
- const partiallySelectedDepts = (0, import_vue2.ref)(/* @__PURE__ */ new Set());
96
- const updateDeptSelectionStatus = () => {
94
+ const getDeptStatus = (deptId) => {
97
95
  if (!props.multiple)
98
- return;
99
- const newFullySelected = /* @__PURE__ */ new Set();
100
- const newPartiallySelected = /* @__PURE__ */ new Set();
96
+ return {
97
+ fully: false,
98
+ partially: false
99
+ };
100
+ const deptUsers = getUsersByDeptId(deptId);
101
+ if (deptUsers.length === 0)
102
+ return {
103
+ fully: false,
104
+ partially: false
105
+ };
101
106
  const selectedUserIds = new Set(selectedItems.value.map((item) => item.id));
102
- const checkGroupStatus = (groupId) => {
103
- const groupUsers = getUsersByDeptId(groupId);
104
- if (groupUsers.length === 0)
105
- return;
106
- const selectedCount = groupUsers.filter((user) => selectedUserIds.has(user.id)).length;
107
- if (selectedCount === groupUsers.length) {
108
- newFullySelected.add(groupId);
109
- } else if (selectedCount > 0) {
110
- newPartiallySelected.add(groupId);
111
- }
107
+ const selectedCount = deptUsers.filter((user) => selectedUserIds.has(user.id)).length;
108
+ return {
109
+ fully: selectedCount === deptUsers.length,
110
+ partially: selectedCount > 0 && selectedCount < deptUsers.length
112
111
  };
113
- api.deptList.value.forEach((dept) => checkGroupStatus(dept.id));
114
- api.getCompanies().forEach((comp) => checkGroupStatus(comp.id));
115
- fullySelectedDepts.value = newFullySelected;
116
- partiallySelectedDepts.value = newPartiallySelected;
117
112
  };
118
113
  const sortOrgList = (0, import_vue2.computed)(() => {
119
114
  const departments = orgList.value.filter((item) => item.type === "dept");
@@ -129,17 +124,11 @@ var stdin_default = (0, import_vue2.defineComponent)({
129
124
  if (userList == null ? void 0 : userList.length) {
130
125
  selectedItems.value = newValue.map((id) => {
131
126
  return userList.find((item) => item.id === id);
132
- });
133
- updateDeptSelectionStatus();
127
+ }).filter(Boolean);
134
128
  }
135
129
  }), {
136
130
  immediate: true
137
131
  });
138
- (0, import_vue2.watch)(() => selectedItems.value, () => {
139
- updateDeptSelectionStatus();
140
- }, {
141
- deep: true
142
- });
143
132
  (0, import_vue2.watch)(() => props.show, (newValue) => {
144
133
  const handleKeyDown = (event) => {
145
134
  if (event.key === "Escape") {
@@ -159,7 +148,9 @@ var stdin_default = (0, import_vue2.defineComponent)({
159
148
  if (item.type !== "dept" || !props.multiple)
160
149
  return;
161
150
  const deptUsers = getUsersByDeptId(item.id);
162
- const isFullySelected = fullySelectedDepts.value.has(item.id);
151
+ const {
152
+ fully: isFullySelected
153
+ } = getDeptStatus(item.id);
163
154
  const deduplicateById = (arr) => {
164
155
  const seenIds = /* @__PURE__ */ new Set();
165
156
  return arr.filter((item2) => {
@@ -308,8 +299,12 @@ var stdin_default = (0, import_vue2.defineComponent)({
308
299
  }, null) : (0, import_vue.createVNode)(import_vant.List, null, {
309
300
  default: () => [sortOrgList.value.map((item) => {
310
301
  const isDept = item.type === "dept";
311
- const isFullySelected = isDept && fullySelectedDepts.value.has(item.id);
312
- const isPartiallySelected = isDept && partiallySelectedDepts.value.has(item.id);
302
+ const status = isDept ? getDeptStatus(item.id) : {
303
+ fully: false,
304
+ partially: false
305
+ };
306
+ const isFullySelected = status.fully;
307
+ const isPartiallySelected = status.partially;
313
308
  const isUserSelected = !isDept && isSelected(item);
314
309
  return (0, import_vue.createVNode)("div", {
315
310
  "class": ["org-item", isUserSelected ? "selected" : "", isFullySelected ? "dept-fully-selected" : "", isPartiallySelected ? "dept-partially-selected" : ""],
@@ -85,6 +85,47 @@ const deptMap = (0, import_vue.computed)(() => {
85
85
  });
86
86
  return map;
87
87
  });
88
+ const deptToUsersMap = (0, import_vue.computed)(() => {
89
+ const map = /* @__PURE__ */ new Map();
90
+ userList.value.forEach((u) => {
91
+ if (u.status === 5)
92
+ return;
93
+ const list = map.get(u.deptId) || [];
94
+ list.push(u);
95
+ map.set(u.deptId, list);
96
+ });
97
+ userList.value.forEach((u) => {
98
+ if (u.status === 5)
99
+ return;
100
+ if (!u.deptId || u.deptId === "0") {
101
+ const cid = u.companyId;
102
+ if (cid) {
103
+ const list = map.get(`root_${cid}`) || [];
104
+ list.push(u);
105
+ map.set(`root_${cid}`, list);
106
+ }
107
+ }
108
+ });
109
+ return map;
110
+ });
111
+ const deptToSubDeptsMap = (0, import_vue.computed)(() => {
112
+ const map = /* @__PURE__ */ new Map();
113
+ deptList.value.forEach((d) => {
114
+ const pid = d.parentId || "0";
115
+ const list = map.get(pid) || [];
116
+ list.push(d);
117
+ map.set(pid, list);
118
+ });
119
+ deptList.value.forEach((d) => {
120
+ if (d.parentId === "0" || !d.parentId) {
121
+ const cid = d.companyId;
122
+ const list = map.get(`root_${cid}`) || [];
123
+ list.push(d);
124
+ map.set(`root_${cid}`, list);
125
+ }
126
+ });
127
+ return map;
128
+ });
88
129
  let initPromise = null;
89
130
  const fetchAllCompaniesData = () => __async(void 0, null, function* () {
90
131
  const companyIds = [COMPANY_CHUANGUO, COMPANY_HAZHOU];
@@ -297,7 +338,7 @@ const useApi = () => {
297
338
  userInfo.value = user;
298
339
  }
299
340
  const url = decodeURIComponent(
300
- `${window.globalConfig.wFlowApiTest}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
341
+ `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
301
342
  );
302
343
  const res = yield fetchData(url);
303
344
  let recentList = [];
@@ -334,10 +375,10 @@ const useApi = () => {
334
375
  data.field5375578403639 = JSON.stringify(list);
335
376
  }
336
377
  if (dataId.value) {
337
- url = `${window.globalConfig.wFlowApiTest}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
378
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
338
379
  method = "PUT";
339
380
  } else {
340
- url = `${window.globalConfig.wFlowApiTest}/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d`;
381
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d`;
341
382
  method = "POST";
342
383
  }
343
384
  const token = user.token;
@@ -429,54 +470,35 @@ const useApi = () => {
429
470
  };
430
471
  const getUsersByDeptId = (deptId, cid, visited = /* @__PURE__ */ new Set()) => {
431
472
  const effectiveCompanyId = cid || browsedCompanyId.value;
432
- if (visited.has(deptId)) {
473
+ if (visited.has(deptId))
433
474
  return [];
434
- }
435
475
  visited.add(deptId);
436
476
  const isCompany = COMPANIES.some((c) => c.id === deptId);
437
477
  if (isCompany) {
438
478
  const companyId = deptId;
439
- if (!deptList.value.length || !userList.value.length)
440
- return [];
441
- const gatherUsers = (dId) => {
442
- const result = [];
443
- if (dId === companyId) {
444
- result.push(
445
- ...userList.value.filter(
446
- (u) => u.companyId === dId && (u.deptId === "0" || !u.deptId) && u.status !== 5
447
- )
448
- );
449
- } else {
450
- result.push(
451
- ...userList.value.filter(
452
- (u) => u.deptId === dId && u.companyId === companyId && u.status !== 5
453
- )
454
- );
455
- }
456
- const children = dId === companyId ? deptList.value.filter((d) => d.companyId === dId && (d.parentId === "0" || !d.parentId)) : deptList.value.filter((d) => d.parentId === dId && d.companyId === companyId);
479
+ const result2 = [];
480
+ const traverse = (dId, isRoot) => {
481
+ const users = deptToUsersMap.value.get(isRoot ? `root_${companyId}` : dId) || [];
482
+ result2.push(...users);
483
+ const children = deptToSubDeptsMap.value.get(isRoot ? `root_${companyId}` : dId) || [];
457
484
  children.forEach((child) => {
458
485
  if (!visited.has(child.id)) {
459
486
  visited.add(child.id);
460
- result.push(...gatherUsers(child.id));
487
+ traverse(child.id, false);
461
488
  }
462
489
  });
463
- return result;
464
490
  };
465
- return gatherUsers(companyId);
491
+ traverse(companyId, true);
492
+ return result2;
466
493
  }
467
- const users = [];
468
- const directUsers = userList.value.filter(
469
- (user) => user.deptId === deptId && user.status !== 5 && (!effectiveCompanyId || user.companyId === effectiveCompanyId)
470
- );
471
- users.push(...directUsers);
472
- const childDepts = deptList.value.filter(
473
- (dept) => dept.parentId === deptId && (!effectiveCompanyId || dept.companyId === effectiveCompanyId)
474
- );
494
+ const result = [];
495
+ const directUsers = deptToUsersMap.value.get(deptId) || [];
496
+ result.push(...directUsers);
497
+ const childDepts = deptToSubDeptsMap.value.get(deptId) || [];
475
498
  childDepts.forEach((childDept) => {
476
- const childUsers = getUsersByDeptId(childDept.id, effectiveCompanyId, visited);
477
- users.push(...childUsers);
499
+ result.push(...getUsersByDeptId(childDept.id, effectiveCompanyId, visited));
478
500
  });
479
- return users;
501
+ return result;
480
502
  };
481
503
  const getDeptById = (deptId) => {
482
504
  return deptMap.value.get(deptId);
@@ -46,7 +46,7 @@ const useApi = () => {
46
46
  const projectList = (0, import_vue.ref)([]);
47
47
  const getProjectList = () => __async(void 0, null, function* () {
48
48
  const res = yield (0, import_core.useFetch)(
49
- `${window.globalConfig.vxApiTest}/v1/note/projects`,
49
+ `${window.globalConfig.vxApi}/v1/note/projects`,
50
50
  {
51
51
  method: "GET"
52
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cgboiler/biz-mobile",
3
- "version": "1.18.21",
3
+ "version": "1.18.23",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",