ts-glitter 16.0.1 → 16.0.3

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/lowcode/Entry.js CHANGED
@@ -79,7 +79,7 @@ export class Entry {
79
79
  }
80
80
  window.renderClock = (_a = window.renderClock) !== null && _a !== void 0 ? _a : clockF();
81
81
  console.log(`Entry-time:`, window.renderClock.stop());
82
- glitter.share.editerVersion = 'V_16.0.1';
82
+ glitter.share.editerVersion = 'V_16.0.3';
83
83
  glitter.share.start = new Date();
84
84
  const vm = {
85
85
  appConfig: [],
package/lowcode/Entry.ts CHANGED
@@ -81,7 +81,7 @@ export class Entry {
81
81
 
82
82
  (window as any).renderClock = (window as any).renderClock ?? clockF();
83
83
  console.log(`Entry-time:`, (window as any).renderClock.stop());
84
- glitter.share.editerVersion = 'V_16.0.1';
84
+ glitter.share.editerVersion = 'V_16.0.3';
85
85
  glitter.share.start = new Date();
86
86
  const vm: {
87
87
  appConfig: any;
@@ -23,69 +23,75 @@ export class EditorConfig {
23
23
  color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700;
24
24
  }
25
25
  `);
26
- const html = String.raw;
27
- return gvc.bindView(() => {
28
- return {
29
- bind: 'top-notice',
30
- view: () => {
31
- bg_color = '#FEAD20';
32
- const plan = EditorConfig.getPaymentStatus();
33
- let text = '';
34
- let paymentBtn = `<span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; text-decoration: underline; word-wrap: break-word;cursor: pointer;" class="" onclick="${gvc.event(() => {
35
- gvc.glitter.setUrlParameter('tab', 'member_plan');
36
- gvc.recreateView();
37
- })}">前往續約</span>`;
38
- let differenceInTime = new Date(plan.dead_line).getTime() - new Date().getTime();
39
- let differenceInDays = (differenceInTime / (1000 * 3600 * 24)).toFixed(0);
40
- if (plan.plan === 'free' && differenceInDays > 1) {
41
- if (gvc.glitter.getUrlParameter('tab') === 'home_page' || ((gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Web) || document.body.clientWidth > 800)) {
42
- text = `<div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:10px;">
26
+ function getText() {
27
+ bg_color = '#FEAD20';
28
+ const plan = EditorConfig.getPaymentStatus();
29
+ let text = '';
30
+ let paymentBtn = `<span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; text-decoration: underline; word-wrap: break-word;cursor: pointer;" class="" onclick="${gvc.event(() => {
31
+ gvc.glitter.setUrlParameter('tab', 'member_plan');
32
+ gvc.recreateView();
33
+ })}">前往續約</span>`;
34
+ let differenceInTime = new Date(plan.dead_line).getTime() - new Date().getTime();
35
+ let differenceInDays = (differenceInTime / (1000 * 3600 * 24)).toFixed(0);
36
+ if (plan.plan === 'free' && differenceInDays > 1) {
37
+ if (gvc.glitter.getUrlParameter('tab') === 'home_page' || ((gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Web) || document.body.clientWidth > 800)) {
38
+ text = `<div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:5px;">
43
39
  <span class="notice_text">立即聯繫開店顧問,專人協助打造高質感官網</span>
44
40
  <button class="btn btn-black " type="button" style="height:30px;" onclick="${gvc.event(() => {
45
- gvc.glitter.openNewTab(`https://liff.line.me/1645278921-kWRPP32q/?accountId=263cycek`);
46
- })}">
41
+ gvc.glitter.openNewTab(`https://liff.line.me/1645278921-kWRPP32q/?accountId=263cycek`);
42
+ })}">
47
43
  <span class="tx_700_white">聯繫顧問</span>
48
44
  </button>
49
45
  </div>`;
50
- }
51
- else {
52
- bg_color = '#ff6c02';
53
- text = `
46
+ }
47
+ else {
48
+ bg_color = '#ff6c02';
49
+ text = `
54
50
 
55
- <div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:10px;">
51
+ <div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:5px;">
56
52
  <span class="notice_text">立即下載行動後台APP,享受流暢操作體驗</span>
57
53
  <button class="btn btn-black " type="button" style="height:30px;" onclick="${gvc.event(() => {
58
- function isAppleDevice() {
59
- return /iPhone|iPad|iPod/i.test(navigator.userAgent);
60
- }
61
- function isAndroidDevice() {
62
- return /Android/i.test(navigator.userAgent);
63
- }
64
- if (isAppleDevice()) {
65
- gvc.glitter.openNewTab(`https://apps.apple.com/us/app/shopnex-%E5%85%A8%E9%80%9A%E8%B7%AF%E6%95%B4%E5%90%88%E9%96%8B%E5%BA%97%E5%B9%B3%E5%8F%B0/id6736935325`);
66
- }
67
- else if (isAndroidDevice()) {
68
- gvc.glitter.openNewTab(`https://play.google.com/store/apps/details?id=shopnex.cc`);
69
- }
70
- })}">
54
+ function isAppleDevice() {
55
+ return /iPhone|iPad|iPod/i.test(navigator.userAgent);
56
+ }
57
+ function isAndroidDevice() {
58
+ return /Android/i.test(navigator.userAgent);
59
+ }
60
+ if (isAppleDevice()) {
61
+ gvc.glitter.openNewTab(`https://apps.apple.com/us/app/shopnex-%E5%85%A8%E9%80%9A%E8%B7%AF%E6%95%B4%E5%90%88%E9%96%8B%E5%BA%97%E5%B9%B3%E5%8F%B0/id6736935325`);
62
+ }
63
+ else if (isAndroidDevice()) {
64
+ gvc.glitter.openNewTab(`https://play.google.com/store/apps/details?id=shopnex.cc`);
65
+ }
66
+ })}">
71
67
  <span class="tx_700_white">前往下載</span>
