@gingkoo/pandora-metabase 1.0.81 → 1.0.83

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.
Files changed (57) hide show
  1. package/lib/cjs/components/dialog/formula-list/index.js +139 -74
  2. package/lib/cjs/components/dialog/formula-list/index.less +13 -0
  3. package/lib/cjs/components/metabase/index.js +26 -4
  4. package/lib/cjs/components/metabase/index.less +32 -1
  5. package/lib/cjs/components/modules/components/header.d.ts +2 -0
  6. package/lib/cjs/components/modules/components/header.js +11 -6
  7. package/lib/cjs/components/modules/components/item-wrapper.d.ts +9 -0
  8. package/lib/cjs/components/modules/components/item-wrapper.js +45 -0
  9. package/lib/cjs/components/modules/components/meta-icon.d.ts +11 -0
  10. package/lib/cjs/components/modules/components/meta-icon.js +60 -12
  11. package/lib/cjs/components/modules/custom-column.js +34 -28
  12. package/lib/cjs/components/modules/filter.js +18 -12
  13. package/lib/cjs/components/modules/join-data.js +417 -411
  14. package/lib/cjs/components/modules/permission-table.js +17 -11
  15. package/lib/cjs/components/modules/row-limit.js +18 -12
  16. package/lib/cjs/components/modules/sort.js +33 -27
  17. package/lib/cjs/components/modules/summarize/index.js +26 -20
  18. package/lib/cjs/components/modules/table-data.js +137 -131
  19. package/lib/cjs/components/modules/union.js +14 -8
  20. package/lib/cjs/hooks/use-state.js +84 -31
  21. package/lib/cjs/index.js +9 -3
  22. package/lib/cjs/locale/en.js +5 -3
  23. package/lib/cjs/locale/zh.js +5 -3
  24. package/lib/cjs/types.d.ts +2 -0
  25. package/lib/cjs/utils/storage.d.ts +1 -0
  26. package/lib/cjs/utils/storage.js +2 -1
  27. package/lib/cjs/utils.d.ts +6 -0
  28. package/lib/cjs/utils.js +23 -3
  29. package/lib/es/components/dialog/formula-list/index.js +139 -76
  30. package/lib/es/components/dialog/formula-list/index.less +13 -0
  31. package/lib/es/components/metabase/index.js +26 -4
  32. package/lib/es/components/metabase/index.less +32 -1
  33. package/lib/es/components/modules/components/header.d.ts +2 -0
  34. package/lib/es/components/modules/components/header.js +12 -7
  35. package/lib/es/components/modules/components/item-wrapper.d.ts +9 -0
  36. package/lib/es/components/modules/components/item-wrapper.js +38 -0
  37. package/lib/es/components/modules/components/meta-icon.d.ts +11 -0
  38. package/lib/es/components/modules/components/meta-icon.js +60 -14
  39. package/lib/es/components/modules/custom-column.js +34 -28
  40. package/lib/es/components/modules/filter.js +18 -12
  41. package/lib/es/components/modules/join-data.js +417 -411
  42. package/lib/es/components/modules/permission-table.js +17 -11
  43. package/lib/es/components/modules/row-limit.js +18 -12
  44. package/lib/es/components/modules/sort.js +33 -27
  45. package/lib/es/components/modules/summarize/index.js +26 -20
  46. package/lib/es/components/modules/table-data.js +137 -131
  47. package/lib/es/components/modules/union.js +14 -8
  48. package/lib/es/hooks/use-state.js +84 -31
  49. package/lib/es/index.js +9 -3
  50. package/lib/es/locale/en.js +5 -3
  51. package/lib/es/locale/zh.js +5 -3
  52. package/lib/es/types.d.ts +2 -0
  53. package/lib/es/utils/storage.d.ts +1 -0
  54. package/lib/es/utils/storage.js +2 -1
  55. package/lib/es/utils.d.ts +6 -0
  56. package/lib/es/utils.js +21 -1
  57. package/package.json +1 -1
