open-index/open-npm huggingface dataset:
npm package: @freelensapp/application
Description: Package for creating Freelens applications
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/application

This package contains stuff related to creating Lens-applications. 

## Usage

```sh
npm install @freelensapp/application-for-electron-main
```

```typescript
import { applicationFeature, startApplicationInjectionToken } from "@freelensapp/application";
import { registerFeature } from "@freelensapp/feature-core";
import { createContainer } from "@ogre-tools/injectable";

const di = createContainer("some-container");

registerFeature(di, applicationFeature);

const startApplication = di.inject(startApplicationInjectionToken);

startApplication();
```


## Features

### Start application
`startApplicationInjectionToken`

Starts the application and calls timeslots in specified order. Check for timeslots for more info.

## Extendability

### Timeslots

1. `beforeApplicationIsLoadingInjectionToken`
2. `onLoadOfApplicationInjectionToken`
3. `afterApplicationIsLoadedInjectionToken`
npm package: @freelensapp/application-for-electron-main
Description: Electron's main specifics for creating Freelens applications
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/application-for-electron-main

This Feature extends `@freelensapp/application` with Electron specifics.

## Usage
```sh
npm install @freelensapp/application-for-electron-main
```

```typescript
import { applicationFeature, startApplicationInjectionToken } from "@freelensapp/application";
import { applicationFeatureForElectronMain } from "@freelensapp/application-for-electron-main";
import { registerFeature } from "@freelensapp/feature-core";
import { createContainer } from "@ogre-tools/injectable";

const di = createContainer("some-container");

registerFeature(di, applicationFeature, applicationFeatureForElectronMain);

const startApplication = di.inject(startApplicationInjectionToken);

startApplication();
```

## Extendability

### Timeslots

#### `beforeAnythingInjectionToken`

Runnables registered here will be called before anything else. **Special requirement** here is that everything here needs to be synchronous.

#### `beforeElectronIsReadyInjectionToken`

Runnables registered here will be called right after runnables in `beforeAnythingInjectionToken` but still before we are sure that Electron application is ready (`electron.app.whenReady()`). **Special requirement** here is that everything here needs to be synchronous.
npm package: @freelensapp/error-boundary
Description: Highly extendable error-boundary in the Freelens.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/error-boundary

This package contains stuff related to creating Lens-applications. 

## Usage

```sh
npm install @freelensapp/error-boundary
```

```typescript
import "@freelensapp/error-boundary/styles";
```

## Extendability
npm package: @freelensapp/extension-example
Description: Example of a Freelens extension (renamed to @freelensapp/example-extension)
Author: Freelens Authors
Latest version: 1.2.1

# @freelensapp/extension-example

<!-- markdownlint-disable MD013 -->

