open-index/open-npm huggingface dataset:
npm package: @iekedemus/logical
Description: A module for composing logical operations
Author: Joel Luukka
Latest version: 0.1.0

# Logical

A module for composing predicates using logical operators.

The aim of this module is to provide a method for declaratively composing boolean functions. It should prove useful when
writing complex expressions, for example in `if`- and `where` -clauses or similar contexts.

## Install

```
npm install @iekedemus/logical
```

## Basic usage

```
const {
  and,
  or,
  not,
} = require('@iekedemus/logical');

const divisibleByFour = value => value % 4 === 0;
const divisibleByHundred = value => value % 100 === 0;
const divisibleByFourHundred = value => value % 400 === 0;

const isLeapYear = or(
  and(
    divisibleByFour,
    not(
      divisibleByHundred,
    ),
  ),
  and(
    divisibleByFour,
    divisibleByHundred,
    divisibleByFourHundred,
  )
);

isLeapYear(2020);  // true

```

## License

MIT
npm package: @iekedemus/serverless-unify
Description: Tool for deriving a master serverless.yml file from many smaller ones, spread throughout the codebase.
Author: Joel Luukka
Latest version: 3.0.0

# serverless-unify
CLI tool for building a single serverless.yml file from several files.

Define serverless.yml configurations near the code that requires it. Use serverless-unify to create
a single serverless.yml at the root of your service and deploy using the unified configuration file.

## Usage
### Install
```
npm install --save-dev @iekedemus/serverless-unify
```

### Configure
Write parts of serverless configuration anywhere in the codebase in files by the name of
`_serverless.yml`.

### Unify
Create a unified `serverless.yml` by running at the root of your service:
```
./node_modules/.bin/serverless-unify
```

### Deploy serverless service!

## License
MIT
npm package: @iekedemus/vulgar-fraction
Description: An implementation of vulgar fraction data type
Author: Joel Luukka
Latest version: 1.0.0

# Vulgar Fractions

A library for representing and operating with common fractions.

The method for representing this data type stems from category theory, in which values of the type are related to, but
separate from the operations defined for the type. Special elements for numeric value one and zero are defined to cater
for situations, where a _zero element_ may be required.

## Install

```
npm install @iekedemus/vulgar-fraction
```

## Usage

```
const {
  // Constants
  NUMERATOR,
  DENOMINATOR,

  // Type representation
  create,
  isVulgarFraction,

  // Arithmetic operations
  multiply,
  divide,
  add,
  subtract,

  // Other operations
  expand,
  reduce,
  simplifySign,
  simplify,
  inverse,
  negate,

  // Elements
  createOne,
  createZero,
  isOne,
  isZero,

  // Utilities
  isPositive,
  toNumber,
} = require('@iekedemus/vulgar-fraction');


// Type representation
const a = create(1, 2);  // (1/2)
const isVulgar = isVulgarFraction(a);  // true

// Elements
const b = createOne();  // (1/1)
const z = createZero();  // (0/1)
const fractionIsOne = isOne(z);  // false
const fractionIsZero = isZero(z);  // true

// Arithmentic operations
const sum = add(a, b);  // (3/2)
const difference = subtract(a, b);  // (-1/2)
const product = multiply(a, b);  // (1/2)
const quotient = divide(a, b);  // (1/2)

// Other operations
const expanded = expand(a, 2);  // (2/4)
const reduced = reduce([2, 4]);  // (1/2)
const signSimplified = simplifySign([1, -2]);  // (-1/2)
const simplified = simplify([2, -4]);  // (-1, 2)
const inversed = inverse(a);  // (2/1)
const negated = negate(a);  // (-1/2)

// Utility functions
const positive = isPositive(a);  // true
const asNumber = toNumber(a);  // 0.5

// Constants
const numerator = a[NUMERATOR];  // 1
const denominator = a[DENOMINATOR]  // 2
```

## Test

```
npm run test
```

## License

MIT
npm package: @iel/axios-ext-cache
Description: Cache data of axios.
Author: leihaohao <2468048176@qq.com>
Latest version: 1.0.6

# `@iel/axios-ext-cache`

> 为 `Axios` 扩展缓存数据功能。

## 安装

```bash
# 依赖 @iel/axios-ext localforage
npm i @iel/axios-ext localforage @iel/axios-ext-cache -S
```

## 用法