72
68
  </button>
73
69
  </div>
74
70
  `;
75
- }
76
- }
77
- else if (new Date(plan.dead_line).getTime() < new Date().getTime()) {
78
- text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案已過期,為維護您的權益,請儘速${paymentBtn}。</span>`;
79
- }
80
- else if (differenceInDays < 30) {
81
- text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案將於${differenceInDays}天後到期,為維護您的權益,請儘速${paymentBtn}。</span>`;
82
- }
83
- else {
84
- return ``;
85
- }
71
+ }
72
+ }
73
+ else if (new Date(plan.dead_line).getTime() < new Date().getTime()) {
74
+ text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案已過期,為維護您的權益,請儘速${paymentBtn}。</span>`;
75
+ }
76
+ else if (differenceInDays < 30) {
77
+ text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案將於${differenceInDays}天後到期,為維護您的權益,請儘速${paymentBtn}。</span>`;
78
+ }
79
+ else {
80
+ return ``;
81
+ }
82
+ return text;
83
+ }
84
+ const html = String.raw;
85
+ if (!getText()) {
86
+ return ``;
87
+ }
88
+ return gvc.bindView(() => {
89
+ return {
90
+ bind: 'top-notice',
91
+ view: () => {
86
92
  return html `
87
93
  <div style="text-align: center;white-space:normal;" class="w-100">
88
- ${text}
94
+ ${getText()}
89
95
  </div>`;
90
96
  },
91
97
  divCreate: () => {
@@ -99,69 +99,76 @@ export class EditorConfig {
99
99
  color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700;
100
100
  }
101
101
  `)
