open-index/open-npm huggingface dataset:
npm package: @glaced/generator
Description: <img src="https://rawgit.com/screeny05/0afe08431699ee1ef34dffca5db3caa8/raw/718fb10816d4628c776454deb5d6b352b0864df9/glace.svg" alt="Glace logo" title="Glace" align="right" height="110" />
Author: Sebastian Langer
Latest version: 0.2.1

<img src="https://rawgit.com/screeny05/0afe08431699ee1ef34dffca5db3caa8/raw/718fb10816d4628c776454deb5d6b352b0864df9/glace.svg" alt="Glace logo" title="Glace" align="right" height="110" />

# node-glace

> OpenGL Bindings Generator for node.js using napi

Generates OpenGL Bindings in the given version for the [NodeJS N-API](https://nodejs.org/api/n-api.html)

To use this package to generate your own bindings use this:
```bash
git clone git@github.com:screeny05/glaced-generator.git
cd glaced-generator
npm install
node_modules/.bin/tsc

# generate bindings
node dist download
node dist generate --api gles2 --version 2.0

# compile bindings
cd target
npm run build
```

## Usage
```
Usage: dist/index.js command [arguments]


Options:

  -V, --version  output the version number
  -h, --help     output usage information


Commands:

  download [options]   Downloads specification and documentation XML files
      -t --target <folder>  Target folder for XML files.
      -h, --help            output usage information

  generate [options]   Generates bindings
      -a --api <gles1|gles2|glsc2|gl|egl|glx|wgl>  API to generate bindings for.
      -v --version <version>                       Minimum required version.
      -s --source <folder>                         Folder containing the XML files.
      -t --target <folder>                         Target folder for generated bindings.
      -h, --help                                   output usage information
```

Currently tested and supported is only OpenGL ES 2.0.

## Versioning
This package follows semantic versioning. The generated packages will have this versioning `<@glaced/generator version>-<svn revision number>`. The revision number is retrieved when downloading the XMLs from the OpenGL SVN repo.

## License
MIT
npm package: @glaced/glfw
Description: <img src="https://rawgit.com/screeny05/0afe08431699ee1ef34dffca5db3caa8/raw/718fb10816d4628c776454deb5d6b352b0864df9/glace.svg" alt="Glace logo" title="Glace" align="right" height="110" />
Author: Sebastian Langer
Latest version: 0.1.1

<img src="https://rawgit.com/screeny05/0afe08431699ee1ef34dffca5db3caa8/raw/718fb10816d4628c776454deb5d6b352b0864df9/glace.svg" alt="Glace logo" title="Glace" align="right" height="110" />

# @glaced/glfw

> GLFW Bindings for node.js using napi
npm package: @glaced/lwngl
Description: <img src="https://rawgit.com/screeny05/0afe08431699ee1ef34dffca5db3caa8/raw/718fb10816d4628c776454deb5d6b352b0864df9/glace.svg" alt="Glace logo" title="Glace" align="right" height="110" />
Author: Sebastian Langer
Latest version: 0.1.0

<img src="https://rawgit.com/screeny05/0afe08431699ee1ef34dffca5db3caa8/raw/718fb10816d4628c776454deb5d6b352b0864df9/glace.svg" alt="Glace logo" title="Glace" align="right" height="110" />

# @glaced/lwngl

> Lightweight node.js game library
npm package: @glacia-schematics/angular
Description: A blank schematics
Latest version: 1.9.1

# Getting Started With Schematics

This repository is a basic Schematic implementation that serves as a starting point to create and publish Schematics to NPM.

### Testing

To test locally, install `@angular-devkit/schematics` globally and use the `schematics` command line tool. That tool acts the same as the `generate` command of the Angular CLI, but also has a debug mode.

Check the documentation with
```bash
schematics --help
```

### Unit Testing

`npm run test` will run the unit tests, using Jasmine as a runner and test framework.

### Publishing

To publish, simply do:

```bash
npm run build
npm publish
```

That's it!
npm package: @glacier-network/langchain-glacierdb
Description: Sample integration for LangChain.js
Author: glacier-network
Latest version: 0.0.1

# @glacier-network/langchain-glacierdb

This package contains the LangChainJS integrations for langchain-glacierdb through their SDK.

## Installation

```bash npm2yarn
npm install @glacier-network/langchain-glacierdb
```

## Development

To develop the langchain-glacierdb package, you'll need to follow these instructions:

### Install dependencies

```bash
yarn install
```

### Build the package

```bash
yarn build
```

### Run tests

Test files should live within a `tests/` file in the `src/` folder. Unit tests should end in `.test.ts` and integration tests should
end in `.int.test.ts`:

```bash
$ yarn test
$ yarn test:int
```

### Lint & Format

Run the linter & formatter to ensure your code is up to standard:

```bash
yarn lint && yarn format
```
npm package: @glacierjs/core
Description: 作为 GlacierJS 的核心模块，它提供： 1. MiddlewareQueue：支撑函数的插件化。 2. Logger：统一管理 GlacierJS 的日志。 3. Const：统一管理静态变量
Author: JerryC
Latest version: 0.1.7

# @glacierjs/core

作为 GlacierJS 的核心模块，它提供：
1. MiddlewareQueue：支撑函数的插件化。
2. Logger：统一管理 GlacierJS 的日志。
3. Const：统一管理静态变量

## MiddlewareQueue

一个基于洋葱模型的中间件队列。

**Quick Usage:**
```typescript
const queue = new MiddlewareQueue();

queue.push(async (context, next) => {
  console.log('A');
  await next();
  console.log('B');
  context.name = 'abc';
});

queue.push(async (context, next) => {
  console.log('C');
  await next();
  console.log('D');
});

const context = {};
await queue.runAll(context);  // print: A C D B
consle.log(context); // { name: 'abc' }
```

## Logger

**Quick Usage:**
```typescript
const logger = new Logger({ prefix: 'glacierjs' });
logger.info('hello');  // print: glacierjs [info] hello
logger.debug('hello');  // print: glacierjs [debug] hello
logger.warn('hello');  // print: glacierjs [warn] hello
logger.error('hello');  // print: glacierjs [error] hello
```

**Nest Logger:**
```typescript
const myPluginLogger = logger.extends({ prefix: 'my-plugin' }); 
const myPluginModuleALogger = myPluginLogger.extends({ prefix: 'module-a' });

myPluginLogger.info('hello'); // print: glacierjs-my-plugin [info] hello
myPluginModuleALogger.info('hello'); // print: glacierjs-my-plugin-module-a [info] hello
```

**Level Controller:**
```typescript
Logger.level = Level.ERROR;
logger.info('hello');  // print nothing
logger.debug('hello');  // print nothing
logger.warn('hello');  // print nothing
logger.error('hello');  // print: glacierjs [error] hello
```
npm package: @glacierjs/plugin-assets-cache
Description: 使用文档查看：[English](https://jerryc8080.github.io/GlacierJS/#/contents/en/plugin-remote-controller) | [中文](https://jerryc8080.github.io/GlacierJS/#/contents/zh-cn/plugin-remote-controller)
Author: JerryC
Latest version: 0.1.5

# @glacierjs/plugin-assets-cache

使用文档查看：[English](https://jerryc8080.github.io/GlacierJS/#/contents/en/plugin-remote-controller) | [中文](https://jerryc8080.github.io/GlacierJS/#/contents/zh-cn/plugin-remote-controller)

API文档查看：[plugin-assets-cache](https://jerryc8080.github.io/GlacierJS/api/modules/_glacierjs_plugin_assets_cache.html)
npm package: @glacierjs/plugin-remote-controller
Description: 使用文档查看：[English](https://jerryc8080.github.io/GlacierJS/#/contents/en/plugin-remote-controller) | [中文](https://jerryc8080.github.io/GlacierJS/#/contents/zh-cn/plugin-remote-controller)
Author: JerryC
Latest version: 0.1.5

# @glacierjs/plugin-remote-controller

使用文档查看：[English](https://jerryc8080.github.io/GlacierJS/#/contents/en/plugin-remote-controller) | [中文](https://jerryc8080.github.io/GlacierJS/#/contents/zh-cn/plugin-remote-controller)

API文档查看：[plugin-remote-controller](https://jerryc8080.github.io/GlacierJS/api/modules/_glacierjs_plugin_remote_controller.html)
npm package: @glacierjs/window
Description: 为运行在主线程的代码提供 ServiceWorker 的注册与卸载，以及支持插件化编程。
Author: JerryC
Latest version: 0.1.7

# @glacierjs/window

为运行在主线程的代码提供 ServiceWorker 的注册与卸载，以及支持插件化编程。

## 快速使用 

```typescript
import { GlacierWindow } from '@glacierjs/window';

// generate glacier with ./service-worker.js which in your host.
const glacier = new GlacierWindow('./service-worker.js');

// register service worker.
glacier.register();
```

## 插件的编写与使用

编写插件：
```typescript
import { WindowPlugin } from '@glacierjs/window';
import type { UseContext } from '@glacierjs/window';

export class MyPluginWindow implements WindowPlugin {
    constructor() {...}
    public async onUse(context: UseContext) {...}
    public async beforeRegister() {...}
}
```

使用：
```typescript
import { GlacierWindow } from '@glacierjs/window';
import { MyPluginWindow } from './my-plugin';

// generate glacier with ./service-worker.js which in your host.
const glacier = new GlacierWindow('./service-worker.js');

glacier.use(new MyPluginWindow());

// register service worker.
glacier.register();
```

## Lifecycle

### onUse: (context: UseContext) => void

* `context` [\<UseContext\>](https://jerryc8080.github.io/GlacierJS/api/modules/window_src.html#UseContext) 当前上下文，可以获取到 workbox 实例和当前 glacier 实例

当插件被使用的时候，该钩子会被触发：
```javascript
glacierWindow.use(new MyPlugin());
```

如果你的插件在后续的运行中需要用到 workbox 实例或者 glacier 实例，    
可以在此阶段把它们留在当前插件作用域中：
```javascript
public onUse(context: UseContext) {
    const { glacier, workbox } = context;
    this.glacier = glacier;
    this.workbox = workbox;
}
```

### beforeRegister: (context: Object, next?: NextFn) => Promise\<void\>

* `context` 一个空对象，插件们可以以此作为通信手段。
* `next` [\<HookFn\>](https://jerryc8080.github.io/GlacierJS/api/modules/core_src.html#NextFn) 返回一个Promise，用以监听后面的插件的完成或者失败。

当即将要注册主线程时，该钩子会被触发。    
在此阶段你可以进行一些异步操作，例如我们通过远程配置来决定是否要卸载 ServiceWorker：
```javascript
public async beforeRegister(): Promise<void> {
    const config = await fetchRemoteConfig();

    // uninstall service worker while switch off
    if (config.switch === false) {
        // tell service worker thread to do some cleans job , and then uninstall it.
        this.glacier.unregister();

        // cut off behind plugins calling.
        throw ner Error('switch off service worker');
    }
}
```
npm package: @glad4enkonm/apiclient-nodejs
Description: Voximplant API client library fork
Author: Zingaya Inc.
Latest version: 2.0.7

# Voximplant API client library

Version 2.0

## Prerequisites

In order to use Voximplant Node.js SDK, you need the following:

1. A developer account. If you don't have one, [sign up here](https://voximplant.com/sign-up/).
1. A private API key. There are 2 options to obtain it:
    1. Generate it in the [Voximplant Control panel](https://manage.voximplant.com/settings/service_accounts)
    1. Call the [CreateKey](https://voximplant.com/docs/references/httpapi/managing_role_system#createkey) HTTP API
       method with the
       specified [authentication parameters](https://voximplant.com/docs/references/httpapi/auth_parameters). You'll
       receive a response with the **result** field in it. Save the **result** value in a file (since we don't store the
       keys, save it securely on your side).
1. Node.js >= 11

## How to use

Go to your project folder and install the SDK using `npm`:

```bash
npm i --save @voximplant/apiclient-nodejs
```

Then import the SDK in your script

```js
const VoximplantApiClient = require('@voximplant/apiclient-nodejs').default;
```

Next, specify the path to the file with the **result** value either in the constructor or using the environment.

**constructor**:

```js
const client = new VoximplantApiClient('/path/to/credentials.json');
```

**env**:

```bash
export VOXIMPLANT_CREDENTIALS=/path/to/credentials.json
```

## Examples

### Start a scenario

```js
const VoximplantApiClient = require('@voximplant/apiclient-nodejs').default;
const client = new VoximplantApiClient();
client.onReady = function () {
  // Start the scripts from the account.
  client.Scenarios.startScenarios({ ruleId: '1', scriptCustomData: 'mystr' })
    .then((ev) => console.log(ev))
    .catch((err) => console.error(err));
};
```

### Send an SMS

```js
const VoximplantApiClient = require('@voximplant/apiclient-nodejs').default;
const client = new VoximplantApiClient();
client.onReady = function () {
  // Send the SMS message with text "Test message" from the phone number 447443332211 to the phone number 447443332212.
  client.SMS.sendSmsMessage({
    source: '447443332211',
    destination: '447443332212',
    smsBody: 'Test message',
  })
    .then((ev) => console.log(ev))
    .catch((err) => console.error(err));
};
```

### Get a call history item

```js
const VoximplantApiClient = require('@voximplant/apiclient-nodejs').default;
const client = new VoximplantApiClient();
client.onReady = function () {
  // Get the first call session history record from the 2012-01-01 00:00:00 UTC to the 2014-01-01 00:00:00 UTC
  client.History.getCallHistory({
    fromDate: new Date('2012-01-01 00:00:00 GMT'),
    toDate: new Date('2014-01-01 00:00:00 GMT'),
    count: '1',
    timezone: 'Etc/GMT',
  })
    .then((ev) => console.log(ev))
    .catch((err) => console.error(err));
};
```
npm package: @gladejs/eleventy
Description: The GladeJS Module adding support for Eleventy, move along ...
Author: Aurélien Stébé
Latest version: 0.7.1

# GladeJS Eleventy Module

<p>
    <a href="https://github.com/prettier/prettier">
        <img alt="Code Formatter" src="https://badgen.net/badge/code%20format/prettier/ff69b4">
    </a>
    &nbsp;
    <a href="https://standardjs.com" rel="nofollow">
        <img alt="JavaScript Style" src="https://badgen.net/badge/code%20style/standard/green">
    </a>
    &nbsp;
    <a href="https://github.com/semantic-release/semantic-release">
        <img alt="Semantic Release" src="https://badgen.net/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80/semantic-release/e10079">
    </a>
    &nbsp;
    <a href="https://www.npmjs.com/package/@gladejs/eleventy" rel="nofollow">
        <img alt="Latest Version" src="https://badgen.net/npm/v/@gladejs/eleventy">
    </a>
    &nbsp;
</p>

## Description

This is the [GladeJS](https://github.com/gladejs/gladejs) Module adding support for [Eleventy](https://www.11ty.dev), move along.

This is _not_ the Rollup plugin you're looking for (it's GladeJS specific). 😐
npm package: @gladejs/rollup
Description: The GladeJS Module adding support for Rollup, move along ...
Author: Aurélien Stébé
Latest version: 0.7.2

# GladeJS Rollup Module

<p>
    <a href="https://github.com/prettier/prettier">
        <img alt="Code Formatter" src="https://badgen.net/badge/code%20format/prettier/ff69b4">
    </a>
    &nbsp;
    <a href="https://standardjs.com" rel="nofollow">
        <img alt="JavaScript Style" src="https://badgen.net/badge/code%20style/standard/green">
    </a>
    &nbsp;
    <a href="https://github.com/semantic-release/semantic-release">
        <img alt="Semantic Release" src="https://badgen.net/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80/semantic-release/e10079">
    </a>
    &nbsp;
    <a href="https://www.npmjs.com/package/@gladejs/rollup" rel="nofollow">
        <img alt="Latest Version" src="https://badgen.net/npm/v/@gladejs/rollup">
    </a>
    &nbsp;
</p>

## Description

This is the [GladeJS](https://github.com/gladejs/gladejs) Module adding support for [Rollup](https://rollupjs.org), move along.

... \
.. \
.

Well, if you're still here I guess that you know what you're doing. 🙄
npm package: @gladesinger/vue3-material
Description: Vue material package converted to vue 3.
Latest version: 0.3.9

# vue3-material
Vue material package converted to vue 3.

The package contains a collection of vue material components (https://github.com/vuematerial/vue-material) converted to vue3. Special thanks to the (https://github.com/mikimoresi/vue3-material) for providing some of the components.
Currently converted the following components:
- Avatar
- Badge
- Button
- Card
- Content
- Datepicker
- Dialog
- Divider
- Empty State
- Forms: Checkbox, File, Input & Textarea
- Icon
- List
- Menu
- Progress: Bar, Spinner
- Speed Dial
- Tabs
- Toolbar
- Tooltip

Some of the components don't work with SSR, for example DatePicker, so you should wrap it with ClientOnly if you're using Nuxt.

To install use 
```npm i @gladesinger/vue3-material```

Then set up a plugin or import components directly. Example of the plugin for nuxt 3 ```plugins/vue3-material.js```:
```
import { defineNuxtPlugin } from '#app';
import VueMaterial from '@gladesinger/vue3-material';
import '@gladesinger/vue3-material/dist/style.css';
import '@gladesinger/vue3-material/dist/theme/default.css';

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(VueMaterial);
})
```

Then in nuxt.config.ts:
```
plugins: [
    '~/plugins/vue-material.js'
]
```

Or you can import the components separately:
```
import { defineNuxtPlugin } from '#app';
import { MdCard, MdRipple, MdButton, MdIcon, MdProgress, MdTabs, MdDatepicker, MdDialog, MdContent } from '@gladesinger/vue3-material';
import '@gladesinger/vue3-material/dist/style.css';
import '@gladesinger/vue3-material/dist/theme/default.css';

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(MdCard);
  nuxtApp.vueApp.use(MdRipple);
  nuxtApp.vueApp.use(MdButton);
  nuxtApp.vueApp.use(MdIcon);
  nuxtApp.vueApp.use(MdProgress);
  nuxtApp.vueApp.use(MdTabs);
  nuxtApp.vueApp.use(MdDatepicker);
  nuxtApp.vueApp.use(MdDialog);
  nuxtApp.vueApp.use(MdContent);
})
```
npm package: @gladeye/af
Description: Animation Frame class & instance with read and write cycles to maximise performance
Author: William Hamlin
Latest version: 1.0.4

# AF

Simple animation frame class with read and write cycles to seperate out logic and draws to improve performance.

Reads will run before Writes.

## Installation

npm install @gladeye/af

## Use

As a singleton. This should be the main way this is used.
```js
import { af } from '@gladeye/af'; // lowercase af

let count = 0;

function update(){
    count ++;
}

const animFram = af();

animFram.addRead( update );

animFramf.removeRead( update );

```

Or you may extend the class.


```js
import { AF } from '@gladeye/af'; // uppercase AF

class ewAF extends AF{

}
```

## Methods

    - start()

    - stop()

    - addRead( fn )
        Adds function to the read cycle. These will run before the write functions

    - addWrite( fn )
        Adds function to the write cycle. These will run after the read functions

    - removeRead( fn )
        Removes function from the read cycle

    - removeWrite( fn )
        Removes function from the write cycle

    - onNextRead( fn )
        Adds function to run once on the next read cycle

    - onNextWrite( fn )
        Adds function to run once on the next write cycle
npm package: @gladeye/bento
Description: [![Build Status](https://travis-ci.org/gladeye/bento.svg?branch=master)](https://travis-ci.org/gladeye/bento) [![dependencies](https://david-dm.org/gladeye/bento.svg?theme=shields.io)](https://david-dm.org/gladeye/bento)
Author: Gladeye Team
Latest version: 1.2.3
npm package: @gladeye/eslint-config
Description: Default eslint config to extend upon for all projects
Author: Ken Vu
Latest version: 1.0.1

# eslint-config

Base eslint-config with [`prettier`](https://github.com/prettier/prettier) integration

## Usage

Install package via `npm` or `yarn`

```bash
yarn add @gladeye/eslint-config
```

Add `@gladeye/eslint-config` to your project `.eslintrc`

```json
{
    "extends": "@gladeye/eslint-config"
}
```

## License

MIT © [Gladeye](https://gladeye.com)
npm package: @gladiaio/sdk
Description: Gladia JavaScript/TypeScript SDK
Author: Gladia
Latest version: 1.0.0

# Gladia JavaScript SDK

A TypeScript/JavaScript SDK for the Gladia API.

## Requirements

For non-browser environment, you need either Node 20+ or Bun.  
It may work on other runtimes but they are not supported / tested.

## Installation

```bash
npm install @gladiaio/sdk
```

If you are using Node.js < 22, you also need to install the `ws` package:

```bash
npm install ws
```

On Node >= 22, Bun and browser, the native WebSocket client will be used.

## Usage

To use the SDK, import `GladiaClient` and create a new instance of it.

You have to give a valid `apiKey` to make requests.
If the SDK is used in public code (on browser for example) and you don't want to give away your private api key, you can also change the default `apiUrl` to redirect calls to a proxy that will redirect to `https://api.gladia.io` and add the header `X-Gladia-Key`.

You can also configure `apiKey`, `apiUrl` and `region` through their respective environment variables: `GLADIA_API_KEY`, `GLADIA_API_URL` and `GLADIA_REGION`.

### Node.js / Browser (ESM)

```typescript
import { GladiaClient } from '@gladiaio/sdk'

const gladiaClient = new GladiaClient({
  apiKey: 'your-api-key',
})
```

### Node.js (CommonJS)

```javascript
const { GladiaClient } = require('@gladiaio/sdk')

const gladiaClient = new GladiaClient({
  apiKey: 'your-api-key',
})
```

### Browser (Script Tag)

```html
<script src="https://unpkg.com/@gladiaio/sdk"></script>

<script>
  const gladiaClient = new Gladia.GladiaClient({
    apiKey: 'your-api-key',
  })
</script>
```

## Live V2

### Usage

```javascript
// Create session
const liveSession = gladiaClient.liveV2().startSession({
  language_config: {
    languages: ['en'],
  },
  messages_config: {
    receive_partial_transcripts: true,
  },
})

// Add listeners
liveSession.on('message', (message) => {
  if (message.type === 'transcript') {
    console.log(`${message.data.is_final ? 'F' : 'P'} | ${message.data.utterance.text.trim()}`)
  }
})

liveSession.once('started', () => {
  console.log(`Session ${liveSession.sessionId} started`)
})

liveSession.on('error', (err) => {
  console.error('An error occurred during live session:', err)
})

liveSession.once('ended', () => {
  console.log(`Session ${liveSession.sessionId} ended`)
})

// Send audio
liveSession.sendAudio(/* <audio_chunk> */)
// ...
liveSession.sendAudio(/* <audio_chunk> */)

// Stop the recording when all audio have been sent.
// Remaining audio will be processed and after post-processing,
// the session is ended.
liveSession.stopRecording()
```
npm package: @gladimdim/bs-semver
Description: The Bucklescript bindings for the npm semver package
Author: Dmytro Gladkyi
Latest version: 0.3.0

# bs-semver

Bindings to the official [NPM semver package](https://www.npmjs.com/package/semver)

## Installation
```sh
npm install --save @gladimdim/bs-semver
yarn add @gladimdim/bs-semver --save
```
Then add `@gladimdim/bs-semver` to `bs-dependencies` in your `bsconfig.json`:
```js
{
  ...
  "bs-dependencies": ["@gladimdim/bs-semver"]
}
```

# Usage
Exposed function can be accessed in the same way, as in JavaScript:
```
let minor = Semver.minor("3.5.0"); /* 5 */
```
You can construct Semver object:
JavaScript version:
```js
const semver = new Semver("3.5.0");
const minor = semver.minor;
const patch = semver.patch;
```

ReasonML:
```
let semver = Semver.createSemver("3.5.0");
let minor = semver##minor;
let patch = semver##patch;
```

You can reference [__tests__/semver_spec.re]("./blob/master/__tests__/semver_spec.re) tests for more examples.

# Build

```
npm run build
```

# Watch

```
npm run watch
```

# What is covered
The following functions are covered:
* gt
* gte
* lt
* lte
* eq
* neq
* clean
* valid
* satisfies
* cmp
* compare
* rcompare
* diff
* inc
* patch
* major
* minor
* new Semver("3.5.0")

# Notes on nullable return type
Some functions in semver might return null as a valid result. Documentation for semver does not state, which functions return null as a valid value.
So I had to check all of these bindings manually.

For example, in JS following code returns null: 
```js
semver.valid("1.5.1a") ; // null
```

In these bindings, this nullable return type is converted to Option via Js.Nullable.toOption.

So, in Reason you can do like this:
```
semver.valid("1.5.1a") |> result =>
    switch result {
        | Some(v) => v /*string with valid semver version*/
	| None => /* handle case, when input into valid call contained invalid semver function */
    }
```
npm package: @gladio/alert
Description: Alert ui component
Author: Sudhir Mitharwal
Latest version: 0.7.11

# Alert Component

Show alert message (errors, success, informations) in ui

## Installation

```bash
yarn add @gladio/alert
```

## Usage

```js
// import the alert component
import Alert from "@gladio/alert"

const MyComponent = () => {
  return <Alert type="assertive">Something went wrong</Alert>
}
```
npm package: @gladio/badge
Description: Badge Component
Author: Sudhir Mitharwal
Latest version: 0.10.7

# Badge component

Use it to show `state` or `count` into the UI

## Installation

```bash
yarn add @gladio/badge
```

## Usage

```js
// import the badge component
import Badge from "@gladio/badge"

const MyComponent = () => {
  return (
    <div>
      Notifications <Badge>10</Badge>
    </div>
  )
}
```
npm package: @gladio/box
Description: Box Component
Author: Sudhir Mitharwal
Latest version: 0.4.7

# Box

Base component to use the css with defined props instead of class names e.g. instead of passing
`className="bg-green-100"`, we can now pass `backgroundColor="green-100"`. This component has full typescript support
for all available props with there values, removing any kind of typo errors in class names.

## Installation

```
npm install --save @gladio/box
```

This package also installs the required css module `@gladio/css` which should be imported in your application.

## Usage

This component accepts almost all the props to add any styles that can be applied using class name. Some props also
have responsive values which can be passed directly via props only.

```js
import Box from "@gladio/box"

function App() {
  return (
    <Box
      as="button"
      backgroundColor="green-300"
      backgroundColorHover="green-200"
      textColor="green-800"
      padding="4"
      paddingLg="6"
      border="2"
      rounded="lg"
      outlineFocus="none"
    >
      Some Text Here
    </Box>
  )
}
```
npm package: @gladio/button
Description: Button Component
Author: Sudhir Mitharwal
Latest version: 0.8.8

# Button Component

Use to render a button component

## Installation

```bash
yarn add @gladio/button
```

## Usage

```js
// import the component
import Button from "@gladio/button"

// use it as you would use a simple button
const MyComponent = () => {
  return (
    <div>
      <Button
        onClick={() => {
          console.log("Button was Clicked")
        }}
      >
        Click Me
      </Button>
    </div>
  )
}
```
npm package: @gladio/css
Description: CSS
Author: Sudhir Mitharwal
Latest version: 0.32.7

# Styles for Gladio

We are using tailwindcss for utility classes. You can use all the css classes defined on https://tailwindcss.com.

Along with them, following classes are also available

- Use `primary` color for alll the color related classes e.g. `.text-primary-300`, `bg-primary-600`
- Use `secondary` color similar to `primary` color
- Use `accent` color tag simpilar to `primary` color

Components classes

- `.btn` to make a button
- `.btn-primary` to make something a primary button
- `.badge` for badge level styles
- `.badge-primary` to make a badge primary

## Install

```
npm install --save @gladio/css
```

## Usage

> Make sure you have loader for css files

**in sass**

```
@include '@gladio/css/styles/styles.css'
```

**in js**

```
import '@gladio/css/styles/styles.css'
```

A JSON file for theme is also included

```js
import theme from "@gladio/css/lib/theme.json"
```
npm package: @gladio/datetime
Description: Datetime Component
Author: Sudhir Mitharwal
Latest version: 1.0.7

# Date and Time module

Use `DatePicker` to handle the date inputs

## Installation

```bash
yarn add @gladio/datetime
```

> momentjs is a peer dependency

## Usage

```js
// import the date time component
import DatePicker from "@gladio/time"

const MyComponent = () => {
  return <DatePicker />
}
```
npm package: @gladio/dialog
Description: Dialog/Modal component
Author: Sudhir Mitharwal
Latest version: 1.0.8

# Dialog Component

Use dialog component to show ui element inside a dialog or popup

## Install

```bash
npm install --save @gladio/dialog
```

## Usage

```js
import Dialog, { useDialog } from "@gladio/dialog"

function Continue({ onContinue }) {
  // helper react hook, (useState can also be used)
  const [isConfirmationVisible, showConfirm, hideConfirm] = useDialog()
  return (
    <div>
      <button onClick={showConfirm}>Continue</button>
      <Dialog open={isConfirmationVisible} onClose={hideConfirm} closeButton>
        <Dialog.Header>
          <Dialog.Title>Are you sure you want to continue ?</Dialog.Title>
        </Dialog.Header>
        <Dialog.Body>
          You will not be able to recover after this step!
        </Dialog.Body>
        <Dialog.Footer>
          <button
            onClick={() => {
              hideConfirm()
              onContinue()
            }}
          >
            Continue
          </button>{" "}
          <button onClick={hideConfirm}>Cancel</button>
        </Dialog.Footer>
      </Dialog>
    </div>
  )
}
```
npm package: @gladio/dom-helpers
Description: Dom helper utilities
Author: Sudhir Mitharwal
Latest version: 0.5.1

# Dom helpers

### Install

```
npm install --save @gladio/dom-helpers
```

### Utilities

#### isDom

check if dom is available (generally used in univeral apps)

```js
import { isDom } from "@gladio/dom-helpers"

function App() {
  if (isDom) {
    // rendering in a browser
  }
}
```

#### activeElement

Return the current active element in the dom

```js
import { activeElement } from "@gladio/dom-helpers"

const App () {
  const currentActiveElement = activeElement()
}
```

#### contains

Checks whether or not a dom node is contains another given dom node. An usecase would be for checking a active
element inside a container

```js
import { contains } from "@gladio/dom-helpers"

function App() {
  // after mount
  if (contains(container, child)) {
    // do something with it
  }
}
```
npm package: @gladio/icons
Description: React SVG Icons
Author: Sudhir Mitharwal
Latest version: 0.27.6

# Icons

We are using svgs for icons.

## Installation

```bash
npm install --save @gladio/icons
```

## Usage

```typescript
import { PhoneIcon } from "@gladio/icons"

function MyComponent() {
  return (
    <div>
      <PhoneIcon title="Call to John doe" />
    </div>
  )
}
```

## Contribution

1. Generating SVGs
   Head over to https://icomoon.io/app and choose icon(s). After selecting icon(s), click on `Generate SVG & More` from
   bottom navigation. From this view, download the svgs and paste the content of <downloaded_folder>/SVG into the
   `./svgs` folder. Append the styles from <downloaded_folder>/styles.css to `./icon.css`.

2 Copy the svg to the `src/svgs` folder

3 Add appropriate styles to the `src/icon.css` with css class be `tp-icon-[svg-file-name]`

4 Run `npm run prebuild` to build the component and update the imports files
npm package: @gladio/overlays
Description: Tooltips/Popover (overlay) Component
Author: Sudhir Mitharwal
Latest version: 0.5.8

# Overlays components (Tooltips/Popover)

Use it to show more information about a UI element

## Installation

```bash
yarn add @gladio/overlays
```

## Usage

```js
// import the Tooltip component
import { Tooltip } from "@gladio/overlays"

const MyComponent = () => {
  return (
    <Tooltip content="10 Notifications" position="botton">
      <span>10</span>
    </Tooltip>
  )
}
```
npm package: @gladio/paginate
Description: Paginate Component
Author: Sudhir Mitharwal
Latest version: 0.4.8

# Paginate Component

Use this component to show the pagination in your application

## Installation

```
npm install --save @gladio/paginate
```

## Usage

```js
import Paginate from "@gladio/paginate"

function App(props) {
  return (
    <div>
      <Paginate
        total={props.total}
        from={props.from}
        to={props.to}
        currentPage={props.currentPage}
        lastPage={props.lastPage}
        isFetching={props.isFetchin}
        onChange={page => props.fetch({ page })}
      />
    </div>
  )
}
```
npm package: @gladio/react-hooks
Description: Common utility react hooks
Author: Sudhir Mitharwal
Latest version: 0.9.2

# React Hooks

Some helper react hooks

## Install

```
npm install --save @gladio/react-hooks
```

## Usage

### useDidMount

Call a function on component's didMount Lifecycle

```js
import { useDidMount } from "@gladio/react-hooks"

function App() {
  useDidMount(() => {
    // only called on mount
    fetchTheData()
  })
}
```

### useDidUpdate

Call a function only in component's didUpdate Lifecycle.

```js
import { useDidUpdate } from "@gladio/react-hooks"

function App({ count }) {
  useDidUpdate(() => {
    // called when the count changes
  }, [count])
}
```

### useOnce

Only call a function once in a component's Lifecycle

```js
import { useOnce } from "@gladio/react-hooks"

function App() {
  useOnce(() => {
    // only called once
    fetchTheData()
  })
}
```

### useEnforceFocus

Enforces focus to be contained in a container and return back to last focused element based on a condition

```js
useEnforceFocus(
  containerRef, // React.Ref: of the container
  shouldBeFocused, // boolean: (true) to toggle the focus enforcement
  config: {
    autoFocus // boolean: (true) should the container be autoFocus
    enforceFocus // boolean: (true) should return the focus to the last focused element
  }
)
```

```js
import { useRef, useState } from "react"
import { useEnforceFocus } from "@gladio/react-hooks"

function App() {
  const containerRef = useRef()
  const [shouldBeFocused, toggleShouldFocus] = useState(false)
  // will focus the form container when shouldBeFocused is set to true
  useEnforceFocus(containerRef, shouldBeFocused)
  return (
    <div>
      <form className="container" ref={containerRef}>
        <input type="email" autoFocus />
        <button type="submit">Save</button>
      </form>
      <button onClick={() => toggleShouldFocus(!shouldBeFocused)}>
        Toggle Focus
      </button>
    </div>
  )
}
```
npm package: @gladio/select
Description: Single/Multe Select component with Async/Creatable support
Author: Sudhir Mitharwal
Latest version: 0.15.10

# Select component

Use a custom select to enhance UX for input fields that requires selection of items

## Installation

```bash
yarn add @gladio/select
```

## Usage

```js
import Select, { Async } from "@gladio/select"

const MyComponent = () => {
  const [query, setQuery] = useState("")
  const [value, setValue] = useState()
  return (
    <div>
      <Select
        value={value}
        onChange={selectedValue => {
          setValue(selectedValue)
        }}
        onQuery={setQuery}
      />
      <Async
        onChange={selectedValue => {
          setValue(selectedValue)
        }}
        fetch={query => Promise.resolve([])}
      />
    </div>
  )
}
```
npm package: @gladio/snackbar
Description: Snackbar/Notification utility
Author: Sudhir Mitharwal
Latest version: 1.0.6

# Snackbar utility and UI component

Show snackbars with ease

## Installation

```bash
yarn add @gladio/snackbar
```

## Usage

```js
// import show/hide utility functions
import { showSnackbar } from "@gladio/snackbar"

const MyComponent = () => {
  return <button onClick={() => showSnackbar("Success")}>Submit</button>
}
```
npm package: @gladio/table
Description: Table Component
Author: Sudhir Mitharwal
Latest version: 0.11.7

# Table Component

## Installation

```bash
npm install --save @gladio/table
```

## Usage

```js
import Table from "@gladio/table"

function App() {
  return (
    <Table bordered caption="Caption here">
      <thead>
        <tr>
          <th>Heading</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Cell</td>
        </tr>
      </tbody>
    </Table>
  )
}
```
npm package: @gladio/ui
Description: React Components Library
Author: Sudhir Mitharwal
Latest version: 3.0.8

# UI

All the Components and Helpers in one package

## Installation

```
npm install --save @gladio/ui
```

## Usage

### Add the styles

in `SASS` or `SCSS`

```scss
@import "@gladio/ui/styles/index";
```

in `js`

```js
@import "@gladio/ui/styles/index.css";
```

### Using Components

This is a combined package for all the ui elements so works the same way as others

```js
// prefered
import { Button } from @gladio/ui
// or
import Button from "@gladio/button"
```
npm package: @gladiolus/cancellable
Description: A simple promise wrapper for setting and canceling then/catch/final
Author: lopo
Latest version: 0.1.0

# @gladiolus/cancellable

> A promise cannot be canceled, but we can control whether its then is triggered or not to achieve the equivalent of 'cancellation'

A simple promise wrapper for setting and canceling `then`/`catch`/`final`

## Install

```bash
npm install @gladiolus/cancellable
```

## Usage

cancel

```js
import { Cancellable } from "../dist/index.js";

/**
 * Create a task that will be resolved after a certain time
 * @param elapsedTime {number} - time in milliseconds
 * @return {Promise<void>}
 */
const createTask = (elapsedTime) => {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve();
        }, elapsedTime);
    });
}

const task_cancel = new Cancellable(
    createTask(2000),
    {
        onCancelled: (cause) => {
            console.log("This will be called when task is cancelled, and the cause is:", cause);
        },
        onFinally: () => {
            console.log("This will never be called cause task is cancelled before it is resolved");
        }
    }
);

setTimeout(() => {
    task_cancel.cancel('Task cancelled by user in 1 second');
}, 1000)

// below will be printed in 1 second:
// => This will be called when task is cancelled, and the cause is: Task cancelled by user in 1 second
//
// and the script will exit in 2 seconds.
```

finish

```js
import { Cancellable } from "../dist/index.js";

/**
 * Create a task that will be resolved after a certain time
 * @param elapsedTime {number} - time in milliseconds
 * @return {Promise<void>}
 */
const createTask = (elapsedTime) => {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve();
        }, elapsedTime);
    });
}

const task_fulfill = new Cancellable(
    createTask(2000),
    {
        onCancelled: (cause) => {
            console.log("This will be called when task is cancelled, and the cause is:", cause);
        },
        onFinally: () => {
            console.log("This will be called when task is finished");
        }
    }
);
task_fulfill.then(() => {
    console.log("This will be called when task is fulfilled");
})

// below will be printed in 2 seconds:
// => This will be called when task is fulfilled
// => This will be called when task is finished
//
// and the script will exit in 2 seconds.
```
npm package: @gladiolus/mime
Description: determining the MIME type for a file
Author: lopo
Latest version: 0.1.0

# @gladiolus/mime

> In general, the suffix of a file should reflect its mime type to some extent. But no matter what, adding another dimension of judgment can always improve the accuracy somewhat.

Determining the MIME type for a file

## Install

```bash
npm install @gladiolus/mime
```

## Usage

commonjs

```js
const { findMime } = require('@gladiolus/mime');

findMime('README.md'); // => 'text/markdown'
```

esm

```js
import { findMime } from '@gladiolus/mime';

findMime('README.md'); // => 'text/markdown'
```

## API

| overloads                                                                       | description                                                                                                             |
|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| `function findMime(filename: string): string \| null`                           | Find mime type of file by filename                                                                                      |
| `function findMime(beginBytes: ToBeginBytes): string \| null`                   | Find mime type of file by begin bytes                                                                                   |
| `function findMime(filename: string, beginBytes: ToBeginBytes): string \| null` | Find mime type of file by filename or begin bytes.<br/>It will use begin bytes first (if any), then filename if failed. |

Note: `type ToBeginBytes = ArrayLike<number> | Iterable<number>`
npm package: @gladstongarcia/json-bignumber
Description: JSONBigNumber.parse/stringify handling **all** JSON numbers using BigNumber. Based on Douglas Crockford [JSON.js](https://github.com/douglascrockford/JSON-js) package and [bignumber.js](https://github.com/MikeMcl/bignumber.js) library.
Author: William Buss
Latest version: 1.0.1

# JSONBigNumber

JSONBigNumber.parse/stringify handling **all** JSON numbers using BigNumber.
Based on Douglas Crockford [JSON.js](https://github.com/douglascrockford/JSON-js)
package and [bignumber.js](https://github.com/MikeMcl/bignumber.js) library.

[![Build Status](https://travis-ci.org/wbuss/JSONBigNumber.svg?branch=master)](https://travis-ci.org/wbuss/JSONBigNumber)
[![Known Vulnerabilities](https://snyk.io/test/github/wbuss/jsonbignumber/badge.svg)](https://snyk.io/test/github/wbuss/jsonbignumber)

## Usage

All JSON numbers will be passed to BigNumber in the JavaScript object returned from
JSONBigNumber.parse()

### example
```js
let input = '{"big":1234567890.123456789,"small":789.012}';

let obj1 = JSON.parse(input);
console.log("JSON", obj1.big.toString());  //'JSON', '1234567890.1234567'
//The number has lost the last 2 digits
let out1 = JSON.stringify(obj1);
console.log("JSON", out1);  //'JSON', '{"big":1234567890.1234567,"small":789.012}'

let obj2 = JSONBigNumber.parse(input);
console.log("JSONBigNumber", obj2.big.toString());  //'JSONBigNumber', '1234567890.123456789'
//No loss of precision
let out2 = JSONBigNumber.stringify(obj2);
console.log("JSONBigNumber", out2);  //'JSONBigNumber', '{"big":1234567890.123456789,"small":789.012}'
```
JSONBigNumber.js: This file creates a JSONBigNumber property in the global object,
setting its value to an object containing a stringify
method and a parse method. The parse method uses recursive descent to do the
parsing.

### Note
For bignumber.js >= v6.0.0 use JSONBigNumber >= v1.0.0
For bignumber.js < v6.0.0 use JSONBigNumber < v1.0.0

JSON is a light-weight, language independent, data interchange format.
See http://www.JSON.org/

JSON became a built-in feature of JavaScript when the ECMAScript Programming
Language Standard - Fifth Edition was adopted by the ECMA General Assembly
in December 2009. Unfortunately the built-in JSON handler makes use of JavaScript
Number for handling Numbers in JSON causing the loss of precision for numbers
with approximately 15 significant figures.
npm package: @gladtek/launch-cooper
Description: Scaffold a new project with the Cooper Astro Boilerplate
Author: Gladtek
Latest version: 0.0.2

# Cooper Astro Boilerplate App Creator

A CLI tool to scaffold new projects using the Cooper Astro Boilerplate.

## Usage

To create a new project using the Cooper boilerplate, run the following command:

```bash
npx @gladtek/launch-cooper@latest
```

### Local Development

To test the CLI locally:

1.  Navigate to the `cli` directory:
    ```bash
    cd cli
    ```

2.  Run the CLI:
    ```bash
    node index.js
    ```

### Features

-   **Interactive Prompts**: Choose your project name.
-   **Git Initialization**: Automatically initializes a new git repository.
-   **Dependency Installation**: Automatically installs dependencies via `npm install`.
-   **Smart Setup**: Updates `package.json` with your project name and version.