open-index/open-npm huggingface dataset:
npm package: @idoctor-devs/event-logger
Description: NPM библиотека для отправки событий и сообщений в мессенджеры из веб-приложений
Author: punkmachine
Latest version: 0.2.13

# event-logger

Библиотека для логирования событий в SPA и отправки сообщений в мессенджеры (например, Telegram).

## Установка

```bash
npm install @idoctor-devs/event-logger
# или
yarn add @idoctor-devs/event-logger
# или
pnpm add @idoctor-devs/event-logger
```

## Быстрый старт

```ts
import { EventLogger } from '@idoctor-devs/event-logger';

const logger = new EventLogger({
  environment: 'browser',
  providers: [
    {
      type: 'telegram',
      botToken: 'ВАШ_TELEGRAM_BOT_TOKEN',
      chatId: 'ВАШ_CHAT_ID',
      // timeout: 5000, // (необязательно) таймаут в мс
      // retryAttempts: 3, // (необязательно) количество попыток при ошибке
    },
  ],
});

// Примеры логирования
logger.log('Обычное сообщение');
logger.info('Информационное сообщение', { userId: 123 });
logger.warn('Внимание!', { page: 'settings' });
logger.error('Ошибка!', { error: 'NetworkError' });
```

## Конфигурация

- **environment**: всегда `'browser'`
- **providers**: массив провайдеров (сейчас поддерживается только Telegram)
  - **type**: `'telegram'`
  - **botToken**: токен Telegram-бота (строка, обязателен)
  - **chatId**: ID чата или пользователя (строка, обязателен)
  - **timeout**: таймаут запроса (миллисекунды, необязательно)
  - **retryAttempts**: количество попыток при ошибке (необязательно)

## Примечания

- Все методы логирования (`log`, `info`, `warn`, `error`) асинхронные.
- Можно передавать дополнительную метаинформацию вторым аргументом.
- Для работы требуется корректно настроенный Telegram-бот и chatId.
npm package: @idogo/i-co
Description: Simple asynchronous working lib base on generator function.
Author: leo
Latest version: 1.0.6

# i-co
Simple asynchronous working lib base on generator function.

## Install
```bash
npm install @idogo/ico --save
```

## Usage
```js
import ico from '@idogo/ico';
```

yield a thunk.
```js
function thunk(args) {
  return function(cb) {
    process.on('async task', function(err, data) {
      if(err) return cb(err, null);
      cb(null, data);
    });
  }
}
ico(function *() {
  const response1 = yield thunk();
  const response2 = yield thunk();
  return response1 + response1;
})(function(err, data) {
  /**
  * data is return from ico argument which is generator function
  * data === response1 + response2
  * */
  console.log(data);
});
```

yield a value(should package with a thunk first).
```js
function thunk(value) {
  return function(cb) {
    cb(null, value);
  }
}

ico(function *() {
  const response1 = yield thunk(100);
  const response2 = yield thunk(200);
  return response1 + response1;
})(function(err, data) {
  console.log(data); // 300
});
```

yield a promise obj.
```js
ico(function *() {
  const response1 = yield Promise.resolve(100);
  const response2 = yield Promise.resolve(200);
  const response3 = yield new Promise(resolve => {
    resolve(300);
  });
  return response1 + response1 + response3;
})(function(err, data) {
  console.log(data); // 600
});
```

yield a Array or Object
```js
const array = [thunk(100), thunk(200), thunk(300)];
const obj = {
  t1: thunk(100),
  t2: thunk(200),
  t3: thunk(300),
  t4: {
    ['t4-1']: thunk(401),
    ['t4-2']: thunk(402)
  }
};
ico(function *() {
  const response1 = yield array;
  const response2 = yield obj;
  return [response1, response2];
})(function(err, data) {
  /**[[100, 200, 300], { t1: 100, t2: 200, t3: 300, t4: { 't4-1': 401, '4-2 : 402} }]*/
  console.log(data);
});
```

yield a generatorfunc or generator
```js
ico(function *() {
  const response1 = yield function *(){
    const response1 = yield thunk(100);
    const response2 = yield thunk(200);
    return response1 + response2;
  };
  const response2 = yield (function *() {
    const response1 = yield thunk(300);
    const response2 = yield thunk(400);
    return response1 + response2;
  })();
})(function(err, data) {
  console.log(data); // 1000
});
```

## Test
```bash
npm run test
npm run test:watch
```
npm package: @idogo/i-storage
Description: Sample project for packages built with rollup.
Author: leo
Latest version: 1.0.3

# i-storage

A localStorage package [ES6 support]

## Usage

Initialize
```js
import iStorage from 'i-storage';
const storage = new iStorage();
```

Set handler
```js
storage.setValue('key', 'Hi, book');
storage.setValue('key', 'Hi, book', Date.now()); // use expire
storage.setValue('key', 'Hi, book', (new Date('1995-12-17T03:24:00')).getTime()); // use expire
```

Get hanler
```js
storage.getValue('key');
```
npm package: @idogo/icommon
Description: A CMD module loader
Author: Leo
Latest version: 1.0.1

# icommon
> 简单的CMD模块加载器

## Require
- browser
- ~~node~~

## Install
可以通过npm获取icommon
```bash
npm install @idogo/icommon
```
```html
<script src="@idogo/icommon/dist/icommon.iife.js"></script>
```

## Usage
引入脚本
```html
<script src="icommon.iife.js"></script>
```

启动模块配置|需要指定一个主模块来承载其他业务模块
```js
icmd.use('main');
```

使用define定义模块(一个js文件为一个模块)
```js
/* main.js */
define(function(require, exports) {
  const a = require('a');
  console.log('This is main module');
  exports.a = a;
});
```
也可以通过`return`导出模块执行的结果
```js
/* a.js */
define(function(require, exports) {
  console.log('This is a module');
  const a = 'A';
  return a;
});
```
使用第三方模块
```js
icmd.config({
  alias: {
    'jquery': 'https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js'
  }
});
icmd.use('main');
```
```js
define(function(require) {
  const $ = require('jquery');
});
```

## Note
`icommon`遵循CMD模块规范，目前暂未开发与Grunt,Gulp适配的接口，仅限于脱离Webpack,Rollup等模块化工具的简单浏览器端项目
npm package: @idogo/ioa
Description: Sample project for packages built with rollup.
Author: leo
Latest version: 1.0.0

# pkg-name
Simple asynchronous working lib base on generator function.
## Install
```bash
npm install @idogo/ioa --save
```
## Usage
```js
const App = require('@idogo/ioa');
const app = new App();

app.use(function* (next) {
  /* do...*/
  yield next;
});

app.use(function* (next) {
  /* do... */
  yield next;
});
app.listen(port, host);
```
npm package: @idol-ac-cn/koishi-plugin-gropu-helper
Description: 自用，基于grouphelper二次开发，仅修改防复读为防止单个用户刷屏
Latest version: 1.0.5

# @idol-ac-an/koishi-plugin-anti-repeat

[![npm](https://img.shields.io/npm/v/@idol-ac-an/koishi-plugin-anti-repeat?style=flat-square)](https://www.npmjs.com/package/@idol-ac-an/koishi-plugin-anti-repeat)

基于grouphelper二次开发，仅修改防复读为防止单个用户刷屏