@@ -9,6 +9,7 @@ import { useEffect, useState, useRef, useMemo } from 'react';
9
9
  import { uuidv4 } from '../utils/helper';
10
10
  import { TypeEnum, JoinEnum, UnionEnum } from '../store/enum';
11
11
  import { splitByUnion } from '../utils';
12
+ import storage from '../utils/storage';
12
13
  import cloneDeep from 'lodash/cloneDeep';
13
14
  import { findIndex } from '../utils';
14
15
  var metaKey = 1;
@@ -128,46 +129,62 @@ var useStore = function useStore() {
128
129
  _useState38 = _slicedToArray(_useState37, 2),
129
130
  isExit = _useState38[0],
130
131
  setIsExit = _useState38[1]; // 是否是notExit
131
- var _useState39 = useState(true),
132
+ var _useState39 = useState(false),
132
133
  _useState40 = _slicedToArray(_useState39, 2),
133
- tableEnableAlias = _useState40[0],
134
- setTableEnableAlias = _useState40[1]; // 表名是否开启别名
134
+ isSubquery = _useState40[0],
135
+ setIsSubquery = _useState40[1]; // 是否是子查询
135
136
  var _useState41 = useState(true),
136
137
  _useState42 = _slicedToArray(_useState41, 2),
137
- fieldEnableAlias = _useState42[0],
138
- setFieldEnableAlias = _useState42[1]; // 字段名是否开启别名
138
+ tableEnableAlias = _useState42[0],
139
+ setTableEnableAlias = _useState42[1]; // 表名是否开启别名
139
140
  var _useState43 = useState(true),
140
141
  _useState44 = _slicedToArray(_useState43, 2),
141
- groupByEnableAlias = _useState44[0],
142
- setGroupByEnableAlias = _useState44[1]; // 聚合是否开启别名
142
+ fieldEnableAlias = _useState44[0],
143
+ setFieldEnableAlias = _useState44[1]; // 字段名是否开启别名
143
144
  var _useState45 = useState(true),
144
145
  _useState46 = _slicedToArray(_useState45, 2),
145
- isSelectFields = _useState46[0],
146
- setIsSelectFields = _useState46[1]; // 是否默认勾选字段
147
- var _useState47 = useState(false),
146
+ groupByEnableAlias = _useState46[0],
147
+ setGroupByEnableAlias = _useState46[1]; // 聚合是否开启别名
148
+ var _useState47 = useState(true),
148
149
  _useState48 = _slicedToArray(_useState47, 2),
149
- tableFlat = _useState48[0],
150
- setTableFlat = _useState48[1]; // 是否平铺数据表
151
- var _useState49 = useState([]),
150
+ isSelectFields = _useState48[0],
151
+ setIsSelectFields = _useState48[1]; // 是否默认勾选字段
152
+ var _useState49 = useState(false),
152
153
  _useState50 = _slicedToArray(_useState49, 2),
153
- sourceTable = _useState50[0],
154
- setSourceTable = _useState50[1];
154
+ tableFlat = _useState50[0],
155
+ setTableFlat = _useState50[1]; // 是否平铺数据表
155
156
  var _useState51 = useState([]),
156
157
  _useState52 = _slicedToArray(_useState51, 2),
157
- copyType = _useState52[0],
158
- setCopyType = _useState52[1]; // 复制类型
159
- var _useState53 = useState(false),
158
+ sourceTable = _useState52[0],
159
+ setSourceTable = _useState52[1];
160
+ var _useState53 = useState([]),
160
161
  _useState54 = _slicedToArray(_useState53, 2),
161
- metabaseCopy = _useState54[0],
162
- setMetabaseCopy = _useState54[1]; // 是否开启复制功能
162
+ copyType = _useState54[0],
163
+ setCopyType = _useState54[1]; // 复制类型
163
164
  var _useState55 = useState(false),
164
165
  _useState56 = _slicedToArray(_useState55, 2),
165
- moduleDiff = _useState56[0],
166
- setModuleDiff = _useState56[1]; // 是否开启模块比对功能
167
- var _useState57 = useState([]),
166
+ metabaseCopy = _useState56[0],
167
+ setMetabaseCopy = _useState56[1]; // 是否开启复制功能
168
+ var _useState57 = useState(false),
168
169
  _useState58 = _slicedToArray(_useState57, 2),
169
- sourceData = _useState58[0],
170
- setSourceData = _useState58[1]; // 原始数据
170
+ moduleDiff = _useState58[0],
171
+ setModuleDiff = _useState58[1]; // 是否开启模块比对功能
172
+ var _useState59 = useState([]),
173
+ _useState60 = _slicedToArray(_useState59, 2),
174
+ sourceData = _useState60[0],
175
+ setSourceData = _useState60[1]; // 原始数据
176
+ var _useState61 = useState(false),
177
+ _useState62 = _slicedToArray(_useState61, 2),
178
+ moduleCopy = _useState62[0],
179
+ setModuleCopy = _useState62[1]; // 是否开启模块复制功能
180
+ var _useState63 = useState(false),
181
+ _useState64 = _slicedToArray(_useState63, 2),
182
+ isMetabaseCopy = _useState64[0],
183
+ setIsMetabaseCopy = _useState64[1]; // 是否开启勾选组复制
184
+ var _useState65 = useState(storage._metabaseCopyModule || []),
185
+ _useState66 = _slicedToArray(_useState65, 2),
186
+ metabaseCopyModule = _useState66[0],
187
+ setMetabaseCopyModule = _useState66[1]; // 复制的内容
171
188
  // 外层ref
172
189
  var popupContainer = useRef();
173
190
  // const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
@@ -351,6 +368,7 @@ var useStore = function useStore() {
351
368
  var oldColumns,
352
369
  callback,
353
370
  isSelect,
371
+ _isSubquery,
354
372
  oldObj,
355
373
  selectId,
356
374
  _table$alias,
@@ -369,6 +387,7 @@ var useStore = function useStore() {
369
387
  oldColumns = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : [];
370
388
  callback = _args5.length > 3 ? _args5[3] : undefined;
371
389
  isSelect = _args5.length > 4 && _args5[4] !== undefined ? _args5[4] : isSelectFields;
390
+ _isSubquery = _args5.length > 5 && _args5[5] !== undefined ? _args5[5] : isSubquery;
372
391
  // 获取之前选中的数据
373
392
  oldObj = {};
374
393
  selectId = oldColumns.filter(function (v) {
@@ -379,6 +398,10 @@ var useStore = function useStore() {
379
398
  }).filter(function (v) {
380
399
  return v;
381
400
  });
401
+ if (_isSubquery) {
402
+ selectId = [];
403
+ isSelect = false;
404
+ }
382
405
  _table$alias = table.alias, alias = _table$alias === void 0 ? '' : _table$alias, datasourceName = table.datasourceName, did = table.datasourceId, column = table.column, extra = _objectWithoutProperties(table, _excluded);
383
406
  tableName = table.name;
384
407
  columns = getColumns(tableName);
@@ -460,6 +483,7 @@ var useStore = function useStore() {
460
483
  }();
461
484
  // 回显
462
485
  var setPreData = function setPreData(data) {
486
+ var _isSubquery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isSubquery;
463
487
  // let patchVersion = (data?.[0]?.list?.[0] as any)?.patchVersion || '';
464
488
  if (data.length) {
465
489
  var _metaList = data === null || data === void 0 ? void 0 : data.map(function (item, groupIndex) {
@@ -483,7 +507,7 @@ var useStore = function useStore() {
483
507
  newMeta[i].columns = columns || [];
484
508
  }
485
509
  setMeta(newMeta, groupIndex, 'init', data);
486
- }, false);
510
+ }, false, _isSubquery);
487
511
  return _objectSpread({}, v);
488
512
  }
489
513
  // 设置column
@@ -502,7 +526,7 @@ var useStore = function useStore() {
502
526
  // newMeta[i] = setQuotes(newMeta[i]);
503
527
  // }
504
528
  setMeta(newMeta, groupIndex, 'init', data);
505
- }, false);
529
+ }, false, _isSubquery);
506
530
  return _objectSpread({}, v);
