open-index/open-npm huggingface dataset:
npm package: @inagora/texcel
Description: a bunch of toolkits for exceljs
Author: poker
Latest version: 0.1.2

# Texcel
Texcel本身没有实现excel的解析和处理，它只是对[ExcelJS](https://github.com/exceljs/exceljs/)的接口整合，把业务中常用功能以更简洁实现整理出来，比如读取excel，下载excel，设置样式等。

easily exceljs
npm package: @inagora/wd-view
Description: 基于Vue3和Typescript的UI组件库
Author: lijieniu
Latest version: 1.3.22

<h1 align="center">wd-view</h1>
wd-view是一套UI组件库，包含丰富的常用组件，可以快速搭建页面。

## 📦 安装使用
### 浏览器
1、页面中引入js
```html
<script src="https://unpkg.com/vue@next"></script>
<script src="https://cdn.jsdelivr.net/gh/inagora/wd-view/dist/index.js"></script>
```
2、引入css
```html
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/inagora/wd-view/dist/index.css" />
```
> 注意：如果要使用日期组件，需要在页面中引入[moment.js](http://momentjs.cn/)

3、使用组件
```javascript
Vue.createApp({})
  .use(WdView)
  .mount('#app');
```
### NPM
1、通过npm安装
```javascript
npm install --save @inagora/wd-view
```
2、使用组件
```javascript
Vue.createApp({})
  .use(WdView)
  .mount('#app');
```
## 📒 使用文档
https://inagora.github.io/wd-view/install.html
## 📑 License
MIT
npm package: @inaiat/fastify-di-plugin
Description: Simple, unobtrusive depency injection for fastify.
Author: inaiat@gmail.com
Latest version: 1.1.1

# fastify-di-plugin

A dependency injection plugin for fastify framework, using [awilix](https://github.com/jeffijoe/awilix)

Motivation: I really wanted use [fastify-awilix](https://github.com/fastify/fastify-awilix) but this plugin make things statics. So, basically, this plugin can be used without problem with parallel tests and so on. 

## Getting started

```bash
yarn add @inaiat/fastify-di-plugin awilix
```

Next, set up the plugin:
```ts
import { fastifyAwilixPlugin } from '@inaiat/fastify-di-plugin'
```

Next, set up the plugin:
```ts
declare module '@inaiat/fastify-di-plugin' {
  interface Cradle {
    dateService: Date
    printDate: string
  }
}

const dateService = () => new Date();
const printService = ({dateService: Date}) => dateService().toDateString()

fastify.register(fastifyDiPlugin, {
      module: {
        dateService: asFunction(dateService).singleton(),
        printDate: asFunction(printService).singleton()
}})

server.get(
      '/status',
      async (request) => {
        const cradle = request.diScope.cradle
        return cradle.printDate
      }
    )
npm package: @inancakduvan/keact
Description: Keact is a minimal, key-based global state manager for React. No providers, no boilerplate — just a single hook to share state across your app.
Author: İnanç Akduvan
Latest version: 1.2.1



![App Logo](https://res.cloudinary.com/dnjvyciqt/image/upload/v1747499928/keact_banner_jsve0i.png)

# 🔑 Keact

**Keact** is a minimal, key-based global state manager for React. No providers, no boilerplate — just a single hook to share state across your app.

---

## 🚀 Installation

```bash
npm i @inancakduvan/keact
```

> Requires React 18 or higher.

---

## 📝 Official Documentation:
https://keact.vercel.app

---

## ✨ Features

- ✅ Zero configuration
- 🔑 Key-Based Global State Access
- ⚡ Fast and memory-efficient
- 💡 Developer-friendly API

---

## 🔧 Usage

### 1. The simplest way — define anywhere and use everywhere

```ts
// In any component

import { useKeact } from '@inancakduvan/keact';

// Initialize once
const [username, setUsername] = useKeact('username', {
  initialValue: 'John Doe'
});

// Read elsewhere globally by key
const [username] = useKeact('username');

// Also set elsewhere globally by key
const [username, setUsername] = useKeact('username');
setUsername('George Brown');
```

📌 That's it — no providers, no boilerplate.


### 2. If you need type-safety

```ts
// store.ts
import { typeSafeKeact } from "@inancakduvan/keact";

interface KeactStore {
  basket: {
    id: string;
    count: number;
  }
}

export const useKeact = typeSafeKeact<KeactStore>();

// your-component.ts
import { useKeact } from "@/store.ts";

const [basket, setBasket] = useKeact('basket');

setBasket({
  id: "12345",
  count: 3
});
```

<!-- --- -->

<!-- ## 🧩 Contextual State (Scoped to a Provider)

Use `KeactContext` to isolate state between parts of your app:

```tsx
import { KeactContext, useKeact } from "@inancakduvan/keact";

function ProfilePage() {
  return (
    <KeactContext name="profile">
      <Profile />
    </KeactContext>
  );
}

function Profile() {
  const [username, setUsername] = useKeact("username", {
    context: "profile",
    initialValue: 'John Doe',
  });

  return (
    <button onClick={() => setUsername('George Brown')}>Username: {username}</button>
  );
}
```

➡️ Now `username` is isolated to only the `"profile"` scope. -->

<!-- ---

## Type-safety for contextual states

```ts
// types/keact.d.ts
import "@inancakduvan/keact";

declare module "@inancakduvan/keact" {
  // global states
  interface KeactTypeRegistry {
    appVersion: string;
  }

  // contextual states
  interface KeactContextTypeRegistry {
    profile: {
      username: string;
    };
  }
}
``` -->

<!-- --- -->

## 🧼 Memory efficiency

Keact adds the state into store only when it is needed. It will not consume memory until it is needed to use.

---

## 📺 A demo page:
https://keact.vercel.app/demo

---

## 📄 License

MIT

---

Made with ❤️ by **İnanç**.
npm package: @inappstory/dev-tools
Description: IAS Dev Tools
Author: Inappstory
Latest version: 0.0.1

[![docs](https://img.shields.io/badge/API%20Docs-site-green.svg?style=flat-square)](https://docs.inappstory.com/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)

# @inappstory/dev-tools

Package for implementing InAppStory SDK developer tools into your app.

## Documentation

### Installation

```bash
npm install @inappstory/dev-tools
# or
yarn add @inappstory/dev-tools
```

### Usage

Mount DevTools into your app to inspect and modify SDK configuration in development mode.

```ts
import { IasDevTools } from "@inappstory/dev-tools";

const inAppStoryManager = null // Your InAppStoryManager instance

const devTools = new IasDevTools(inAppStoryManager, {
  defaultStoryManagerConfig: {/* Your InAppStoryManager default config */ }
});
```

---

### Listening to events

The DevTools instance emits events when internal configurations change.

You can subscribe using `.on(...)` and unsubscribe using `.off(...)`.

```ts
import { IasDevToolsEvent } from "@inappstory/dev-tools";

devTools.on(IasDevToolsEvent.StoryReaderOptionsChange, (options) => {
  console.log("Story reader options changed:", options);
});

devTools.on(IasDevToolsEvent.FeedOptionsChange, (feedOptions) => {
  console.log("Feed options updated:", feedOptions);
});

devTools.on(IasDevToolsEvent.InAppStoryManagerConfigChange, (config) => {
  console.log("Manager config updated:", config);
});
```

To remove a listener:

```ts
devTools.off(IasDevToolsEvent.StoryReaderOptionsChange, yourHandler);
```

---

### API

#### `new IasDevTools(mountSelector, inAppStoryManager, options)`

- `mountSelector: string` – CSS selector for mounting the UI.
- `inAppStoryManager: StoryManager` – Instance of the StoryManager.
- `options: { defaultStoryManagerConfig: StoryManagerConfigDto }` – Initial config.

#### Properties

- `devTools.store` – Internal state store.
- `devTools.storyReaderOptions` – Current story reader options.
- `devTools.feedOptions` – Current feed options.
- `devTools.storyManagerConfig` – Current story manager config.

#### Methods

- `.on(event, handler)` – Subscribe to config events.
- `.off(event, handler)` – Unsubscribe from events.
- `.emit(event, payload)` – Manually emit an event (mostly for internal use).
- `.destroy()` – Unmounts the dev tools and cleans up the store.

---

### TypeScript Support

This package includes full TypeScript definitions with IntelliSense and autocomplete.

See: [`IasDevTools.d.ts`](./types/IasDevTools.d.ts)

## About

SDK is developed and maintained by [InAppStory](https://inappstory.com/).

## License

Licensed under the MIT License.

See [LICENSE](LICENSE) for more information.
npm package: @inappstory/js-sdk
Description: JS SDK
Author: Inappstory
Latest version: 3.10.4

[![docs](https://img.shields.io/badge/API%20Docs-site-green.svg?style=flat-square)](https://docs.inappstory.com/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)

# @inappstory/js-sdk

Package for implementing InAppstory JS SDK into your app.
## Documentation

Visit our **[Documentation](https://docs.inappstory.com/sdk-guides/js-sdk/how-to-get-started.html)** for getting starting, guides and examples.

## About

SDK is developed and maintained by [InAppStory](https://inappstory.com/).

## License

Licensed under the MIT License

See [LICENSE](LICENSE) for more information.
npm package: @inappstory/react-sdk
Description: React SDK
Author: Inappstory
Latest version: 1.11.4

[![docs](https://img.shields.io/badge/API%20Docs-site-green.svg?style=flat-square)](https://docs.inappstory.com/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)

# @inappstory/react-sdk

Package for implementing React InAppstory SDK into your app.
## Documentation

Visit our **[Documentation](https://docs.inappstory.com/sdk-guides/react-sdk/how-to-get-started.html)** for getting starting, guides and examples.

## About

SDK is developed and maintained by [InAppStory](https://inappstory.com/).

## License

Licensed under the MIT License

See [LICENSE](LICENSE) for more information.
npm package: @inappstory/vue-sdk
Description: Vue SDK
Author: Inappstory
Latest version: 0.1.0-rc.0

[![docs](https://img.shields.io/badge/API%20Docs-site-green.svg?style=flat-square)](https://docs.inappstory.com/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)

# @inappstory/vue-sdk

Package for implementing Vue InAppstory SDK into your app.
## Documentation

Visit our **[Documentation](https://docs.inappstory.com/)** for getting starting, guides and examples.

## About

SDK is developed and maintained by [InAppStory](https://inappstory.com/).

## License

Licensed under the MIT License

See [LICENSE](LICENSE) for more information.
npm package: @inaridiy/erc721l
Description: ERC-721 Non-Fungible Token Standard, optional Loanable extension.
Author: inaridiy
Latest version: 1.1.1

# ERC721Loanable
Extension of ERC721 that allows borrowing and lending NFTs according to contract without trusting the other party.

## Installation
```bash
npm install -save-dev @inaridiy/erc721l
```

## Usage
After installing the contract, you can use it by importing the contract.
```solidity
// SPDX-License-Identifier: MIT
// Inaridiy ERC721Loanable Sample Contract v1.0.1
pragma solidity ^0.8.4;

import "./ERC721Loanable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract Sample is ERC721Loanable {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;

    constructor() ERC721Loanable("Sample ERC721Loanable Token", "SET") {}

    function mint() public returns (uint256) {
        uint256 newItemId = _tokenIds.current();
        _mint(_msgSender(), newItemId);
        _tokenIds.increment();
        return newItemId;
    }

    function lend(
        address to,
        uint256 tokenId,
        uint256 period
    ) public {
        _lend(to, tokenId, period);
    }
}
```

## Added Methods
The ERC721L adds three functions to the ERC721 to achieve NFT lending and borrowing.

### lend
Lend an NFT of `tokenId `to an address of `to` for `period` of time.
You can rent out NFTs that you own and have not yet rented out.
The borrower cannot transfer NFT.

```solidity
_lend(address to,uint256 tokenId,uint256 period) internal;
```

### reclaim
You can get back the NFT of a `tokenId` whose loan period has expired.
You cannot reclaim an NFT that is still in the loan period.

```solidity
reclaim(uint256 tokenId) public;
```

### lendingInfo
Lending information for the NFT of `tokenId` can be obtained.
※If not on loan, all information will be the initial values of Solidity.

```solidity
lendingInfo(uint256 tokenId) public view returns(address owner,address borrower,uint256 deadline)
```

## Local test run.
```bash
git clone git@github.com:inaridiy/ERC721L.git
npm install
npm run hardhat test
```

## License
Distributed under the MIT License. See LICENSE.txt for more information.

## Contact
twitter: https://twitter.com/unknown_gakusei
ens: inaridiy.eth
npm package: @inaridiy/useful-web3
Description: ## Installation
Latest version: 0.0.11

# Useful-Web3

## Installation

with npm:

```bash
npm install --save @inaridiy/useful-web3 @metamask/detect-provider
```

with yarn:

```bash
yarn add @inaridiy/useful-web3 @metamask/detect-provider
```

## Usage

```tsx
import {
  Web3Provider,
  useWeb3,
  MetamaskConnector,
} from "@inaridiy/useful-web3";

function App() {
  const { connectWallet, accounts } = useWeb3();
  return (
    <Web3Provider>
      <button onClick={() => connectWallet(new MetamaskConnector())}>
        Connect Wallet
      </button>
      <p>{accounts[0]}</p>
    </Web3Provider>
  );
}
```

## Connector

This library allows you to connect to various Wallets by using connectors.
This library is equipped with `MetamaskConnector`, `WalletConnectConnector` and `Web3ModalConnector`.
And each connector requires a dependent library.

### MetamaskConnector

```bash
yarn add @inaridiy/useful-web3 @metamask/detect-provider
```

### WalletConnectConnector

```bash
yarn add @inaridiy/useful-web3 @walletconnect/web3-provider
```

### Web3ModalConnector

```bash
yarn add @inaridiy/useful-web3 web3modal
```

## useWeb3

Information about web3 can be accessed through `useWeb3`Hook.

```tsx
import { useWeb3 } from "@inaridiy/useful-web3";
const {
  accounts,
  isLoading,
  chainId,
  connector,
  instance,
  switchChain,
  disconnect,
  connectWallet,
} = useWeb3();
```

## Useful Components

### UsefulButton

A button that prompts you to `connect wallet` if you are not connected to the blockchain instead.

```tsx
import { UsefulButton, MetamaskConnector } from "@inaridiy/useful-web3";
import "@inaridiy/useful-web3/dist/cjs/index.css";

<UsefulButton connector={new MetamaskConnector()}>Mint</UsefulButton>;
```

### UsefulToast

It gives a nice display of connection status, etc. `react-toastify` is required.

```bash
yarn add react-toastify
```

```tsx
import { UsefulToast } from "@inaridiy/useful-web3";

<UsefulToast />;
```