esoftplay 0.0.111 → 0.0.112

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/bin/build.js CHANGED
@@ -27,7 +27,7 @@ if (fs.existsSync(packjson)) {
27
27
  /* ADD SCRIPTS.PRESTART AND SCRIPTS.POSTSTOP */
28
28
 
29
29
  if (args[0] == "install") {
30
- $package.scripts.start = "esp start && expo start --dev-client"
30
+ $package.scripts.start = "esp start && expo start"
31
31
  fs.writeFile(packjson, JSON.stringify($package, null, 2), (err) => {
32
32
  if (err) throw err;
33
33
  console.log('package.json has been updated');
@@ -210,10 +210,9 @@ yarn-error.log\n\
210
210
  import * as ErrorReport from 'esoftplay/error';
211
211
  import * as Notifications from 'expo-notifications';
212
212
  import React, { useEffect, useRef } from 'react';
213
- import { enableScreens, enableFreeze } from 'react-native-screens';
213
+ import { enableScreens } from 'react-native-screens';
214
214
  const { globalIdx } = require('esoftplay/global');
215
215
  enableScreens();
216
- enableFreeze(true);
217
216
 
218
217
  Notifications.addNotificationResponseReceivedListener(x => LibNotification.onAction(x));
219
218
 
@@ -258,7 +257,6 @@ export default function App() {
258
257
  'dayjs',
259
258
  'react-fast-compare',
260
259
  'react-native-gesture-handler',
261
- 'react-native-fast-image',
262
260
  'react-native-awesome-gallery',
263
261
  'react-native-picker-scrollview',
264
262
  'react-native-pinch-zoom-view-movable',
@@ -311,11 +309,8 @@ export default function App() {
311
309
  cmd += "&& yarn add " + installDevLibs.join(" ") + " --dev "
312
310
  if (installExpoLibs.length > 0)
313
311
  cmd += "&& expo install " + installExpoLibs.join(" ")
314
- cmd += " && node ./node_modules/esoftplay/bin/router.js"
312
+ // cmd += " && npm i -s esoftplay"
315
313
  execSync(cmd)
316
- // if (fs.existsSync("../../node_modules/esoftplay/bin/router.js")) {
317
- // execSync("node ../../node_modules/esoftplay/bin/router.js")
318
- // }
319
314
  console.log('App.js has been replace to App.tsx');
320
315
  // /* bugfix AsyncStorage @firebase, remove this section if firebase has update the AsyncStorage */
321
316
  // if (fs.existsSync('../@firebase/app/dist/index.rn.cjs.js')) {
package/bin/cli.js CHANGED
File without changes
package/bin/router.js CHANGED
@@ -578,14 +578,12 @@ function createRouter() {
578
578
  staticImport.splice(0, 0, item)
579
579
  } else if (module == 'lib' && task == 'style') {
580
580
  staticImport.splice(0, 0, item)
581
- } else if (module == 'lib' && task == 'sqlite') {
582
- staticImport.splice(1, 0, item)
583
- } else if (module == 'lib' && task == 'worker_data') {
584
- staticImport.splice(2, 0, item)
585
581
  } else if (module == 'lib' && task == 'worker') {
586
582
  staticImport.splice(2, 0, item)
587
583
  } else if (module == 'lib' && task == 'navigation') {
588
584
  staticImport.splice(2, 0, item)
585
+ } else if (task == 'style') {
586
+ staticImport.splice(9, 0, item)
589
587
  } else {
590
588
  staticImport.push(item);
591
589
  }
package/error.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import AsyncStorage from '@react-native-async-storage/async-storage';
2
- import { LibCurl, UserClass, esp } from 'esoftplay';
2
+ import { LibCurl, UserClass } from 'esoftplay';
3
+ import esp from 'esoftplay/esp';
3
4
  import Constants from 'expo-constants';
4
- import { Platform } from 'react-native';
5
+ import { Alert, Platform } from 'react-native';
5
6
  import { default as UserRoutes } from './modules/user/routes';
6
7
  let pack = require('../../package.json');
7
8
  let app = require('../../app.json');
@@ -49,16 +50,21 @@ export function reportApiError(fetch: any, error: any) {
49
50
  disable_web_page_preview: true
50
51
  }
51
52
  new LibCurl().custom('https://api.telegram.org/bot923808407:AAEFBlllQNKCEn8E66fwEzCj5vs9qGwVGT4/sendMessage', post)
52
- return
53
+ } else {
54
+ config?.errorReport?.telegramIds?.forEach?.((id: string) => {
55
+ let post = {
56
+ text: msg.slice(0, 4000),
57
+ chat_id: id,
58
+ disable_web_page_preview: true
59
+ }
60
+ new LibCurl().custom('https://api.telegram.org/bot923808407:AAEFBlllQNKCEn8E66fwEzCj5vs9qGwVGT4/sendMessage', post, (res) => {
61
+ // debug sementara sampe tahu masalahnya
62
+ if (user.username.includes("@fisip.net")) {
63
+ Alert.alert("DEBUG Telegram api error", res, [{ text: 'OK' }])
64
+ }
65
+ })
66
+ })
53
67
  }
54
- config?.errorReport?.telegramIds?.forEach?.((id: string) => {
55
- let post = {
56
- text: msg,
57
- chat_id: id,
58
- disable_web_page_preview: true
59
- }
60
- new LibCurl().custom('https://api.telegram.org/bot923808407:AAEFBlllQNKCEn8E66fwEzCj5vs9qGwVGT4/sendMessage', post)
61
- })
62
68
  }
63
69
 
64
70
  export function getError() {
package/esp.ts CHANGED
@@ -8,6 +8,7 @@ import routers from './cache/routers';
8
8
  import './oneplusfixfont';
9
9
  LogBox.ignoreLogs(['YellowBox has been replaced with LogBox. Please call LogBox.ignoreLogs() instead.']);
10
10
  LogBox.ignoreLogs(['VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.']);
11
+ LogBox.ignoreLogs([`Got a component with the name 'm'`]);
11
12
  let app = require('../../app.json');
12
13
  let conf = require('../../config.json');
13
14
  let lconf
@@ -1,13 +1,14 @@
1
- // noPage
2
- import { esp, LibCrypt, LibNet_status, LibObject, LibProgress, LibUtils, LogStateProperty } from 'esoftplay';
1
+ import { esp, LibCrypt, LibNet_status, LibObject, LibProgress, LibToastProperty, LibUtils, LogStateProperty } from 'esoftplay';
3
2
  import { reportApiError } from "esoftplay/error";
4
3
  import moment from "esoftplay/moment";
5
4
  import Constants from 'expo-constants';
5
+
6
6
  const axios = require('axios');
7
7
  const { manifest } = Constants;
8
8
 
9
9
  export default class ecurl {
10
10
  timeout = 55000;
11
+ maxRetry = 2;
11
12
  timeoutContext: any = null;
12
13
  isDebug = esp.config("isDebug");
13
14
  post: any;
@@ -28,6 +29,7 @@ export default class ecurl {
28
29
 
29
30
  constructor(uri?: string, post?: any, onDone?: (res: any, msg: string) => void, onFailed?: (msg: string, timeout: boolean) => void, debug?: number) {
30
31
  this.header = {}
32
+ this.maxRetry = 2;
31
33
  this.setUri = this.setUri.bind(this);
32
34
  this.setUrl = this.setUrl.bind(this);
33
35
  this.buildUri = this.buildUri.bind(this);
@@ -58,7 +60,6 @@ export default class ecurl {
58
60
  this.cancelTimeout()
59
61
  this.timeoutContext = setTimeout(() => {
60
62
  if (this.abort?.cancel) {
61
- // reportApiError(`Request timeout`, this.url + this.uri)
62
63
  this.closeConnection()
63
64
  LibProgress.hide()
64
65
  }
@@ -166,32 +167,30 @@ export default class ecurl {
166
167
  }
167
168
  let ps = Object.keys(_post).map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(_post[key])).join('&');
168
169
  var options: any = {
169
- url: this.url + this.uri + (token_uri || 'get_token'),
170
+ signal: this.signal,
170
171
  method: "POST",
171
- cancelToken: this.abort.token,
172
172
  headers: {
173
173
  ...this.header,
174
174
  ["Content-Type"]: "application/x-www-form-urlencoded;charset=UTF-8"
175
175
  },
176
- data: ps,
176
+ body: ps,
177
177
  cache: "no-store",
178
178
  _post: _post
179
179
  }
180
- this.initTimeout();
181
- axios(options).then(async (res: any) => {
182
- this.cancelTimeout();
183
- let resText = res.data;
180
+ fetch(this.url + this.uri + (token_uri || 'get_token'), options).then(async (res) => {
181
+ let resText = await res.text()
184
182
  this.onFetched(resText,
185
183
  (res, msg) => {
186
184
  this.init(uri, { ...post, access_token: res }, onDone, onFailed, debug);
187
185
  }, (msg) => {
188
186
  if (onFailed)
189
- onFailed(this.refineErrorMessage(msg), false)
187
+ onFailed(msg, false)
190
188
  }, debug)
191
- }).catch((r: string) => {
192
- this.cancelTimeout();
189
+ }).catch((r) => {
193
190
  LibProgress.hide()
194
191
  this.onFetchFailed(r)
192
+ // if (onFailed)
193
+ // onFailed(r, true)
195
194
  })
196
195
  }
197
196
  }
@@ -269,7 +268,7 @@ export default class ecurl {
269
268
  return signature
270
269
  }
271
270
 
272
- public async custom(uri: string, post?: any, onDone?: (res: any, timeout: boolean) => void, debug?: number): Promise<void> {
271
+ async custom(uri: string, post?: any, onDone?: (res: any, timeout: boolean) => void, debug?: number): Promise<void> {
273
272
  const str: any = LibNet_status.state().get()
274
273
  if (str.isOnline) {
275
274
  if (post) {
@@ -278,47 +277,71 @@ export default class ecurl {
278
277
  }).join('&');
279
278
  this.post = ps
280
279
  }
281
- uri = this.buildUri(uri);
280
+ this.setUri(uri)
282
281
  if ((/^[A-z]+:\/\//g).test(uri)) {
283
282
  this.setUrl(uri)
284
283
  this.setUri("")
285
284
  } else {
286
- this.setUri(uri)
287
285
  this.setUrl(esp.config("url"))
288
286
  }
289
287
  await this.setHeader()
290
288
  var options: any = {
291
- url: this.url + this.uri,
289
+ signal: this.signal,
292
290
  method: !this.post ? "GET" : "POST",
293
- cancelToken: this.abort.token,
294
291
  headers: {
295
292
  ...this.header,
296
293
  ["Content-Type"]: "application/x-www-form-urlencoded;charset=UTF-8"
297
294
  },
298
- data: !this.post ? undefined : this.post,
295
+ body: this.post,
299
296
  Cache: "no-store",
300
297
  Pragma: "no-cache",
301
298
  ['Cache-Control']: "no-store",
302
299
  mode: "cors",
303
300
  _post: post
304
301
  }
305
- if (debug == 1) {
306
- esp.log(this.url + this.uri, { ...options, cancelToken: undefined })
307
- }
302
+ if (debug == 1)
303
+ esp.log(this.url + this.uri, options)
308
304
  this.fetchConf = { url: this.url + this.uri, options: options }
309
- // this.initTimeout()
310
- axios(options).then(async (res: any) => {
311
- // this.cancelTimeout()
312
- if (res.data) {
313
- if (onDone) onDone(res.data, false)
314
- this.onDone(res.data)
305
+ fetch(this.url + this.uri, options).then(async (res) => {
306
+ var resText = await res.text()
307
+ var resJson = (resText.startsWith("{") || resText.startsWith("[")) ? JSON.parse(resText) : null
308
+ if (resJson) {
309
+ if (onDone) onDone(resJson, false)
310
+ this.onDone(resJson)
311
+ } else {
312
+ // Alert.alert(this.alertTimeout.title, this.alertTimeout.message, [
313
+ // {
314
+ // text: this.alertTimeout.ok,
315
+ // style: 'cancel',
316
+ // onPress: () => this.custom(uri, post, onDone, debug)
317
+ // },
318
+ // {
319
+ // text: this.alertTimeout.cancel,
320
+ // style: 'destructive',
321
+ // onPress: () => { }
322
+ // }
323
+ // ])
324
+ this.onFetchFailed(resText)
325
+ LibProgress.hide()
326
+ this.onError(resText)
315
327
  }
328
+ }).catch((e) => {
316
329
  LibProgress.hide()
317
- }).catch((r: string) => {
318
- // this.cancelTimeout()
319
- this.onFetchFailed(r)
320
- LibProgress.hide()
321
- this.onError(r)
330
+ // Alert.alert(this.alertTimeout.title, this.alertTimeout.message, [
331
+ // {
332
+ // text: this.alertTimeout.ok,
333
+ // style: 'cancel',
334
+ // onPress: () => this.custom(uri, post, onDone, debug)
335
+ // },
336
+ // {
337
+ // text: this.alertTimeout.cancel,
338
+ // style: 'destructive',
339
+ // onPress: () => { }
340
+ // }
341
+ // ])
342
+ this.onFetchFailed(e)
343
+ // if (onDone)
344
+ // onDone(e, true)
322
345
  })
323
346
  }
324
347
  }
@@ -352,11 +375,10 @@ export default class ecurl {
352
375
  if (!upload)
353
376
  this.header["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8"
354
377
  var options: any = {
355
- url: this.url + this.uri,
378
+ signal: this.signal,
356
379
  method: !this.post ? "GET" : "POST",
357
380
  headers: this.header,
358
- data: !this.post ? undefined : this.post,
359
- cancelToken: this.abort.token,
381
+ body: this.post,
360
382
  cache: "no-store",
361
383
  Pragma: "no-cache",
362
384
  ["Cache-Control"]: 'no-cache, no-store, must-revalidate',
@@ -364,22 +386,46 @@ export default class ecurl {
364
386
  mode: "cors",
365
387
  _post: post
366
388
  }
367
- // if (debug == 1) {
368
- // console.log(this.url + this.uri, { ...options, cancelToken: undefined })
369
- // }
370
389
 
371
- if (esp.isDebug('apitest') && manifest?.packagerOpts?.dev && LogStateProperty) {
390
+
391
+ if (manifest?.packagerOpts?.dev && LogStateProperty) {
372
392
  const allData = LogStateProperty.state().get() || []
373
393
  const logEnable = LogStateProperty.enableLog().get()
374
-
375
- const complete_uri = this.uri;
394
+ let uriOrigin = this.uri
395
+ if (this.uri == '' && this.url != '') {
396
+ uriOrigin = this.url.replace(/(https?:\/\/)/g, '')
397
+ let uriArray = uriOrigin.split('/')
398
+ let domain = uriArray[0]
399
+ if (!domain.startsWith('api.')) {
400
+ uriOrigin = ''
401
+ } else {
402
+ let uri = uriArray.slice(1, uriArray.length - 1).join('/')
403
+ let get = uriArray[uriArray.length - 1];
404
+ let newGet = '';
405
+ if (get && get.includes('?')) {
406
+ let rebuildGet = get.split('?')
407
+ for (let i = 0; i < rebuildGet.length; i++) {
408
+ const element = rebuildGet[i];
409
+ if (!element.includes('=')) {
410
+ newGet += '?id=' + element
411
+ } else {
412
+ newGet += (newGet.includes('?') ? '&' : '?') + element
413
+ }
414
+ }
415
+ } else {
416
+ newGet = get;
417
+ }
418
+ uriOrigin = uri + newGet
419
+ }
420
+ }
421
+ const complete_uri = uriOrigin
376
422
  const _uri = complete_uri.includes('?') ? complete_uri.split('?')[0] : complete_uri
377
423
  const _get = complete_uri.includes('?') ? complete_uri.split('?')[1].split('&').map((x: any) => x.split('=')).map((t: any) => {
378
424
  return ({ [t[0]]: [t[1]] })
379
425
  }) : []
380
426
  const get = Object.assign({}, ..._get)
381
427
  const _post = post && Object.keys(post).map((key) => {
382
- return ({ [key]: [post[key]] })
428
+ return ({ [key]: [decodeURI(post[key])] })
383
429
  }) || []
384
430
  const postNew = Object.assign({}, ..._post)
385
431
 
@@ -387,28 +433,58 @@ export default class ecurl {
387
433
  const data = {
388
434
  [_uri]: {
389
435
  secure: this.isSecure,
436
+ time: moment().format('YYYY-MM-DD HH:mm:ss'),
390
437
  get: get,
391
- post: postNew
438
+ post: postNew,
392
439
  }
393
440
  }
394
- let dt = LibObject.push(allData, data)()
441
+ let dt = LibObject.unshift(allData, data)()
395
442
  if (logEnable) {
396
443
  LogStateProperty.state().set(dt)
397
444
  }
398
445
  }
399
446
  }
400
447
 
401
- this.fetchConf = { url: this.url + this.uri, options: options }
402
448
  this.initTimeout(upload ? 120000 : undefined)
403
- axios(options).then(async (res: any) => {
404
- this.cancelTimeout()
405
- this.onFetched(res.data, onDone, onFailed, debug)
406
- }).catch((e: any) => {
407
- this.cancelTimeout()
408
- this.onFetched(e, onDone, onFailed, debug)
449
+ if (debug == 1) esp.log(this.url + this.uri, options)
450
+ this.fetchConf = { url: this.url + this.uri, options: options }
451
+
452
+ // if (Platform.OS == 'android' && Platform.Version <= 22) {
453
+ // var res = await fetch(this.url + this.uri, options);
454
+ // let resText = await res.text()
455
+ // this.onFetched(resText, onDone, onFailed, debug)
456
+ // } else
457
+ // if (!upload) {
458
+ // LibWorker.curl(this.url + this.uri, options, async (resText) => {
459
+ // if (typeof resText == 'string') {
460
+ // this.onFetched(resText, onDone, onFailed, debug)
461
+ // }
462
+ // })
463
+ // } else {
464
+ fetch(this.url + this.uri, options).then(async (res) => {
465
+ let resText = await res.text()
466
+ this.onFetched(resText, onDone, onFailed, debug)
467
+ }).catch((r) => {
468
+ // Alert.alert(this.alertTimeout.title, this.alertTimeout.message, [
469
+ // {
470
+ // text: this.alertTimeout.ok,
471
+ // style: 'cancel',
472
+ // onPress: () => this.init(uri, post, onDone, onFailed, debug)
473
+ // },
474
+ // {
475
+ // text: this.alertTimeout.cancel,
476
+ // style: 'destructive',
477
+ // onPress: () => { }
478
+ // }
479
+ // ])
480
+ this.onFetchFailed(r)
481
+ LibProgress.hide()
409
482
  })
483
+ // }
410
484
  }
411
485
 
486
+
487
+
412
488
  protected onFetched(resText: string | Object, onDone?: (res: any, msg: string) => void, onFailed?: (msg: string, timeout: boolean) => void, debug?: number): void {
413
489
  var resJson = typeof resText == 'string' && ((resText.startsWith("{") && resText.endsWith("}")) || (resText.startsWith("[") && resText.endsWith("]"))) ? JSON.parse(resText) : resText
414
490
  if (typeof resJson == "object") {
@@ -451,9 +527,9 @@ export default class ecurl {
451
527
  private onError(msg: string): void {
452
528
  esp.log("\x1b[31m", msg)
453
529
  esp.log("\x1b[0m")
454
- if (esp.isDebug('') && msg == '') {
455
- return
456
- }
530
+ // if (esp.isDebug('') && msg == '') {
531
+ // return
532
+ // }
457
533
  delete this.fetchConf.options.cancelToken
458
534
  reportApiError(this.fetchConf.options, msg)
459
535
  LibProgress.hide()
@@ -7,7 +7,7 @@ import { SaveFormat } from 'expo-image-manipulator';
7
7
  import * as ImagePicker from 'expo-image-picker';
8
8
  import React from 'react';
9
9
  import {
10
- ActivityIndicator, Alert, Image, TouchableOpacity, View
10
+ ActivityIndicator, Alert, Image, TouchableOpacity, View
11
11
  } from 'react-native';
12
12
  const { height, width } = LibStyle;
13
13
 
@@ -29,7 +29,7 @@ export default class eclass {
29
29
  return new Promise((r, j) => {
30
30
  AsyncStorage.getItem("user").then((user: string) => {
31
31
  if (user) {
32
- const usr = user[0] == '{' && user[user.length - 1] == '}' ? JSON.parse(user) : JSON.parse(new LibCrypt().decode(user))
32
+ const usr = (user[0] == '{' && user[user.length - 1] == '}') ? JSON.parse(user) : JSON.parse(new LibCrypt().decode(user))
33
33
  if (usr) {
34
34
  r(usr);
35
35
  state.set(usr)
@@ -4,7 +4,7 @@
4
4
  import { esp, LibDialog, LibImage, LibNet_status, LibProgress, LibStyle, LibToast, LibUpdaterProperty, LibVersion, LibWorker, LibWorkloop, LibWorkview, UseDeeplink, UserClass, UserLoading, UserMain, UserRoutes, useSafeState, _global } from 'esoftplay';
5
5
  import * as Font from "expo-font";
6
6
  import React, { useEffect, useMemo } from "react";
7
- import { Alert, View } from "react-native";
7
+ import { View } from "react-native";
8
8
  import Navs from "../../cache/navs";
9
9
 
10
10
 
@@ -46,14 +46,9 @@ export default function m(props: UserIndexProps): any {
46
46
  }
47
47
 
48
48
  useMemo(() => {
49
- const timeout = setTimeout(() => {
50
- Alert.alert("Yey...! Pembaharuan sudah selesai", "Silahkan mulai ulang aplikasi kamu", [
51
- {
52
- onPress: () => LibUpdaterProperty.install(),
53
- text: "Mulai Ulang Sekarang"
54
- }
55
- ], { cancelable: false })
56
- }, 30 * 1000);
49
+ // const timeout = setTimeout(() => {
50
+ // setLoading(false)
51
+ // }, 15 * 1000);
57
52
  if (esp.config('firebase').hasOwnProperty('apiKey')) {
58
53
  try {
59
54
  const chatFirebase = require('../chatting/firebase')?.default
@@ -65,14 +60,9 @@ export default function m(props: UserIndexProps): any {
65
60
  }
66
61
  UserClass.isLogin(async () => {
67
62
  await setFonts()
68
- LibUpdaterProperty.check((isNew) => {
69
- if (isNew) {
70
- LibUpdaterProperty.install()
71
- } else {
72
- clearTimeout(timeout)
73
- setLoading(false)
74
- }
75
- })
63
+ LibUpdaterProperty.check((isNew) => { })
64
+ // clearTimeout(timeout)
65
+ setLoading(false)
76
66
  })
77
67
  }, [])
78
68
 
@@ -6,7 +6,6 @@ import {
6
6
  import { StatusBar } from 'expo-status-bar';
7
7
  import React from "react";
8
8
  import { Image, KeyboardAvoidingView, Pressable, ScrollView, Text, TextInput, TouchableOpacity, View } from "react-native";
9
- const config = esp.config();
10
9
 
11
10
 
12
11
 
@@ -31,7 +30,7 @@ export interface UserLoginState {
31
30
  isLoading: boolean
32
31
  }
33
32
 
34
- export default class m extends LibComponent<UserLoginProps, UserLoginState> {
33
+ export default class euserLogin extends LibComponent<UserLoginProps, UserLoginState> {
35
34
 
36
35
  inputUsername: any;
37
36
  inputPassword: any;
@@ -1,9 +1,9 @@
1
1
  //
2
2
 
3
3
  import {
4
- esp, LibComponent, LibCrypt,
5
- LibCurl, LibIcon, LibList, LibNotification, LibObject, LibStatusbar, LibStyle, LibUtils, useGlobalReturn, useGlobalState,
6
- UserClass, UserNotification_item
4
+ esp, LibComponent, LibCrypt,
5
+ LibCurl, LibIcon, LibList, LibNotification, LibObject, LibStatusbar, LibStyle, LibUtils, useGlobalReturn, useGlobalState,
6
+ UserClass, UserNotification_item
7
7
  } from "esoftplay";
8
8
  import * as Notifications from 'expo-notifications';
9
9
  import React from "react";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "esoftplay",
3
- "version": "0.0.111",
3
+ "version": "0.0.112",
4
4
  "description": "embedding data from esoftplay framework (web based) into mobile app",
5
5
  "main": "cache/index.js",
6
6
  "types": "../../index.d.ts",