102
- const html = String.raw
103
- return gvc.bindView(() => {
104
- return {
105
- bind: 'top-notice',
106
- view: () => {
107
- bg_color = '#FEAD20'
108
- const plan = EditorConfig.getPaymentStatus();
109
- let text = '';
110
- let paymentBtn = `<span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; text-decoration: underline; word-wrap: break-word;cursor: pointer;" class="" onclick="${gvc.event(
111
- () => {
112
- gvc.glitter.setUrlParameter('tab', 'member_plan');
113
- gvc.recreateView();
114
- }
115
- )}">前往續約</span>`;
116
- // 計算兩個日期的毫秒數之差
117
- let differenceInTime = new Date(plan.dead_line).getTime() - new Date().getTime();
118
- // 將毫秒數轉換為天數
119
- let differenceInDays: any = (differenceInTime / (1000 * 3600 * 24)).toFixed(0);
120
- if (plan.plan === 'free' && differenceInDays > 1) {
121
- if (gvc.glitter.getUrlParameter('tab') === 'home_page' || ((gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Web) || document.body.clientWidth > 800)) {
122
- text = `<div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:10px;">
102
+ function getText(){
103
+ bg_color = '#FEAD20'
104
+ const plan = EditorConfig.getPaymentStatus();
105
+ let text = '';
106
+ let paymentBtn = `<span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; text-decoration: underline; word-wrap: break-word;cursor: pointer;" class="" onclick="${gvc.event(
107
+ () => {
108
+ gvc.glitter.setUrlParameter('tab', 'member_plan');
109
+ gvc.recreateView();
110
+ }
111
+ )}">前往續約</span>`;
112
+ // 計算兩個日期的毫秒數之差
113
+ let differenceInTime = new Date(plan.dead_line).getTime() - new Date().getTime();
114
+ // 將毫秒數轉換為天數
115
+ let differenceInDays: any = (differenceInTime / (1000 * 3600 * 24)).toFixed(0);
116
+ if (plan.plan === 'free' && differenceInDays > 1) {
117
+ if (gvc.glitter.getUrlParameter('tab') === 'home_page' || ((gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Web) || document.body.clientWidth > 800)) {
118
+ text = `<div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:5px;">
123
119
  <span class="notice_text">立即聯繫開店顧問,專人協助打造高質感官網</span>
124
120
  <button class="btn btn-black " type="button" style="height:30px;" onclick="${gvc.event(()=>{
125
- gvc.glitter.openNewTab(`https://liff.line.me/1645278921-kWRPP32q/?accountId=263cycek`)
126
- })}">
121
+ gvc.glitter.openNewTab(`https://liff.line.me/1645278921-kWRPP32q/?accountId=263cycek`)
122
+ })}">
127
123
  <span class="tx_700_white">聯繫顧問</span>
128
124
  </button>
129
125
  </div>`;
130
- } else {
131
- bg_color = '#ff6c02'
132
- text = `
126
+ } else {
127
+ bg_color = '#ff6c02'
128
+ text = `
133
129
 
134
- <div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:10px;">
130
+ <div class="d-flex flex-column flex-sm-row align-items-center justify-content-center" style="gap:5px;">
135
131
  <span class="notice_text">立即下載行動後台APP,享受流暢操作體驗</span>
136
132
  <button class="btn btn-black " type="button" style="height:30px;" onclick="${gvc.event(()=>{
137
- function isAppleDevice() {
138
- return /iPhone|iPad|iPod/i.test(navigator.userAgent);
139
- }
140
- function isAndroidDevice() {
141
- return /Android/i.test(navigator.userAgent);
142
- }
133
+ function isAppleDevice() {
134
+ return /iPhone|iPad|iPod/i.test(navigator.userAgent);
135
+ }
136
+ function isAndroidDevice() {
137
+ return /Android/i.test(navigator.userAgent);
138
+ }
143
139
 
144
- if (isAppleDevice()) {
145
- gvc.glitter.openNewTab(`https://apps.apple.com/us/app/shopnex-%E5%85%A8%E9%80%9A%E8%B7%AF%E6%95%B4%E5%90%88%E9%96%8B%E5%BA%97%E5%B9%B3%E5%8F%B0/id6736935325`)
146
- } else if (isAndroidDevice()) {
147
- gvc.glitter.openNewTab(`https://play.google.com/store/apps/details?id=shopnex.cc`)
148
- }
149
- })}">
140
+ if (isAppleDevice()) {
141
+ gvc.glitter.openNewTab(`https://apps.apple.com/us/app/shopnex-%E5%85%A8%E9%80%9A%E8%B7%AF%E6%95%B4%E5%90%88%E9%96%8B%E5%BA%97%E5%B9%B3%E5%8F%B0/id6736935325`)
142
+ } else if (isAndroidDevice()) {
143
+ gvc.glitter.openNewTab(`https://play.google.com/store/apps/details?id=shopnex.cc`)
144
+ }
145
+ })}">
150
146
  <span class="tx_700_white">前往下載</span>
151
147
  </button>
152
148
  </div>