```js
import { createAxios } from '@iel/axios-ext'
import AxiosExtCachePlugin from '@iel/axios-ext-cache'
import axios from 'axios'

const http = createAxios(axios)

http.$axiosExt.use(AxiosExtCachePlugin)

// 响应成功时会缓存数据
// 下次调用时若过期则重新请求
// 可以设置 `forceUpdate` 强制更新缓存（即重新请求并缓存）
http
  .withCache({ expire: 10e3 })
  .get('/demo/list')
  .then((res) => {
    console.log(res)
  })

// 手动清除缓存
http.Cache.remove({ method: 'get', url: '/demo/list' })

// 在销毁实例，清理本地缓存数据
http.$axiosExt.destroy()
```
npm package: @iel/axios-ext-cancel-repeat
Description: Cancel repeat request of axios.
Author: leihaohao <2468048176@qq.com>
Latest version: 1.1.0

# `@iel/axios-ext-cancel-repeat`

> 为 `Axios` 扩展取消重复请求功能。

## 安装

```bash
# 依赖 @iel/axios-ext
npm i @iel/axios-ext @iel/axios-ext-cancel-repeat -S
```

## 用法

```js
import { createAxios } from '@iel/axios-ext'
import AxiosExtCancelRepeatPlugin from '@iel/axios-ext-cancel-repeat'
import axios from 'axios'

const http = createAxios(axios)

http.$axiosExt.use(AxiosExtCancelRepeatPlugin, {
  // 当被取消时接口返回该数据
  onRepeat: () => [true, 'repeatCancel']
})

http.get('/demo/list').then((res) => {
  console.log(res)

  // 判断是否为重复取消请求，用于区分重复取消和超时取消
  // 重复取消时后续代码将不再执行
  if (Array.isArray(res) && res[1] === 'repeatCancel') return
})

// 手动取消未完成请求并移除记录
http.CancelRepeat.remove({ method: 'get', url: '/demo/list' })

// 在销毁实例，清理缓存数据
http.$axiosExt.destroy()
```
npm package: @iel/axios-ext-log
Description: Log plugin for AxiosExt.
Author: leihaohao <2468048176@qq.com>
Latest version: 1.0.5

# `@iel/axios-ext-log`

> 为 `Axios` 扩展阶段输出信息功能。

## 安装

```bash
# 依赖 @iel/axios-ext
npm i @iel/axios-ext @iel/axios-ext-log -S
```

## 用法

```js
import { createAxios } from '@iel/axios-ext'
import AxiosExtLogPlugin from '@iel/axios-ext-log'
import axios from 'axios'

const http = createAxios(axios)

http.$axiosExt.use(AxiosExtLogPlugin, {
  // 所有接口响应后输出信息
  globalOnResponse: true
})

http.get('/demo/list').then((res) => {
  console.log(res)
})

// 单独在请求时输出请求配置
http
  .withLog({ onRequest: true })
  .get('/demo/list')
  .then((res) => {
    console.log(res)
  })
```
npm package: @iel/axios-ext-preset
Description: Preset of AxiosExt.
Author: leihaohao <2468048176@qq.com>
Latest version: 2.0.0

# `@iel/axios-ext-preset`

> 为 `AxiosExt` 预设插件功能。

## 安装

```bash
# 依赖 @iel/axios-ext
npm i @iel/axios-ext @iel/axios-ext-preset -S
```

## 用法

```ts
import { AxiosExtInstance, createAxios, OmitChainShallowAxiosInstance } from '@iel/axios-ext'
import TupleWrapper, { AxiosResponseTuple } from '@iel/axios-ext-response-wrap/dist/wrappers/tuple'
import { ErrorAdaptor, SuccessAdaptor } from '@iel/axios-ext-response-wrap/dist/adaptors'
import usePresetForAxiosExt from '@iel/axios-ext-preset'
import { AxiosInstance } from 'axios'

declare module 'axios' {
  // 修改响应结果为元祖
  interface AxiosResponse<T = any, D = any> extends AxiosResponseTuple<T, D> {}
}

// 移除关闭预设插件的功能定义
type IAxiosInstance = OmitChainShallowAxiosInstance<AxiosInstance, 'withLog'>

export const http: IAxiosInstance & { $axiosExt: AxiosExtInstance } = createAxios({
  baseURL: '/api',
  timeout: 5000
}) as any

function initExt() {
  // 元祖响应格式包装器
  // adaptor 为数据适配器，处理后端返回数据格式
  const tupleWrapper = TupleWrapper([ErrorAdaptor, SuccessAdaptor])

  // 为 axiosExt 预设插件功能
  usePresetForAxiosExt(http.$axiosExt, {
    // 配置缓存功能
    Cache: {
      // 当缓存有效时需要返回的数据
      transformData: (response, config) => tupleWrapper.transformResponseData(response, config),
      // 当响应成功时判断是否需要缓存数据
      allowCache: (response, config) => !tupleWrapper.transformResponseData(response, config)[0]
    },
    // 配置取消重复请求
    CancelRepeat: {
      onRepeat: () => [true, 'repeatCancel']
    },
    // 配置响应包装
    ResponseWrap: {
      wrapper: tupleWrapper
    },
    // 关闭 `AxiosExtLog` 插件
    Log: {
      preset: false
    }
  })
}

initExt()
```
npm package: @iel/axios-ext-response-wrap
Description: Axios response result wrapper.
Author: leihaohao <2468048176@qq.com>
Latest version: 1.0.5

# `@iel/axios-ext-response-wrap`

> 为 `axios` 扩展响应包装功能。

## 安装

```bash
# 依赖 @iel/axios-ext
npm i @iel/axios-ext @iel/axios-ext-response-wrap -S
```

## 用法

```js
import { createAxios } from '@iel/axios-ext'
import AxiosExtResponseWrapPlugin from '@iel/axios-ext-response-wrap'
import TupleWrapper, { AxiosResponseTuple } from '@iel/axios-ext-response-wrap/dist/wrappers/tuple'
import { ErrorAdaptor, SuccessAdaptor } from '@iel/axios-ext-response-wrap/dist/adaptors'
import axios, { AxiosInstance } from 'axios'

declare module 'axios' {
  // 修改响应结果为元祖
  interface AxiosResponse<T = any, D = any> extends AxiosResponseTuple<T, D> {}
}

const http = createAxios(axios)

http.$axiosExt.use(AxiosExtResponseWrapPlugin, {
  wrapper: AxiosResponseTupleWrapper([ErrorAdaptor, SuccessAdaptor])
})

const loadData = async () => {
  const [error, data] = await http.get('/demo/list')
  if (error) {
    // data is error message
    return console.log('error message: ', data)
  }
  // response data
  console.log(data)
}
```
npm package: @iel/axios-ext-retry
Description: Retry request when axios fails.
Author: leihaohao <2468048176@qq.com>
Latest version: 1.0.5

# `@iel/axios-ext-retry`

> 为 `Axios` 扩展失败重连功能。

## 安装

```bash
# 依赖 @iel/axios-ext
npm i @iel/axios-ext @iel/axios-ext-retry -S
```

## 用法

```js
import { createAxios } from '@iel/axios-ext'
import AxiosExtRetryPlugin from '@iel/axios-ext-retry'
import axios from 'axios'

const http = createAxios(axios)

http.$axiosExt.use(AxiosExtRetryPlugin)

http
  .withRetry({ max: 3 })
  .get('/demo/list')
  .then((res) => {
    console.log(res)
  })
```
npm package: @iel/patch-iview-variable
Description: path iview style variable
Latest version: 1.3.8

# `path-iview-variable`

> 为 `iView-ui(view-design)` 的样式使用 `css var` 编译，并配合 `@iel/varx` 和 `color` 进行适配动态换肤。

## 安装

```shell
// 基于 @iel/varx、color
npm i -S @iel/varx color @iel/patch-iview-variable
// or
yarn add @iel/varx color @iel/patch-iview-variable
```

## 使用

```js
import { createVarx } from '@iel/varx'
import patchIViewVariable from '@iel/patch-iview-variable'

const varx = createVarx({ plugins: [patchIViewVariable()] })
```

```less
@import '~@iel/patch-iview-variable/styles/index.less';
```
npm package: @ieltsrealtest/ui
Description: Reusable UI components for IELTS Real Test platform, built with React and TypeScript.
Author: EyeCode Team
Latest version: 1.0.59

# @ieltsrealtest/ui

Reusable React UI components for the IELTS Real Test platform, built with TypeScript and styled using Tailwind CSS.

---

## Installation

```bash
npm i @ieltsrealtest/ui
```

## Setup Notes

### tailwind.config.js

```bash
content: [
  "./node_modules/@ieltsrealtest/ui-components/dist/**/*.{js,ts,jsx,tsx}"
]
```

### globals.css

```bash
@import "tailwindcss";
@config "../../tailwind.config.js";
```

### next.config.ts (optional for Figma-hosted images)

```bash
images: {
    remotePatterns: [
      {
        protocol: "https",
        hostname: "ieltsrealtest.s3.us-east-1.amazonaws.com",
        port: "",
        pathname: "/**",
      },
      {
        protocol: "https",
        hostname: "ieltsrealtest.s3.us-east-1.amazonaws.com",
        port: "",
        pathname: "/**",
      },
    ],
  },
```

## Usage

```bash
import { Header, Footer, Discussions } from "@ieltsrealtest/ui";
```

Discussions usages: - page: + example: <Discussions page="listening" isDev={isDev}>
npm package: @iem/components
Description: Vue library with common used components based on Vuetify.
Latest version: 1.0.51

# IEM Componets
Vue library with common used components based on Vuetify.

## List of componets

* IEM User, display username [IEM USER COMPONENT - docs](./docs/iem-user.MD)
* IEM Menu, created a menu based on a list [IEM MENU COMPONENT - docs](./docs/iem-menu.MD)

## Project setup
### Install Library
- Install Vuetify 2 ([see documentation](https://vuetifyjs.com/en/getting-started/quick-start))
- Install Vuetify Extra:

```
npm install @menteora/vuetify-extra
```

### Use Plugin

- Use Vuetify-Extra plugin after Vuetify
- Example of `/src/main.js` with Vuetify and Vuetify-Extra plugins:

```javascript
import Vue from 'vue'
import App from './App.vue'
import vuetify from './plugins/vuetify'
import './plugins/vuetify-extra'

Vue.config.productionTip = false

new Vue({
  vuetify,
  render: h => h(App)
}).$mount('#app')
```

- Example of standard Vuetify plugin installation in `plugins/vuetify.js`:

```javascript
import Vue from 'vue'
import Vuetify from 'vuetify/lib'

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: 'mdi'
  }
})
```

- Example Vuetify-Extra plugin installation in `plugins/vuetify-extra.js`:

```javascript
import Vue from 'vue'
import VuetifyExtra from '@menteora/vuetify-extra'
import '@menteora/vuetify-extra/dist/menteora.css'

Vue.use(VuetifyExtra)
```

## Docker Integration
- Install Docker (refer to official Guide)
- Install "Docker" Extension on VSCode
- Open Folder with VSCode
- Answer "Reopen in Container" 

![reopen inside docker button](docs/reopen-inside-docker.png)

## Project setup

### See demo in action:
```
npm run serve
```

### Compiles and minifies Library for production
```
npm run build
```

### Lints and fixes files
```
npm run lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).


## Update workflow

1. Update & commit code

### Github pages updates
2. Update demo `npm run deploy:demo`
3. Test demo

### Github updates
4. Update release inside package.json
5. Tag commit `git tag v0.3.1`
6. Push Tags `git push origin --tags`

### Npm updates
7. Update build `npm run build`
8. Login on npm `npm login`
8. Update package on npm `npm publish`
npm package: @iem/vuetify-extra
Description: Vue library with common used components based on Vuetify.
Latest version: 1.0.2

# vuetify-extra
Vue library with common used components based on Vuetify.

Demo here: https://menteora.github.io/vuetify-extra/

2020/11/03 - [**NEW!** Docker Integration](#Docker-Integration)

## Project setup
### Install Library
- Install Vuetify 2 ([see documentation](https://vuetifyjs.com/en/getting-started/quick-start))
- Install Vuetify Extra:

```
npm install @menteora/vuetify-extra
```

### Use Plugin

- Use Vuetify-Extra plugin after Vuetify
- Example of `/src/main.js` with Vuetify and Vuetify-Extra plugins:

```javascript
import Vue from 'vue'
import App from './App.vue'
import vuetify from './plugins/vuetify'
import './plugins/vuetify-extra'

Vue.config.productionTip = false

new Vue({
  vuetify,
  render: h => h(App)
}).$mount('#app')
```

- Example of standard Vuetify plugin installation in `plugins/vuetify.js`:

```javascript
import Vue from 'vue'
import Vuetify from 'vuetify/lib'

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: 'mdi'
  }
})
```

- Example Vuetify-Extra plugin installation in `plugins/vuetify-extra.js`:

```javascript
import Vue from 'vue'
import VuetifyExtra from '@menteora/vuetify-extra'
import '@menteora/vuetify-extra/dist/menteora.css'

Vue.use(VuetifyExtra)
```

## Docker Integration
- Install Docker (refer to official Guide)
- Install "Docker" Extension on VSCode
- Open Folder with VSCode
- Answer "Reopen in Container" 

![reopen inside docker button](docs/reopen-inside-docker.png)

## Project setup

### See demo in action:
```
npm run serve
```

### Compiles and minifies Library for production
```
npm run build
```

### Lints and fixes files
```
npm run lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).


## Update workflow

1. Update & commit code

### Github pages updates
2. Update demo `npm run deploy:demo`
3. Test demo

### Github updates
4. Update release inside package.json
5. Tag commit `git tag v0.3.1`
6. Push Tags `git push origin --tags`

### Npm updates
7. Update build `npm run build`
8. Login on npm `npm login`
8. Update package on npm `npm publish`