[![Home](https://img.shields.io/badge/%F0%9F%8F%A0-freelens.app-02a7a0)](https://freelens.app)
[![GitHub](https://img.shields.io/github/stars/freelensapp/freelens?style=flat&label=GitHub%20%E2%AD%90)](https://github.com/freelensapp/freelens)
[![Release](https://img.shields.io/github/v/release/freelensapp/freelens-extension-example?display_name=tag&sort=semver)](https://github.com/freelensapp/freelens-extension-example)
[![Integration tests](https://github.com/freelensapp/freelens-extension-example/actions/workflows/integration-tests.yaml/badge.svg?branch=main)](https://github.com/freelensapp/freelens-extension-example/actions/workflows/integration-tests.yaml)
[![npm](https://img.shields.io/npm/v/@freelensapp/extension-example.svg)](https://www.npmjs.com/package/@freelensapp/extension-example)

<!-- markdownlint-enable MD013 -->

<!-- markdownlint-disable MD036 -->
**Warning! This extension is renamed to @freelensapp/example-extension**

This repository serves as an example how to build and publish extensions for
Freelens application.

## Requirements

- Kubernetes >= 1.24
- Freelens >= 1.3.2

## API supported

- example.freelens.app/v1alpha1

To install Custom Resource Definition for this example run:

```sh
kubectl apply -f examples/crds/customresourcedefinition.yaml
```

Examples provide a resource for test:

```sh
kubectl apply -f examples/test/example.yaml
```

## Install

To install open Freelens and go to Extensions (`ctrl`+`shift`+`E` or
`cmd`+`shift`+`E`), and install `@freelensapp/extension-example`.

or:

Use a following URL in the browser:
[freelens://app/extensions/install/%40freelensapp%2Fextension-example](freelens://app/extensions/install/%40freelensapp%2Fextension-example)

## Build from the source

You can build the extension using this repository.

### Prerequisites

Use [NVM](https://github.com/nvm-sh/nvm) or
[mise-en-place](https://mise.jdx.dev/) or
[windows-nvm](https://github.com/coreybutler/nvm-windows) to install the
required Node.js version.

From the root of this repository:

```sh
nvm install
# or
mise install
# or
winget install CoreyButler.NVMforWindows
nvm install 22.15.1
nvm use 22.15.1
```

Install Pnpm:

```sh
corepack install
# or
curl -fsSL https://get.pnpm.io/install.sh | sh -
# or
winget install pnpm.pnpm
```

### Build extension

```sh
pnpm i
pnpm build
pnpm pack
```

### Install built extension

The tarball for the extension will be placed in the current directory. In
Freelens, navigate to the Extensions list and provide the path to the tarball
to be loaded, or drag and drop the extension tarball into the Freelens window.
After loading for a moment, the extension should appear in the list of enabled
extensions.

## License

Copyright (c) 2025 Freelens Authors.

[MIT License](https://opensource.org/licenses/MIT)
npm package: @freelensapp/feature-core
Description: Code that is common to all Features and those registering them.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/feature-core

Feature is set of injectables that are registered and deregistered simultaneously.

## Install
```sh
npm install @freelensapp/feature-core
```

## Usage

```typescript
import { createContainer } from "@ogre-tools/injectable"
import { getFeature, registerFeature, deregisterFeature } from "@freelensapp/feature-core"

// Notice that this Feature is usually exported from another NPM package.
const someFeature = getFeature({
  id: "some-feature",
  
  register: (di) => {
    di.register(someInjectable, someOtherInjectable);
  },
  
  // Feature dependencies are automatically registered and 
  // deregistered when necessary.
  dependencies: [someOtherFeature] 
});

const di = createContainer("some-container");

registerFeature(di, someFeature);

// Or perhaps you want to deregister?
deregisterFeature(di, someFeature);
```

## Need to know

### NPM packages exporting a Feature
- Prefer exporting `injectionToken` instead of `injectable` for not allowing other features to access technical details like the `injectable`
npm package: @freelensapp/jest
Description: Jest configuration and scripts for Freelens packages.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/jest

This package contains jest configurations and scripts for Lens packages.

## Install

```sh
npm install @freelensapp/jest
```

## Features

### Package configurations
Shared configurations for minimal duplication.

#### Node

**./packages/any-package/jest.config.js**
```javascript
module.exports = require("@freelensapp/jest").monorepoPackageConfig(__dirname).configForNode;
```

#### React

**./packages/any-package/jest.config.js**
```javascript
module.exports = require("@freelensapp/jest").monorepoPackageConfig(__dirname).configForReact;
```

### Root configuration
You may want to enable testing of packages using single command from root level. This allows you to utilize `jest --watch` between all packages.


**./jest.config.js**
```javascript
module.exports = require("@freelensapp/jest").monorepoRootConfig(__dirname);
```

### Scripts

#### lens-test
Test package with coverage enforcement. Automatically opens coverage report in case of failure.

**./packages/any-package/package.json**
```json
{
 "scripts": {
   "test": "lens-test"
 }         
}
```
npm package: @freelensapp/keyboard-shortcuts
Description: Keyboard shortcuts for Freelens
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/keyboard-shortcuts

This Feature enables keyboard shortcuts in Lens

## Usage

```sh
npm install @freelensapp/keyboard-shortcuts
```

```typescript
import { keyboardShortcutsFeature } from "@freelensapp/keyboard-shortcuts";
import { registerFeature } from "@freelensapp/feature-core";
import { createContainer } from "@ogre-tools/injectable";

const di = createContainer("some-container");

registerFeature(di, keyboardShortcutsFeature);
```

## Extendability
npm package: @freelensapp/kubectl-versions
Description: Package of kubectl versions at build time
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/kubectl-versions

This package contains a JSON array of entries of the format ["MAJOR.MINOR", "MAJOR.MINOR.PATCH"].

This object represents the current (at time of building each release of this package)
greatest PATCH version for each "MAJOR.MINOR" version of `kubectl`.
This is done at compile time so that we don't have to worry about being able to access this data on user machines.
Furthermore, this is dynamic in that the previous method was to update the table by hand.
npm package: @freelensapp/notifications
Description: Highly extendable notifications in the Freelens.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/notifications

This package contains stuff related to creating Lens-applications. 

## Usage

```sh
npm install @freelensapp/notifications
```

```typescript
export type { notificationsName, notificationsProps } from "@freelensapp/button";
export type { notifications } from "@freelensapp/button";
export { defaultEnterDurationFornotificationsdInjectable } from "@freelensapp/button";
export { defaultLeaveDurationFornotificationsdInjectable } from "@freelensapp/button";
export { requestAnimationFrameInjectable } from "@freelensapp/button";
```

## Extendability
npm package: @freelensapp/random
Description: Highly extendable random in the Freelens.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/random

This package contains stuff related to creating Lens-applications. 

## Usage

```sh
npm install @freelensapp/random
```

```typescript
export type { ... } from "@freelensapp/random";
```

## Extendability
npm package: @freelensapp/react-application
Description: Package for React Application
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/react-application

## Usage

```sh
npm install @freelensapp/react-application
```

```typescript
import { reactApplicationFeature } from "@freelensapp/react-application";
import { registerFeature } from "@freelensapp/feature-core";
import { createContainer } from "@ogre-tools/injectable";

const di = createContainer("some-container");

registerFeature(di, reactApplicationRootFeature);
```

## Extendability
npm package: @freelensapp/routing
Description: Highly extendable routing in the Freelens.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/routing

This package contains stuff related to creating Lens-applications. 

## Usage

```sh
npm install @freelensapp/routing
```

```typescript
import { observableHistoryInjectable } from "@freelensapp/routing";
import { searchParamsOptions } from "@freelensapp/routing";
```

## Extendability
npm package: @freelensapp/spinner
Description: Highly extendable spinner in the Freelens.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/spinner

This package contains stuff related to creating Lens-applications. 

## Usage

```sh
npm install @freelensapp/spinner
```

```typescript
import { Spinner } from "@freelensapp/spinner";
```

## Extendability
npm package: @freelensapp/typescript
Description: Typescript configuration for Freelens packages.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/typescript

This package contains typescript configurations for Lens packages.

## Install

```sh
npm install @freelensapp/typescript
```

## Features

### Base configuration
Base configuration for minimal duplication.

**tsconfig.json**
```json
{
  "extends": "@freelensapp/typescript/config/base.json"
}
```
npm package: @freelensapp/webpack
Description: Webpack configurations and scripts for Lens packages.
Author: Freelens Authors
Latest version: 1.8.1

# @freelensapp/webpack

This package contains webpack configurations for Lens packages.

## Install

```sh
npm install @freelensapp/webpack
```

## Features

### Configurations

### Node package
This configuration should be used when creating package that will be executed within **Node** environment. 

**webpack.config.js**
```javascript
module.exports = require("@freelensapp/webpack").configForNode;
```
### React package
This configuration should be used when creating package tha will be executed within **Browser** environment.

**webpack.config.js**
```javascript
module.exports = require("@freelensapp/webpack").configForReact;
```

### Multi export package

This configuration should be used when package contains **multiple entrypoint** e.g. for different environments. You need to add `lensMultiExportConfig` to `package.json` with configuration. Note that also `exports` property needs to be set, but the correct values are generated from `lensMultiExportConfig` when using `lens-build` -script.

**webpack.config.js**
```javascript
const packageJson = require("./package.json");

module.exports = require("@freelensapp/webpack").getMultiExportConfig(packageJson);
```

**package.json**
```json
{
  "lensMultiExportConfig": {
    "./main": {
      "buildType": "node",
      "entrypoint": "./src/main/index.ts"
    },
    "./renderer": {
      "buildType": "react",
      "entrypoint": "./src/renderer/index.ts"
    }
  },

  "exports": {
    "./main": {
      "types": "./dist/main/index.d.ts",
      "require": "./dist/main/index.js",
      "import": "./dist/main/index.js",
      "default": "./dist/main/index.js"
    },
    "./renderer": {
      "types": "./dist/renderer/index.d.ts",
      "require": "./dist/renderer/index.js",
      "import": "./dist/renderer/index.js",
      "default": "./dist/renderer/index.js"
    }
  }
}
```

## Scripts

1. `lens-build` which builds the packages
2. `lens-remove-build` which removes the build directory from packages. It's useful for cleaning up.
npm package: @freelight/core
Description: Shared utilities for FreeLight applications — DataAccess, permissions, validation, user model, filters, startup.
Latest version: 0.1.0

# @freelight/core

Shared utilities for FreeLight applications. Consumed by `FreeLightDAO` and `Freelight` (campaign platform).

## What's in here

| Module | Exports |
|---|---|
| `DataAccess` | PostgreSQL + Garnet (Redis) connection manager |
| `FreeUser` | Base user model (`IFreeUser`, `MembershipStatus`, avatar generation, validation) |
| `Filter` | `IFilter`, `IFilterPaged`, `IFilterSearch`, `IFilterConditional` |
| `IAppUtils` | Interface for the app utils passed through route handlers |
| `permissions` | `RoutePermission`, `NewInputType`, `IResult<T>` |
| `validator` | `ValidatorInputType`, `validateInput()`, `validateInputArray()`, `validateEnums()`, `fromBinaryToUUID()`, `isStringEmpty()` |

## Install

```bash
npm install /path/to/FreeLightCore
# or once published to a registry:
npm install @freelight/core
```

## Usage

```typescript
import {
  DataAccess,
  FreeUser,
  IFreeUser,
  RoutePermission,
  ValidatorInputType,
  validateInput,
  IFilter,
  IFilterPaged
} from "@freelight/core";
```

## Consuming Application Setup

### FreeLightDAO

In `src/DataAccess.ts`, replace the local class:
```typescript
export { DataAccess, IDataAccess } from "@freelight/core";
```

In `src/FreeUser.ts`, import base types and extend:
```typescript
import { FreeUser as CoreFreeUser, IFreeUser } from "@freelight/core";
// Add governance-specific methods (getUsersRelationship, etc.)
```

In `src/AppAPI.ts`, replace local enums/utils:
```typescript
import { RoutePermission, ValidatorInputType, validateInput, fromBinaryToUUID } from "@freelight/core";
```

### Freelight (Campaign Platform)

Same pattern — replace local `DataAccess.ts`, `FreeUser.ts` with imports from `@freelight/core`.

## Design Notes

- **No governance logic here** — `ApprovalStatus`, `ModeratorFlag`, `Relationship` stay in `FreeLightDAO`
- **No Garnet caching of users** — that's application-level. `FreeUser.getFreeUserById()` hits the DB directly; callers wrap with their own Garnet logic
- **No word list** — `generateRandomDisplayName()` accepts a word list parameter; consuming apps supply their own
- **No app-specific config** — `IAppUtils` is a minimal interface; apps extend it
npm package: @freelog/cli-service
Description: Freelog平台widget本地开发服务
Author: wwzh
Latest version: 0.1.17

# @freelog/cli-service

基于freelog平台的widget资源本地开发服务，widget开发者可通过命令行快速启动一个模拟freelog节点渲染的本地代理服务，从而实现widget的本地开发与调试。

## 使用方法

- 启动服务

```sh
// 启动服务，模拟生产环境
freelog-cli-service serve

// freelog内部开发，即模拟测试测环境
freelog-cli-service serve --internal
```

- 创建节点配置

```sh
freelog-cli-service authInfo xxx.freelog.com
```

- widget项目构建

```sh
freelog-cli-service build 
```

## 工作原理

1. 通过freelog-cli-service authInfo获取节点配置；
2. 使用webpack进行项目构建，并通过webpack-dev-server启动本地服务（默认端口：9180）；
3. 每次访问`http://127.0.0.1:9180`，服务将重新拉取节点页面的静态资源html，并结合节点配置与节点主题（即./public/theme.template.html）返回对应节点的C端渲染文档；
4. 每当访问`http://127.0.0.1:9180/v1/*`的url时，本地服务将其转发成`http://qi.freelog.com/v1/*`
5. 通过中间件重写headers的set-cookie，解决跨域问题，从而实现本地用户登录。
npm package: @freelog/freelog-alpha-markdownviewer
Description: markdownviewer widget for freelog
Author: zechengdai
Latest version: 0.0.1

# freelog-alpha-markdownviewer

> markdownviewer widget for freelog

## Build Setup

``` bash
# install dependencies
npm install

# serve at localhost:9001
npm run dev

# build for production with minification
npm run build
```


## config
package.json中freelogConfig字段可配置freelog资源相关的配置数据。
npm package: @freelog/freelog-ci
Description: > 阿里云oss的前端部署
Latest version: 0.0.2

# freelog-ci
> 阿里云oss的前端部署

## quick start
- install
```sh
$ npm i -g @freelog/freelog-ci
```

- 在``~/.freelog`` 或 当前项目目录下创建 ``oss.conf.js``或``oss.conf.json``配置文件，内容如下

```json
{
  "accessKeyId": "your alioss accessKeyId",
  "accessKeySecret": "your alioss accessKeySecret"
}
```

- 在当前仓库执行进行发布
```sh
$ freelog-ci deploy
```
npm package: @freelog/freelog-component-template
Description: template for freelog component
Author: zechengdai
Latest version: 0.0.7

# freelog-component-template


## 用法

为了使用登录的cookie，添加local.freelog.com到host
```sh
127.0.0.1 local.freelog.com
```

执行``npm run dev``，再访问[local.freelog.com:9001](http://local.freelog.com:9001)即可


## todo
- hmr
npm package: @freelog/presentable-policy-lang
Description: freelog presentable policy language
Author: Jin Xiao
Latest version: 0.0.9

# presentable-policy-lang

> presentable policy language for freelog



## install

```sh
$ npm i @freelog/presentable-policy-lang -S
```

## dev

1. [install antlr4](https://github.com/antlr/antlr4/blob/master/doc/getting-started.md)
npm package: @freeloop/nuxt-transitions
Description: My new Nuxt module
Latest version: 0.1.8

<!--
Get your module up and running quickly.

Find and replace all on all files (CMD+SHIFT+F):
- Name: nuxt-transitions
- Package name: @freeloop/nuxt-transitions
- Description: My new Nuxt module
-->

# nuxt-transitions

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

My new Nuxt module for doing amazing things.

- [✨ &nbsp;Release Notes](/CHANGELOG.md)
  <!-- - [🏀 Online playground](https://stackblitz.com/github/zh-kai/nuxt-transitions?file=playground%2Fapp.vue) -->
  <!-- - [📖 &nbsp;Documentation](https://example.com) -->

## Features

<!-- Highlight some of the features your module provide here -->

- ...

## Quick Setup

1. Add `@freeloop/nuxt-transitions` dependency to your project

```bash
# Using pnpm
pnpm add -D @freeloop/nuxt-transitions

# Using yarn
yarn add --dev @freeloop/nuxt-transitions

# Using npm
npm install --save-dev @freeloop/nuxt-transitions
```

2. Add `@freeloop/nuxt-transitions` to the `modules` section of `nuxt.config.ts`

```js
export default defineNuxtConfig({
  modules: ['@freeloop/nuxt-transitions']
})
```

That's it! You can now use nuxt-transitions in your Nuxt app ✨

## Development

```bash
# Install dependencies
npm install

# Generate type stubs
npm run dev:prepare

# Develop with the playground
npm run dev

# Build the playground
npm run dev:build

# Run ESLint
npm run lint

# Run Vitest
npm run test
npm run test:watch

# Release new version
npm run release
```

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@freeloop/nuxt-transitions/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
[npm-version-href]: https://npmjs.com/package/@freeloop/nuxt-transitions
[npm-downloads-src]: https://img.shields.io/npm/dm/@freeloop/nuxt-transitions.svg?style=flat&colorA=18181B&colorB=28CF8D
[npm-downloads-href]: https://npmjs.com/package/@freeloop/nuxt-transitions
[license-src]: https://img.shields.io/npm/l/@freeloop/nuxt-transitions.svg?style=flat&colorA=18181B&colorB=28CF8D
[license-href]: https://npmjs.com/package/@freeloop/nuxt-transitions
[nuxt-src]: https://img.shields.io/badge/Nuxt-18181B?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @freeloop/nuxt-ui-components
Description: Some interesting components for easy collaboration with nuxt.
Latest version: 0.0.9

<!--
Get your module up and running quickly.

Find and replace all on all files (CMD+SHIFT+F):
- Name: @freeloop/nuxt-ui-components
- Package name: @freeloop/nuxt-ui-components
- Description: Some interesting components for easy collaboration with nuxt.
-->

# @freeloop/nuxt-ui-components

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]

My new Nuxt module for doing amazing things.

- [✨ &nbsp;Release Notes](/CHANGELOG.md)
  <!-- - [🏀 Online playground](https://stackblitz.com/github/your-org/my-module?file=playground%2Fapp.vue) -->
  <!-- - [📖 &nbsp;Documentation](https://example.com) -->

## Features

<!-- Highlight some of the features your module provide here -->

- ⛰ &nbsp;`<Modal>` & `<Qrcode>` & `<SplineSandbox>` component.
- 🚠 &nbsp;`nuxt-icon` and `@nuxtjs/tailwindcss` are installed in advance.

## Quick Setup

Install the module to your Nuxt application with one command:

```bash
npx nuxi module add @freeloop/nuxt-ui-components
```

That's it! You can now use My Module in your Nuxt app ✨

## Contribution

<details>
  <summary>Local development</summary>
  
  ```bash
  # Install dependencies
  npm install
  
  # Generate type stubs
  npm run dev:prepare
  
  # Develop with the playground
  npm run dev
  
  # Build the playground
  npm run dev:build
  
  # Run ESLint
  npm run lint
  
  # Run Vitest
  npm run test
  npm run test:watch
  
  # Release new version
  npm run release
  ```

</details>

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/my-module/latest.svg?style=flat&colorA=020420&colorB=00DC82
[npm-version-href]: https://npmjs.com/package/my-module
[npm-downloads-src]: https://img.shields.io/npm/dm/my-module.svg?style=flat&colorA=020420&colorB=00DC82
[npm-downloads-href]: https://npmjs.com/package/my-module
[license-src]: https://img.shields.io/npm/l/my-module.svg?style=flat&colorA=020420&colorB=00DC82
[license-href]: https://npmjs.com/package/my-module
[nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
[nuxt-href]: https://nuxt.com
npm package: @freeloop/tailwindcss-mask
Description: Tailwindcss mask image plugin.
Latest version: 0.1.0

<div align="center">
  <img src="./.github/tailwindcss-mark.svg" alt="Tailwind CSS" width="108" height="66">
  <h1>Tailwindcss Mask Plugin</h1>

  <p>
    <a href="https://github.com/zh-kai/tailwindcss-mask/actions">
      <img src="https://github.com/zh-kai/tailwindcss-mask/actions/workflows/nodejs.yml/badge.svg" alt="Build Status">
    </a>
    <a href="https://github.com/zh-kai/tailwindcss-mask/blob/main/LICENSE">
      <img src="https://img.shields.io/github/license/maizzle/tailwindcss-plugin-starter" alt="License">
    </a>
  </p>
</div>

# @freeloop/tailwindcss-mask

Replace this text with a short description of what the plugin does.

## Installation

Install the plugin from npm:

```sh
npm install -D @freeloop/tailwindcss-mask
```

Then add the plugin to your `tailwind.config.js` file:

```js
// tailwind.config.js
module.exports = {
  theme: {
    // ...
  },
  plugins: [
    require('@freeloop/tailwindcss-mask'),
    // ...
  ],
}
```
npm package: @freeloop/tailwindcss-text-plugins
Description: Text plugins for tailwindcss.
Latest version: 0.0.2

# @freeloop/tailwindcss-text-plugins

text plugins for tailwindcss.

## Installation

Install the plugin from npm:

```sh
npm install -D @freeloop/tailwindcss-text-plugins
```

Then add the plugin to your `tailwind.config.js` file:

```js
module.exports = {
  theme: {
    // ...
  },
  plugins: [
    require("@freeloop/tailwindcss-text-plugins"),
    // ...
  ],
};
```

## Usage

Provide instructions for how to use the plugin.

## Configuration

If your plugin is configurable, show users how to configure it.

```js
// tailwind.config.js
module.exports = {
  plugins: [
    require("tailwindcss-plugin-name")({
      className: "markdown",
    }),
    // ...
  ],
};
```

[github-ci]: https://github.com/maizzle/tailwindcss-plugin-starter/actions
[github-ci-shield]: https://github.com/maizzle/tailwindcss-plugin-starter/actions/workflows/nodejs.yml/badge.svg
[license]: ./LICENSE
[license-shield]: https://img.shields.io/github/license/maizzle/tailwindcss-plugin-starter?color=0e9f6e

## Class

- `text-stroke`
- `text-stroke-{color}`
- `text-stroke-{width}`
npm package: @freeloop/utils
Description: JS libs.
Author: zh-kai
Latest version: 0.0.6

## Providers

### Pinata Provider

```js
// Initialize first
initPinataProvider({ apiKey: "xxx", secretApiKey: "xxx" });
// or
initPinataProvider("PinataJWTKey");

// Use provider anywhere
const provider = getPinataProvider();
```

### Aleo Provider

```js
initAleoProvider();
initAleoProvider(url);

const provider = getAleoProvider();
```

## Formatters

- formatUnits
- formatEther
- formatAleo
npm package: @freeman29/number-formatter
Description: [![Build Status](https://travis-ci.org/freeman29/number-formatter.svg?branch=master)](https://travis-ci.org/freeman29/number-formatter) [![Coverage Status](https://coveralls.io/repos/github/freeman29/number-formatter/badge.svg?branch=master)](https://cove
Author: Francis Torda
Latest version: 0.0.2

[![Build Status](https://travis-ci.org/freeman29/number-formatter.svg?branch=master)](https://travis-ci.org/freeman29/number-formatter)
[![Coverage Status](https://coveralls.io/repos/github/freeman29/number-formatter/badge.svg?branch=master)](https://coveralls.io/github/freeman29/number-formatter?branch=master)

Number Formatter
=========

A small library that adds commas to numbers

## Installation

  `npm install @freeman29/number-formatter`

## Usage

    var numFormatter = require('@freeman29/number-formatter');

    var formattedNum = numFormatter(35666);
  
  
  Output should be `35,666`


## Tests

  `npm test`

## Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.