153
149
  `;
154
- }
155
- } else if (new Date(plan.dead_line).getTime() < new Date().getTime()) {
156
- text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案已過期,為維護您的權益,請儘速${paymentBtn}。</span>`;
157
- } else if (differenceInDays < 30) {
158
- text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案將於${differenceInDays}天後到期,為維護您的權益,請儘速${paymentBtn}。</span>`;
159
- } else {
160
- return ``;
161
- }
150
+ }
151
+ } else if (new Date(plan.dead_line).getTime() < new Date().getTime()) {
152
+ text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案已過期,為維護您的權益,請儘速${paymentBtn}。</span>`;
153
+ } else if (differenceInDays < 30) {
154
+ text = ` <i class="fa-sharp fa-solid fa-bullhorn" style="color: white;"></i><span style="color: white; font-size: 16px; font-family: Noto Sans; font-weight: 700; ">方案到期提醒:您的方案將於${differenceInDays}天後到期,為維護您的權益,請儘速${paymentBtn}。</span>`;
155
+ } else {
156
+ return ``;
157
+ }
158
+ return text
159
+ }
160
+ const html = String.raw;
161
+ if(!getText()){
162
+ return ``
163
+ }
164
+ return gvc.bindView(() => {
165
+ return {
166
+ bind: 'top-notice',
167
+ view: () => {
168
+
162
169
  return html`
163
170
  <div style="text-align: center;white-space:normal;" class="w-100">
164
- ${text}
171
+ ${getText()}
165
172
  </div>`
166
173
  },
167
174
  divCreate: ()=>{
@@ -968,19 +968,19 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
968
968
  return {
969
969
  bind: id,
970
970
  view: () => {
971
+ var _a;
971
972
  return html `
972
- <div class="w-100 d-flex align-items-center justify-content-center p-3 ${richID}-loading">
973
- <div class="spinner-border"></div>
974
- </div>
975
- <div id="${richID}" style="position: relative;"></div>
976
973
  <div
977
- class="position-absolute w-100 bg-white d-flex align-items-center justify-content-center flex-column"
978
- style="top:0px;left:0px;height:${obj.rich_height || '100%'};z-index:9999;"
979
- id="hid_${id}"
974
+ class="w-100 bg-white d-flex align-items-center justify-content-center flex-column "
975
+ style="top:0px;left:0px;height:${obj.rich_height || '100%'};min-height:${(_a = obj.setHeight) !== null && _a !== void 0 ? _a : 350};z-index:9999;"
976
+ id="hid_${id}"
980
977
  >
981
978
  <div class="spinner-border"></div>
982
979
  載入中
983
980
  </div>
981
+ <div id="c_${richID}" class="w-100" style="visibility: hidden;">
982
+ <div id="${richID}" style="position: relative;"></div>
983
+ </div>
984
984
  `;
985
985
  },
986
986
  divCreate: {
@@ -1099,20 +1099,6 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1099
1099
  H6: '標題 6',
1100
1100
  },
1101
1101
  });
1102
- if (glitter.document.querySelector(`.${richID}-loading`)) {
1103
- glitter.document.querySelector(`.${richID}-loading`).remove();
1104
- }
1105
- if (loading) {
1106
- loading = false;
1107
- loadingView = true;
1108
- setTimeout(() => {
1109
- delay = false;
1110
- if (!loadingView && !delay) {
1111
- gvc.glitter.document.querySelector(`#hid_${id}`).remove();
1112
- editor.html.set(obj.def || '');
1113
- }
1114
- }, 200);
1115
- }
1116
1102
  function checkRender() {
1117
1103
  for (const toolBar of toolBarArray) {
1118
1104
  if (toolBar != '|' && !glitter.document.querySelector(`#` + richID).querySelector(`[data-cmd="${toolBar}"]`)) {
@@ -1135,10 +1121,6 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1135
1121
  }
1136
1122
  else {
1137
1123
  loadingView = false;
1138
- if (!loadingView && !delay) {
1139
- gvc.glitter.document.querySelector(`#hid_${id}`).remove();
1140
- editor.html.set(obj.def || '');
1141
- }
1142
1124
  const target = glitter.document.querySelector(`#` + richID).querySelector(`[data-cmd="insertImage"]`);
1143
1125
  target.outerHTML = html ` <button
1144
1126
  id="insertImage-replace"
@@ -1200,12 +1182,15 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1200
1182
  glitter.document.querySelector(`#` + richID).querySelector(`.fr-view`).style.minHeight = 'auto';
1201
1183
  glitter.document.querySelector(`#` + richID).querySelector(`.fr-view`).style.overflowY = 'auto';
1202
1184
  }
1185
+ editor.html.set(obj.def || '');
1203
1186
  if (obj.readonly) {
1204
1187
  editor.edit.off();
1205
1188
  editor.toolbar.disable();
1206
1189
  }
1207
1190
  console.info(`${richID} rendered richtext`);
1208
1191
  glitter.share.richTextRendering = false;
1192
+ gvc.glitter.document.querySelector(`#hid_${id}`).remove();
1193
+ glitter.document.getElementById(`c_${richID}`).style.visibility = 'visible';
1209
1194
  }
1210
1195
  }
1211
1196
  }, 100);
@@ -1071,18 +1071,17 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1071
1071
  bind: id,
1072
1072
  view: () => {
1073
1073
  return html`
1074
- <div class="w-100 d-flex align-items-center justify-content-center p-3 ${richID}-loading">
1075
- <div class="spinner-border"></div>
1076
- </div>
1077
- <div id="${richID}" style="position: relative;"></div>
1078
1074
  <div
1079
- class="position-absolute w-100 bg-white d-flex align-items-center justify-content-center flex-column"
1080
- style="top:0px;left:0px;height:${obj.rich_height || '100%'};z-index:9999;"
1081
- id="hid_${id}"
1075
+ class="w-100 bg-white d-flex align-items-center justify-content-center flex-column "
1076
+ style="top:0px;left:0px;height:${obj.rich_height || '100%'};min-height:${obj.setHeight ?? 350};z-index:9999;"
1077
+ id="hid_${id}"
1082
1078
  >
1083
1079
  <div class="spinner-border"></div>
1084
1080
  載入中
1085
1081
  </div>
1082
+ <div id="c_${richID}" class="w-100" style="visibility: hidden;">
1083
+ <div id="${richID}" style="position: relative;"></div>
1084
+ </div>
1086
1085
  `;
1087
1086
  },
1088
1087
  divCreate: {
@@ -1210,22 +1209,17 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1210
1209
  H6: '標題 6',
1211
1210
  },
1212
1211
  });