507
531
  }
508
532
  return _objectSpread({}, v);
@@ -527,9 +551,10 @@ var useStore = function useStore() {
527
551
  _setMeta(defaultMeta);
528
552
  }
529
553
  };
530
- var addMeta = function addMeta(type, index, groupIndex) {
554
+ var getNewMeta = function getNewMeta(_type, index, groupIndex, obj) {
555
+ var type = _type || obj.type;
556
+ var item = false;
531
557
  var newMeta = metaList[groupIndex].list.slice();
532
- var item;
533
558
  var mainTable = newMeta[0];
534
559
  metaKey += 1;
535
560
  if (type === TypeEnum.joinData) {
@@ -636,10 +661,30 @@ var useStore = function useStore() {
636
661
  var newMetaList = metaList.slice();
637
662
  newMetaList.splice.apply(newMetaList, [groupIndex + 1, 0, defaultOperator].concat(defaultMeta));
638
663
  _setMeta(newMetaList);
664
+ return false;
665
+ }
666
+ if (obj) {
667
+ item = _objectSpread(_objectSpread({}, obj), {}, {
668
+ metaKey: metaKey
669
+ });
670
+ }
671
+ return item;
672
+ };
673
+ var addMeta = function addMeta(type, index, groupIndex, obj) {
674
+ var newMeta = metaList[groupIndex].list.slice();
675
+ var items = [];
676
+ if (obj) {
677
+ items = obj.map(function (v) {
678
+ return getNewMeta(type, index, groupIndex, v);
679
+ });
680
+ } else {
681
+ items = [getNewMeta(type, index, groupIndex, obj)];
682
+ }
683
+ if (items[0] === false) {
639
684
  return;
640
685
  }
641
686
  // @ts-ignore
642
- newMeta.splice(index, 0, item);
687
+ newMeta.splice.apply(newMeta, [index, 0].concat(_toConsumableArray(items)));
643
688
  setMeta(newMeta, groupIndex);
644
689
  };
645
690
  var delMeta = function delMeta(meta, groupIndex) {
@@ -797,7 +842,15 @@ var useStore = function useStore() {
797
842
  sourceData: sourceData,
798
843
  setSourceData: setSourceData,
799
844
  setFetchDiffFn: setFetchDiffFn,
800
- getModuleDiffCode: getModuleDiffCode
845
+ getModuleDiffCode: getModuleDiffCode,
846
+ isSubquery: isSubquery,
847
+ setIsSubquery: setIsSubquery,
848
+ moduleCopy: moduleCopy,
849
+ setModuleCopy: setModuleCopy,
850
+ metabaseCopyModule: metabaseCopyModule,
851
+ setMetabaseCopyModule: setMetabaseCopyModule,
852
+ isMetabaseCopy: isMetabaseCopy,
853
+ setIsMetabaseCopy: setIsMetabaseCopy
801
854
  };
802
855
  };
803
856
  export default useStore;
package/lib/es/index.js CHANGED
@@ -50,6 +50,8 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
50
50
  filterCustomType = _props$filterCustomTy === void 0 ? false : _props$filterCustomTy,
51
51
  _props$isExit = props.isExit,
52
52
  isExit = _props$isExit === void 0 ? false : _props$isExit,
53
+ _props$isSubquery = props.isSubquery,
54
+ isSubquery = _props$isSubquery === void 0 ? false : _props$isSubquery,
53
55
  _props$tableEnableAli = props.tableEnableAlias,
54
56
  tableEnableAlias = _props$tableEnableAli === void 0 ? true : _props$tableEnableAli,
55
57
  _props$fieldEnableAli = props.fieldEnableAlias,
@@ -64,7 +66,9 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
64
66
  _props$metabaseCopy = props.metabaseCopy,
65
67
  metabaseCopy = _props$metabaseCopy === void 0 ? false : _props$metabaseCopy,
66
68
  _props$moduleDiff = props.moduleDiff,
67
- moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff;
69
+ moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff,
70
+ _props$moduleCopy = props.moduleCopy,
71
+ moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy;
68
72
  var store = useData();
69
73
  useEffect(function () {
70
74
  getTables && store.setFetchDatasetFn(getTables);
@@ -78,7 +82,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
78
82
  useEffect(function () {
79
83
  var _value = reassembleByUnion(patchData(value));
80
84
  var source_value = patchData(value);
81
- store.setPreData(cloneDeep(_value));
85
+ store.setPreData(cloneDeep(_value), isSubquery);
82
86
  store.setSourceData(source_value);
83
87
  }, [value]);
84
88
  useEffect(function () {
@@ -104,7 +108,9 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
104
108
  store.setCopyType(copyType || []);
105
109
  store.setMetabaseCopy(metabaseCopy);
106
110
  store.setModuleDiff(moduleDiff);
107
- }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff]);
111
+ store.setIsSubquery(isSubquery);
112
+ store.setModuleCopy(moduleCopy);
113
+ }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, isSubquery, moduleCopy]);
108
114
  React.useImperativeHandle(ref, function () {
109
115
  return {
110
116
  // setDatasource: (list) => {
@@ -169,7 +169,9 @@ export default register('en', {
169
169
  'metabase.copySuccess': 'Copy success',
170
170
  'metabase.pasteSuccess': 'Paste success',
171
171
  'metabase.paste': 'Paste',
172
- 'customColumn.closeCopy': 'Close Copy',
173
- 'customColumn.openCopy': 'Open Copy',
174
- 'customColumn.copyAll': 'Copy All'
172
+ 'customColumn.closeCopy': 'Close Select',
173
+ 'customColumn.openCopy': 'Open Select',
174
+ 'customColumn.copyAll': 'Copy All',
175
+ 'customColumn.delSelect': 'Delete Selected',
176
+ 'customColumn.confirmDelete': 'Confirm delete selected?'
175
177
  });
@@ -169,7 +169,9 @@ export default register('zh', {
169
169
  'metabase.copySuccess': '复制成功',
170
170
  'metabase.pasteSuccess': '粘贴成功',
171
171
  'metabase.paste': '粘贴',
172
- 'customColumn.closeCopy': '关闭复制',
173
- 'customColumn.openCopy': '开启复制',
174
- 'customColumn.copyAll': '复制全部'
172
+ 'customColumn.closeCopy': '关闭勾选',
173
+ 'customColumn.openCopy': '开启勾选',
174
+ 'customColumn.copyAll': '复制全部',
175
+ 'customColumn.delSelect': '删除选中',
176
+ 'customColumn.confirmDelete': '确认删除选中?'
175
177
  });
package/lib/es/types.d.ts CHANGED
@@ -38,6 +38,7 @@ export interface MetabaseProps {
38
38
  notExistsColumns?: DataType[];
39
39
  formulaTemplates?: FormulaTemplatesItem[];
40
40
  isExit?: boolean;
41
+ isSubquery?: boolean;
41
42
  tableEnableAlias?: boolean;
42
43
  fieldEnableAlias?: boolean;
43
44
  groupByEnableAlias?: boolean;
@@ -50,6 +51,7 @@ export interface MetabaseProps {
50
51
  copyType?: (FormulaTypeEnum | string)[];
51
52
  metabaseCopy?: boolean;
52
53
  moduleDiff?: boolean;
54
+ moduleCopy?: boolean;
53
55
  getModuleDiffCode?: (obj: {
54
56
  oldCode: MetaListType;
55
57
  newCode: MetaListType;
@@ -11,6 +11,7 @@ interface StorageType {
11
11
  theme?: string;
12
12
  _metabaseCopy?: any[];
13
13
  _metabaseCopyItems?: any[];
14
+ _metabaseCopyModule?: any[];
14
15
  }
15
16
  /**
16
17
  * 便捷操作 localStorage & sessionStorage
@@ -37,7 +37,8 @@ export var Cache = /*#__PURE__*/function () {
37
37
  var storageMap = {
38
38
  theme: new Cache(Local, THEME),
39
39
  _metabaseCopy: new Cache(Local, '_metabaseCopy'),
40
- _metabaseCopyItems: new Cache(Local, '_metabaseCopyItems')
40
+ _metabaseCopyItems: new Cache(Local, '_metabaseCopyItems'),
41
+ _metabaseCopyModule: new Cache(Local, '_metabaseCopyModule')
41
42
  };
42
43
  function observer(obj, key) {
43
44
  Object.defineProperty(obj, key, {
package/lib/es/utils.d.ts CHANGED
@@ -12,6 +12,8 @@ interface HelperResultType {
12
12
  nextTypes: TypeEnum[];
13
13
  prevList: MetaListType[];
14
14
  nextList: MetaListType[];
15
+ prevItem: MetaListType;
16
+ nextItem: MetaListType;
15
17
  prevGroupBy: MetaSummarize | undefined;
16
18
  nextGroupBy: MetaSummarize | undefined;
17
19
  prevTables: {
@@ -30,4 +32,8 @@ export declare const buildSqlQuery: (data: MetaListType[] | undefined, type: str
30
32
  export declare const isError: (item: AtomsItem | AtomsItem[], data: DataType[]) => boolean;
31
33
  export declare const changeCopyField: (items: AtomsItem[], data: any[]) => AtomsItem[];
32
34
  export declare const changeExistsCopyField: (list: MetaListType[], data: any[]) => MetaListType[];
35
+ export declare const metaIsCheck: (data: any[], item: any) => boolean;
36
+ export declare const isCanPaste: (item: MetaListType | MetaListType[], options: {
37
+ nextTypes: string[];
38
+ }) => boolean;
33
39
  export {};
package/lib/es/utils.js CHANGED
@@ -62,6 +62,10 @@ export var getHelper = function getHelper(list, item) {
62
62
  var leftList = list.slice(0, curIndex);
63
63
  var rightList = list.slice(curIndex + 1);
64
64
  var topList = leftList; // 包含自己
65
+ // let prevType = list[curIndex - 1]?.type || '';
66
+ // let nextType = list[curIndex + 1]?.type || '';
67
+ var prevItem = list[curIndex - 1] || {};
68
+ var nextItem = list[curIndex + 1] || {};
65
69
  var ExistAboveGroupBy = false;
66
70
  var ExistBelowGroupBy = false;
67
71
  var prevTypes = [];
@@ -96,7 +100,9 @@ export var getHelper = function getHelper(list, item) {
96
100
  nextList: nextList,
97
101
  prevGroupBy: prevGroupBy,
98
102
  nextGroupBy: nextGroupBy,
99
- prevTables: prevTables
103
+ prevTables: prevTables,
104
+ prevItem: prevItem,
105
+ nextItem: nextItem
100
106
  };
101
107
  };
102
108
  // 获取子查询的字段
@@ -887,4 +893,18 @@ export var changeExistsCopyField = function changeExistsCopyField(list, data) {
887
893
  }
888
894
  return _objectSpread({}, v);
889
895
  })) || [];
896
+ };
897
+ export var metaIsCheck = function metaIsCheck(data, item) {
898
+ return (data === null || data === void 0 ? void 0 : data.filter(function (v) {
899
+ return v.metaKey == item.metaKey;
900
+ }).length) > 0;
901
+ };
902
+ export var isCanPaste = function isCanPaste(item, options) {
903
+ if (Array.isArray(item)) {
904
+ return item.every(function (v) {
905
+ return options.nextTypes.includes(v.type);
906
+ });
907
+ }
908
+ var type = item.type;
909
+ return options.nextTypes.includes(type);
890
910
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.81",
3
+ "version": "1.0.83",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",