1213
-
1214
- if (glitter.document.querySelector(`.${richID}-loading`) as any) {
1215
- (glitter.document.querySelector(`.${richID}-loading`) as any).remove();
1216
- }
1217
-
1218
- if (loading) {
1219
- loading = false;
1220
- loadingView = true;
1221
- setTimeout(() => {
1222
- delay = false;
1223
- if (!loadingView && !delay) {
1224
- gvc.glitter.document.querySelector(`#hid_${id}`)!!.remove();
1225
- editor.html.set(obj.def || '');
1226
- }
1227
- }, 200);
1228
- }
1212
+ // if (loading) {
1213
+ // loading = false;
1214
+ // loadingView = true;
1215
+ // setTimeout(() => {
1216
+ // delay = false;
1217
+ // if (!loadingView && !delay) {
1218
+ // gvc.glitter.document.querySelector(`#hid_${id}`)!!.remove();
1219
+ // editor.html.set(obj.def || '');
1220
+ // }
1221
+ // }, 200);
1222
+ // }
1229
1223
 
1230
1224
  function checkRender() {
1231
1225
  for (const toolBar of toolBarArray) {
@@ -1248,10 +1242,6 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1248
1242
  return;
1249
1243
  } else {
1250
1244
  loadingView = false;
1251
- if (!loadingView && !delay) {
1252
- gvc.glitter.document.querySelector(`#hid_${id}`)!!.remove();
1253
- editor.html.set(obj.def || '');
1254
- }
1255
1245
  const target: any = glitter.document.querySelector(`#` + richID).querySelector(`[data-cmd="insertImage"]`);
1256
1246
  target.outerHTML = html` <button
1257
1247
  id="insertImage-replace"
@@ -1312,7 +1302,7 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1312
1302
  glitter.document.querySelector(`#` + richID).querySelector(`.fr-view`).style.minHeight = 'auto';
1313
1303
  glitter.document.querySelector(`#` + richID).querySelector(`.fr-view`).style.overflowY = 'auto';
1314
1304
  }
1315
-
1305
+ editor.html.set(obj.def || '');
1316
1306
  if (obj.readonly) {
1317
1307
  editor.edit.off();
1318
1308
  editor.toolbar.disable();
@@ -1320,6 +1310,8 @@ ${obj.structEnd ? obj.structEnd : '})()'}`,
1320
1310
 
1321
1311
  console.info(`${richID} rendered richtext`);
1322
1312
  glitter.share.richTextRendering = false;
1313
+ gvc.glitter.document.querySelector(`#hid_${id}`)!!.remove();
1314
+ (glitter.document.getElementById(`c_${richID}`) as any).style.visibility = 'visible';
1323
1315
  }
1324
1316
  }
1325
1317
  }, 100);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-glitter",
3
- "version": "16.0.1",
3
+ "version": "16.0.3",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {