open-index/open-npm huggingface dataset:
npm package: @rize-labs/banana-wallet-sdk
Description: Smart contract wallet sdk package by Banana Wallet
Author: nlok5923
Latest version: 0.1.28

## @rize-labs/banana-wallet-sdk

### Documentation: [here](https://banana-wallet-docs.rizelabs.io/)

### Setting up:
To start using the sdk into your react-app follow the below steps on top of your existing react-app configuration.

1. Install `react-app-rewired` as a dependency via.
```
yarn add react-app-rewired or npm install react-app-rewired
```

2. Create a `config-overrides.js` with the below configurations to fix polyfill issues.
```
const { ProvidePlugin }= require("webpack")

module.exports = {
  webpack: function (config, env) {
    config.module.rules = config.module.rules.map(rule => {
      if (rule.oneOf instanceof Array) {
        rule.oneOf[rule.oneOf.length - 1].exclude = [/\.(js|mjs|jsx|cjs|ts|tsx)$/, /\.html$/, /\.json$/];
      }
      return rule;
    });
    config.resolve.fallback = {
      ...config.resolve.fallback,
      stream: require.resolve("stream-browserify"),
      buffer: require.resolve("buffer"),
      crypto: require.resolve("crypto-browserify"),
      process: require.resolve("process"),
      os: require.resolve("os-browserify"),
      path: require.resolve("path-browserify"),
      constants: require.resolve("constants-browserify"), 
      fs: false
    }
    config.resolve.extensions = [...config.resolve.extensions, ".ts", ".js"]
    config.plugins = [
      ...config.plugins,
      new ProvidePlugin({
        Buffer: ["buffer", "Buffer"],
      }),
      new ProvidePlugin({
          process: ["process"]
      }),
    ]
    return config;
  },
}
```

3. Change `package.json` accordingly to use with `react-app-rewired`
```
react-scripts start -> react-app-rewired start,
react-scripts build -> react-app-rewired build,
react-scripts test -> react-app-rewired test,
```

4. Install packages required in `config-overrides` accordingly using the below command.
```
yarn add stream-browserify constants-browserify crypto-browserify os-browserify path-browserify process stream-browserify
```
OR
```
npm install stream-browserify constants-browserify crypto-browserify os-browserify path-browserify process stream-browserify
```
5. Restart your app with `yarn start` or `npm start`.
npm package: @rize/blocks
Description: (Mostly) Presentational React components for Rize
Author: Julian van Giessen
Latest version: 2.0.8

# Rize Blocks

[![npm version](https://badge.fury.io/js/%40rize%2Fblocks.svg)](https://github.com/RizeFinance/blocks)
[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)

React component library for the [Rize Savings Web App](https://rizemoney.com). Interactive storybook at [Rize Blocks](https://blocks.rizemoney.com).

## Overview

At Rize, UI components are developed in this library and then imported into our main application where they are wired up to their container components[0]. By separating the presentational components into their own library, we are able to enforce a strict separation of concerns and deeply enforce a single responsibility rule of how components that render UI should only be concerned with their appearance and interactivity (and not be concerned with application/implementation details).

### How We Use This

This library is symlinked locally with the main application. Rize Blocks builds to ES6 modules, so the bundling process is taken care of in a downstream build process. The ES6 module build also permits tree-shaking in the cases that there are unused (experimental/deprecated) components.

Seems like overkill? This workflow works well for us for a two major reasons:

1. Designing presentational components and their props happens in isolation, therefore props and components design tends to be less coupled to our app's state
2. These components are developed entirely in [storybooks](storybooks.js.org), which provides an incredible developer's experience and imparts very high cohesion (the component visually align) and loose coupling (the components can exist independently to the largest extent possible)

## Developing Presentational Components

### Simplest

Components are developed in individual stories.

### Salt and Pepper

In cases where components have contextual dependencies on other presentational components, they can be developed in a story that has a combination of several components (e.g. seeing how a `<Button />` component integrates with the bottom of a `<Panel />` component in a `<Modal />`).

### Fully Loaded

The only intances with considerable cohesion between the blocks and the main application is with forms. The link is in `./.storybook/config.js`, where `redux-form` is configured. This permits us to develop controlled components in stories.
npm package: @rizecom/duckdb-node-bindings
Description: [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview).
Latest version: 1.4.0-preview

# DuckDB Node Bindings

[Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview).

See [@rizecom/duckdb-node-api](https://www.npmjs.com/package/@rizecom/duckdb-node-api) for a high-level API built on these low-level bindings.

### Supported Platforms

- Linux arm64
- Linux x64
- Mac OS X (Darwin) arm64 (Apple Silicon)
- Mac OS X (Darwin) x64 (Intel)
- Windows (Win32) x64
npm package: @rizecom/duckdb-node-bindings-darwin-arm64
Description: Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Mac OS X (Darwin) arm64.
Latest version: 1.4.0-preview

# DuckDB Node Bindings: Darwin arm64

Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Mac OS X (Darwin) arm64.

See [@rizecom/duckdb-node-bindings](https://www.npmjs.com/package/@rizecom/duckdb-node-bindings) for a low-level API that uses these binaries, or [@rizecom/duckdb-node-api](https://www.npmjs.com/package/@rizecom/duckdb-node-api) for a high-level API built on those bindings.
npm package: @rizecom/duckdb-node-bindings-darwin-x64
Description: Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Mac OS X (Darwin) x64.
Latest version: 1.4.0-preview

# DuckDB Node Bindings: Darwin x64

Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Mac OS X (Darwin) x64.

See [@rizecom/duckdb-node-bindings](https://www.npmjs.com/package/@rizecom/duckdb-node-bindings) for a low-level API that uses these binaries, or [@rizecom/duckdb-node-api](https://www.npmjs.com/package/@rizecom/duckdb-node-api) for a high-level API built on those bindings.
npm package: @rizecom/duckdb-node-bindings-linux-arm64
Description: Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Linux arm64.
Latest version: 1.4.0-preview

# DuckDB Node Bindings: Linux arm64

Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Linux arm64.

See [@rizecom/duckdb-node-bindings](https://www.npmjs.com/package/@rizecom/duckdb-node-bindings) for a low-level API that uses these binaries, or [@rizecom/duckdb-node-api](https://www.npmjs.com/package/@rizecom/duckdb-node-api) for a high-level API built on those bindings.
npm package: @rizecom/duckdb-node-bindings-linux-x64
Description: Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Linux x64.
Latest version: 1.4.0-preview

# DuckDB Node Bindings: Linux x64

Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Linux x64.

See [@rizecom/duckdb-node-bindings](https://www.npmjs.com/package/@rizecom/duckdb-node-bindings) for a low-level API that uses these binaries, or [@rizecom/duckdb-node-api](https://www.npmjs.com/package/@rizecom/duckdb-node-api) for a high-level API built on those bindings.
npm package: @rizecom/duckdb-node-bindings-win32-x64
Description: Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Windows (Win32) x64.
Latest version: 1.4.0-preview

# DuckDB Node Bindings: Win32 x64

Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Windows (Win32) x64.

See [@rizecom/duckdb-node-bindings](https://www.npmjs.com/package/@rizecom/duckdb-node-bindings) for a low-level API that uses these binaries, or [@rizecom/duckdb-node-api](https://www.npmjs.com/package/@rizecom/duckdb-node-api) for a high-level API built on those bindings.
npm package: @rizedr/babel-plugin-graphql-js-client-transform
Description: Babel plugin for transforming raw GraphQL queries into graphql-js-client query builder syntax
Author: Shopify Inc.
Latest version: 0.0.4

# babel-plugin-graphql-js-client-transform

This Babel plugin will transform any tagged raw GraphQL query to [Shopify/graphql-js-client](https://github.com/Shopify/graphql-js-client) query builder syntax.

## Table Of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Examples](#examples)
- [License](http://github.com/Shopify/babel-plugin-graphql-js-client-transform/blob/master/LICENSE.md)

## Installation
```bash
$ yarn add babel-plugin-graphql-js-client-transform
```

### In your `.babelrc`
```
{
  "plugins": [
    "graphql-js-client-transform"
  ]
}
```

## Usage

```js
// Finds template literals tagged with gql
import {gql} from 'babel-plugin-graphql-js-client-transform';

// Finds template literals tagged with customTagName
import {gql as customTagName} from 'babel-plugin-graphql-js-client-transform';
```
The plugin will pick up any template literals tagged with the imported `gql` function.
Do not reassign the function to another variable after it has been imported.
```js
import {gql} from 'babel-plugin-graphql-js-client-transform';

...

const newTag = gql;

newTag(client)`...`; // Don't do this. This template literal won't be transformed.
```

An instance of [Shopify/graphql-js-client](https://github.com/Shopify/graphql-js-client)
must be supplied to the tag.

## Examples

The following are example usages.

#### Example 1
Convert a simple query.

##### Source Code
``` js
import {gql} from 'babel-plugin-graphql-js-client-transform';

...

client.send(gql(client)`
  query {
    shop {
      name
    }
  }
`);
```

##### Transformed Code
```js
import {gql} from 'babel-plugin-graphql-js-client-transform';

...

const _document = client.document(); // Creates a document to store the query
_document.addQuery((root) => {
  root.add('shop', (shop) => {
     shop.add('name');
  });
});

client.send(_document);
```

#### Example 2
The query can also be stored inside a variable instead of being sent directly.

##### Source Code

```js
import {gql} from 'babel-plugin-graphql-js-client-transform';

...

const query = gql(client)`
  query {
    shop {
      name
    }
  }
`;

client.send(query);
```

##### Transformed Code
```js
import {gql} from 'babel-plugin-graphql-js-client-transform';

...

const _document = client.document(); // Creates a document to store the query
_document.addQuery((root) => {
  root.add('shop', (shop) => {
     shop.add('name');
  });
});

const query = _document;

client.send(query);
```

## License

MIT, see [LICENSE.md](http://github.com/Shopify/babel-plugin-graphql-js-client-transform/blob/master/LICENSE.md) for details.

<img src="https://cdn.shopify.com/shopify-marketing_assets/builds/19.0.0/shopify-full-color-black.svg" width="200" />
npm package: @rizedr/react-scripts
Description: Configuration and scripts for Create React App.
Latest version: 0.0.10

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebookincubator/create-react-app).<br>
Please refer to its documentation:

* [Getting Started](https://github.com/facebookincubator/create-react-app/blob/master/README.md#getting-started) – How to create a new app.
* [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md) – How to develop apps bootstrapped with Create React App.
npm package: @rizkhal/inertable-vue
Description: ![Package Logo](https://banners.beyondco.de/INERTABLE-VUE.png?theme=light&packageManager=npm+install&packageName=%40rizkhal%2Finertable-vue&pattern=topography&style=style_1&description=An+Inertable+for+Vue3&md=1&showWatermark=1&fontSize=125px&images=table
Latest version: 0.0.1

![Package Logo](https://banners.beyondco.de/INERTABLE-VUE.png?theme=light&packageManager=npm+install&packageName=%40rizkhal%2Finertable-vue&pattern=topography&style=style_1&description=An+Inertable+for+Vue3&md=1&showWatermark=1&fontSize=125px&images=table)

## INSTALATION

```bash
npm install @rizkhal/inertable-vue
```

## BASIC USAGE

```vue
<script setup>
defineProps({
    inertable: Object,
});
</script>
<template>
    <div>
        <Inertable :data="inertable" />
    </div>
</template>
```

or you can costum the column with `slot` name, the slot name is equals from your inertable column name

```vue
<script setup>
defineProps({
    inertable: Object,
});
</script>
<template>
    <div>
        <Inertable :data="inertable">
            <template #name="{ item: {name} }">
                <span>{{ name }}</span>
            </template>
        </Inertable>
    </div>
</template>
```
npm package: @rizkinfs/font
Description: <p align="center">   <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px"> </p>
Author: Diego Muracciole
Latest version: 2.0.15

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @react-pdf/font
npm package: @rizkinfs/layout
Description: <p align="center">   <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px"> </p>
Author: Diego Muracciole
Latest version: 2.0.23

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @react-pdf/layout
npm package: @rizkinfs/yoga
Description: Prebuilt yoga-layout package
Author: Diego Muracciole
Latest version: 2.0.4

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @react-pdf/yoga

> Prebuilt [yoga-layout](https://github.com/facebook/yoga) package with memory heap increase

## Acknowledges

This project is forked from the great [yoga-layout-prebuilt](https://github.com/vadimdemedes/yoga-layout-prebuilt) from @vadimdemedes.

Also thanks to @Skywalker13 for providing the post-processing script for increasing build original memory heap.

## Install

```
$ npm install @react-pdf/yoga
```

## Usage

```js
import Yoga from '@react-pdf/yoga';
// Same as if imported from yoga-layout
```
npm package: @rizkisunaryo/lodashget
Description: Some of my friends are reluctant to use https://lodash.com/ . They say lodash is heavy. That's why I create this library. This lodashget is light, it only contains small block of code that imitates `lodash.get`.
Author: Rizki Sunaryo
Latest version: 1.0.5

# Reason Behind This Library Creation
Some of my friends are reluctant to use https://lodash.com/ . They say lodash is heavy. That's why I create this library. This lodashget is light, it only contains small block of code that imitates `lodash.get`.


# Examples

```js
const lodashget = require('@rizkisunaryo/lodashget')

const obj = {
    a: {
        b: 'c'
    }
}
console.log(lodashget(obj, 'a.b')) // output: 'c'
```

```js
const lodashget = require('@rizkisunaryo/lodashget')

const obj = {
    a: {
        b: 'c'
    }
}
console.log(lodashget(obj, 'a.b.c', '')) // output: ''
```

```js
const lodashget = require('@rizkisunaryo/lodashget')

const arr = [[1, [2, 3]], 4]
console.log(lodashget(arr, '[0][1][1]')) // output: 3
```

```js
const lodashget = require('@rizkisunaryo/lodashget')

const obj = {
    a: {
        b: [1, [2, 3, {coba: 'saja'}], 5]
    }
}
console.log(lodashget(obj, `a.b[1][2]['coba']`)) // output: 'saja'
```

```js
const lodashget = require('@rizkisunaryo/lodashget')

const arr = [[1, [2, 3]], 4]
console.log(lodashget(arr, '[0][1][1].coba.saja', 10)) // output: 10
```

```js
const lodashget = require('@rizkisunaryo/lodashget')

const obj = {
    a: {
        b: [1, [2, 3, {coba: 'saja'}], 5]
    }
}
console.log(lodashget(obj, `a.b[1][2]['coba']['lagi']['terus']`, 'dasar')) // output: 'dasar'
```
npm package: @rizkisunaryo/react-image-select-resize
Description: This is a library to select and resize image
Author: Rizki Sunaryo
Latest version: 1.0.3


This is a library to select and resize image.

![ezgif-2-679c697523f6](https://user-images.githubusercontent.com/2413398/69517176-8931d480-0f86-11ea-92d7-a473a9a753f6.gif)

# Example
```js
import React, { useState } from 'react'
import ImageSelectResize from 'react-image-select-resize'

const Example = () => {
  const [originalImageUrl, setOriginalImageUrl] = useState(null)
  const [resizedImageUrl, setResizedImageUrl] = useState(null)
  return (
    <div style={{padding: 10}}>
      <ImageSelectResize
        maxWidth={200}
        onImageSelectedUrl={setOriginalImageUrl}
        onImageResizedUrl={setResizedImageUrl}
      >
        <div
          style={{
            border: 'black 1px solid',
            borderRadius: 5,
            padding: 5,
            display: 'table',
            cursor: 'pointer'
          }}
        >
          Select image
        </div>
      </ImageSelectResize>
      <div style={{marginTop: 10}}>Original image:</div>
      {originalImageUrl && <img src={originalImageUrl} style={{maxWidth: '100%'}} />}
      <div style={{marginTop: 10}}>Resized image:</div>
      {resizedImageUrl && <img src={resizedImageUrl} />}
    </div>
  )
}

export default Example

```

# Props

| Props | Description |
|-|-|
| style | Set the container style. Example: `style={{borderRadius: 5}}` |
| maxWidth | Set the maximum width. Example: `maxWidth={200}` |
| maxHeight | Set the maximum height. Example: `maxHeight={200}` |
| onImageSelected | A function with original file as the parameter. Example: `onImageSelected={originalFile => console.log(originalFile)}` |
| onImageSelectedUrl | A function with blob URL of original file as the parameter. Example: `onImageSelectedUrl={originalFileUrl => setOriginalImageUrl(originalFileUrl)}` |
| onImageResized | A function with resized file as the parameter. Example: `onImageResized={resizedFile => console.log(resizedFile)}` |
| onImageResizedUrl | A function with blob URL of resized file as the parameter. Example: `onImageResizedUrl={resizedFileUrl => setResizedImageUrl(resizedFileUrl)}` |
npm package: @rizkyhaksono/npm-beautify-log
Description: Beautified TypeScript logger for Next.js with info/debug/warn/error levels
Author: rizkyhaksono
Latest version: 1.0.1

# @rizkyhaksono/npm-beautify-log

Beautified logger untuk Next.js dengan TypeScript.

Fitur utama:
- level log: `info`, `debug`, `warn`, `error`
- output rapi dengan timestamp lokal
- warna otomatis untuk terminal yang mendukung ANSI
- aman untuk SSR dan CI (auto fallback tanpa warna)
- tanpa runtime dependency

## Install

```bash
npm install @rizkyhaksono/npm-beautify-log
```

## Quick Start

```ts
import { logger } from "@rizkyhaksono/npm-beautify-log";

logger.info("Server ready", { port: 3000 });
logger.debug("Payload", { id: 42 });
logger.warn("Cache miss");
logger.error("Query failed", new Error("DB timeout"));
```

## Custom Logger

```ts
import { createLogger } from "@rizkyhaksono/npm-beautify-log";

const appLogger = createLogger({
  env: process.env.NODE_ENV,
  timestamp: true,
  timestampLocale: "id-ID",
  timestampTimeZone: "Asia/Jakarta",
  useColors: "auto",
  prettyMeta: true,
  prefix: "[my-next-app]",
});

appLogger.info("Booting app");
```

## Opsi Konfigurasi

- `level`: level minimum log (`debug` | `info` | `warn` | `error`)
- `useColors`: `true`, `false`, atau `"auto"`
- `timestamp`: aktif/nonaktif timestamp
- `timestampLocale`: default `id-ID`
- `timestampTimeZone`: default `Asia/Jakarta`
- `env`: untuk default level (`development` => `debug`, selain itu `info`)
- `prettyMeta`: pretty print metadata JSON
- `prefix`: prefix text tambahan di awal log

## Contoh di Next.js

### App Router - Server

```ts
// app/api/health/route.ts
import { logger } from "@rizkyhaksono/npm-beautify-log";

export async function GET() {
  logger.info("Health endpoint called");
  return Response.json({ ok: true });
}
```

### Client Component

```tsx
"use client";

import { logger } from "@rizkyhaksono/npm-beautify-log";
import { useEffect } from "react";

export function ExampleClient() {
  useEffect(() => {
    logger.debug("Client mounted");
  }, []);

  return <div>Check console</div>;
}
```

## Development

```bash
npm run lint
npm run build
npm test
```

## Cara Upload ke npm Web (npmjs.com)

1. Buat akun di https://www.npmjs.com/signup dan verifikasi email.
2. Login dari terminal:

   ```bash
   npm login
   npm whoami
   ```

3. Pastikan nama package siap dipublish:

   ```bash
   npm view @rizkyhaksono/npm-beautify-log
   ```

   Jika belum ada hasil, nama masih tersedia.

4. Naikkan versi sebelum publish berikutnya:

   ```bash
   npm version patch
   ```

5. Cek isi paket yang akan diupload:

   ```bash
   npm pack --dry-run
   ```

6. Publish public package:

   ```bash
   npm publish --access public
   ```

7. Buka halaman package di npm web:

   https://www.npmjs.com/package/@rizkyhaksono/npm-beautify-log

## Rilis Update Selanjutnya

- Perbaikan bug: `npm version patch`
- Fitur baru kompatibel: `npm version minor`
- Breaking change: `npm version major`

Lalu jalankan:

```bash
git push --follow-tags
npm publish --access public
```
npm package: @rizkykurniawan/tagly
Description: Simple html tag input
Author: rizkykurniawan
Latest version: 1.0.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Tagly: Simple HTML Tag Input

This is a simple HTML tag input for your project

### Usage
To use this library, you can directly download this repository and embed minified javascript file from dist folder to your page. Please see example bellow:
```html
<!DOCTYPE html>
<html lang="en">
    <body>
        <form>
            <div id="tag-input"></div>
            <button type="submit">Submit</button>
        </form>

        <script src="path/to/tagly.min.js"/>
            // grap tag input element
            let taglyElement = document.querySelector('div#tag-input')
            // create new tag input element
            new Tagly(taglyElement)
        <script>

        </script>
    </body>
</html>
```

### Optional Configuration
When creating Tagly element, you might want to costumize the tag input. To accomplish this, you can pas optional configuration as second parameter when creating new Tagly element. Please see example bellow:
```html
<!DOCTYPE html>
<html lang="en">
    <body>
        <form>
            <div id="tag-input"></div>
            <button type="submit">Submit</button>
        </form>

        <script src="path/to/tagly.min.js"/>
            // grap tag input element
            let taglyElement = document.querySelector('div#tag-input')
            // create new tag input element
            new Tagly(taglyElement, {
                // the name of the field to be sent to the backend.
                name: 'tags',
                // tag input placeholder
                inputPlaceholder: 'Type post tags.'
            })
        <script>

        </script>
    </body>
</html>
```
npm package: @rizkymiff/commit-ai
Description: CLI untuk membuat commit message otomatis menggunakan AI
Author: Achmad Miftahul Rizqi
Latest version: 1.0.0

# Commit-AI

Commit-AI adalah alat command-line yang membantu Anda menghasilkan pesan commit otomatis berdasarkan perubahan kode Anda menggunakan model Gemini AI.

---

## Fitur Utama
- **Generate Commit Message:** Deteksi perubahan kode secara otomatis menggunakan `git diff` dan menghasilkan pesan commit.
- **Inquirer Integration:** Memberikan opsi untuk menerima, menolak, atau mengenerate ulang pesan commit langsung dari terminal.
- **Set Token:** Konfigurasi token API Gemini AI melalui CLI.

---

## Instalasi
Karena proyek ini belum terdaftar di package registry maka lakukan clone terlebih dahulu.

```bash
git clone https://github.com/rizkymiff/commit-ai.git
```

### 1. Instal Secara Global
Untuk menggunakan Commit-AI di seluruh proyek Anda:

```bash
npm install -g .
```

### 2. Instal Secara Lokal (Per-Proyek)
Untuk menggunakan Commit-AI di proyek tertentu saja:

```bash
npm install .
```

---

## Konfigurasi Token
Commit-AI memerlukan token API dari Gemini AI. Anda dapat menyetelnya dengan dua cara:

### 1. Command `set-token`
Jalankan perintah berikut:
```bash
commit-ai set-token <your-token>
```
Ini akan otomatis menyimpan token di file `.env` sebagai `GEMENI_TOKEN`.

### 2. Tambah Token Secara Manual di `.env`
Buat file `.env` di root proyek Anda jika belum ada, lalu tambahkan:
```
GEMENI_TOKEN=<your-token>
```

---

## Penggunaan

### 1. Generate Commit Message
Pastikan Anda sudah melakukan `git add` pada perubahan kode Anda. Lalu jalankan:
```bash
commit-ai generate
```

#### Output:
1. Commit-AI akan mendeteksi perubahan staged file menggunakan `git diff --cached --name-status`.
2. Pesan commit yang dihasilkan akan ditampilkan di terminal.
3. Anda akan diberi opsi:
   - **Ya**: Menggunakan pesan commit dan langsung melakukan commit.
   - **Tidak**: Membatalkan commit.
   - **Generate Ulang**: Menghasilkan pesan commit baru.

---

## Catatan
- Pastikan Anda memiliki Node.js versi 18 atau lebih baru.
- Gunakan `git` versi terbaru untuk kompatibilitas.

---

## Kontribusi
Pull request selalu diterima! Untuk perubahan besar, harap diskusikan terlebih dahulu melalui issue.

---

## Lisensi
Proyek ini dilisensikan di bawah [MIT License](LICENSE).
npm package: @rizqirakun/easy-email-editor
Description: Email editor edited by rizqirakun
Author: m-Ryan
Latest version: 4.12.7

# Easy-email-editor

## Introduction

Email render and preview container.

## usage

```sh
$ npm install --save easy-email-editor
```

or

```sh
$ yarn add easy-email-editor
```

```js
import React from "react";
import { BlockManager } from "easy-email-core";
import { EmailEditor, EmailEditorProvider } from "easy-email-editor";
import "easy-email-editor/lib/style.css";

const initialValues = {
  subject: "Welcome to Easy-email",
  subTitle: "Nice to meet you!",
  content: BlockManager.getBlockByType(BasicType.PAGE).create({}),
};

export function App() {
  return (
    <EmailEditorProvider data={initialValues} height={"calc(100vh - 72px)"}>
      {({ values }) => {
        return <EmailEditor />;
      }}
    </EmailEditorProvider>
  );
}
```

## customize

If you customize the UI yourself,maybe you need to know

- hooks

  - useActiveTab // current tab is edit or preview
  - useBlock // includes addBlock、moveBlock、removeBlock、undo, redo, etc.
    - values // current block form values 
    - change // formHelpers, assign form values ```(name: F, value?: any) => void```
    - focusBlock // IBlockData
    - setFocusBlock // set focusBlock values ```(values: IBlockData)=>void```
    - setFocusBlockValue // assign focusBlock data values ```(values: IBlockData)=>void```
    - setValueByIdx // assign form values by focusIdx ```(focusIdx:string, values: IBlockData)=>void```
    - addBlock  ```(params: {
          type: string;
          parentIdx: string;
          positionIndex?: number;
          payload?: any;
          canReplace?: boolean;
        }) => void```
    - moveBlock // ```(sourceIdx: string, destinationIdx: string) => null | undefined```
    - copyBlock // ```(idx: string) => void```
    - removeBlock // ```(idx: string) => void```
    - isExistBlock // ```(idx:string)=>boolean```
    - redo // ```() => void```
    - undo // ```() => void```
    - reset // ```() => void```
    - redoable // ```boolean```
    - undoable // ```boolean```
  - useHoverIdx // hover block related, dragging status related, dragging direction related
  - useEditorProps // get props from EmailEditorProvider
  - useEditorContext // get form state and initialized status
  - useFocusIdx // focus block related

- utils (These are some very simple methods, it is best to look at the implementation)

  - getBlockNodeByIdx
  - getBlockNodes
  - getShadowRoot
  - scrollBlockEleIntoView

- components
  - BlockAvatarWrapper // allow drag and drop to editor
npm package: @rizurin/core
Description: Core components in RizurinJS
Author: yrq110
Latest version: 0.0.2

# @rizurin/core

## Installation

```bash
yarn add @rizurin/core
```

## Usage


Supply basic objects to handle drawing contents: 

```js
import { CanvasRenderer } from '@rizurin/renderer';
import { Scene, Layer, Group } from '@rizurin/core';
...
let scene = new Scene({container, width, height})
let layer = new Layer({renderer: 'canvas'})
layer.bind(await new CanvasRenderer({canvas: layer.canvas}))
let group = new Group()
...
layer.add(group)
scene.add(layer)
...
```
npm package: @rizurin/shape
Description: Primitives for different rendering methods
Author: yrq110
Latest version: 0.0.2

# @rizurin/shape

## Installation

```bash
yarn add @rizurin/shape
```

## Usage

Create primitive objects, use this with renderer:

```js
import { Scene, Layer } from '@rizurin/core';
import { CanvasRenderer } from '@rizurin/renderer';
import { CANVAS_SHAPES } from '@rizurin/shape';
...
let layer = new Layer({renderer: 'canvas'})
layer.bind(await new CanvasRenderer({canvas: layer.canvas}))
const { Rect, Polygon } = CANVAS_SHAPES
const rect = new Rect({x: 200, y: 250, width: 80, height: 80})
rect.rotate(30 * Math.PI / 180);
layer.add(rect)
const polygon = new Polygon({points: [ 300, 10, 330, 30, 360, 120, 240, 90]});
layer.add(rect)
...
```
npm package: @rizwan-org/react-native-gymrec
Description: react native library for recommending gym excercices
Author: rizwan92
Latest version: 0.1.5

# @rizwan92/react-native-gymrec

A React Native TurboModule for AI-powered gym exercise recommendations.

## Installation

Install the package from npm:

```bash
yarn add @rizwan92/react-native-gymrec
# or
npm install @rizwan92/react-native-gymrec --save
```

Then install iOS pods:

```bash
cd ios && pod install && cd ..
```

React Native 0.60+ supports auto-linking for native modules.

## Usage

Import the module and use its async methods:

```typescript
import {
  listBodyParts,
  listGoals,
  listGenders,
  listLevels,
  listMedicalTags,
  listWeekTags,
  recommendExercises,
  type GymRecInput,
  type ExerciseRec,
} from '@rizwan92/react-native-gymrec';

async function example() {
  // Fetch available options
  const [bodyParts, genders, levels, medicalTags, weekTags, goals] =
    await Promise.all([
      listBodyParts(),
      listGenders(),
      listLevels(),
      listMedicalTags(),
      listWeekTags(),
      listGoals(),
    ]);

  // Prepare input
  const input: GymRecInput = {
    age: 30,
    gender: genders[0],
    weight: 70,
    height: 175,
    goal: goals[0],
    fitness_level: levels[0],
    medical_condition: medicalTags[0],
    week_day: weekTags[0],
    body_parts: [bodyParts[0]],
  };

  // Get recommendations
  const result = await recommendExercises(input);
  const recs: ExerciseRec[] = result.recommendations;
  console.log('Recommendations:', recs);
}
```

## Example App

A complete sample is available at:

```
packages/example/App.tsx
```

Open it to see how state is managed, UI is built and how the TurboModule is used end-to-end.

## Development

If editing the native Rust model or RN bindings:

1. Rebuild the Rust model and bundle native libraries:
   ```bash
   yarn build:model
   ```
2. Re-run pods (iOS) or Gradle (Android) if necessary.
3. Run the example app:
   ```bash
   yarn workspace example react-native run-ios   # or run-android
   ```

### Publishing

To publish a new version to npm:

1. Ensure the `version` field in `packages/react-native-gymrec/package.json` is updated.
2. From the repository root, run:
   ```bash
   yarn publish:gymrec
   ```
   This will read the version and publish under `@rizwan92` scope with that version tag.

> Make sure `NPM_TOKEN` is set in your environment or CI secrets for authentication.

## License

MIT
npm package: @rizzlesauce/inquirer-file-selector-prompt
Description: File selector interface for inquirer
Author: jmoore914
Latest version: 1.1.1-rossa.1

# Inquirer File Selector Prompt

A plugin for [Inquirer](https://github.com/SBoudrias/Inquirer.js), allowing users to navigate their file directories to select files.

[![npm](https://img.shields.io/npm/v/inquirer-file-selector-prompt.svg)](https://www.npmjs.com/package/inquirer-file-selector-prompt)
[![npm](https://img.shields.io/npm/l/inquirer-file-selector-prompt.svg)](https://github.com/jmoore914/inquirer-file-selector-prompt/blob/master/LICENSE)

![Demo](/demo.gif?raw=true)

# Installation

```
npm install --save inquirer-file-selector-prompt
```

# Usage

Register the prompt under any alias you prefer then use the prompt as you would any other inquirer prompt.

```js
inquirer.registerPrompt('file-selector', require('inquirer-file-selector-prompt'));

inquirer.prompt({
  type: 'file-selector',
  ...
})
```

# Options

Takes `type`, `name`, `message`, [`filter`, `validate`, `default`, `pageSize`, `path`, `extensions`, `selectionType`, `onlyShowMatchingExtensions`] properties.


The extra options that this plugin provides are:

* **path** 
<br> Type: string 
<br> Description: Starting directory for the prompt
<br> Default: `process.cwd()`
* **extensions** 
<br> Type: Array\<string\> 
<br> Description: Array of valid extensions to pick from
<br> Default: `[]` (any extension)
* **selectionType** 
<br> Type: string 
<br> Description: Choose whether to select a file or directory
<br>Valid options: `["file","folder","either"]`
<br>Default: `"file"`
* **onlyShowMatchingExtensions**
<br> Type: boolean
<br> Description: Select whether to hide files that do not match the specified valid extensions
<br> Default: `false`


# Example

```js
const inquirer = require('inquirer');
const fileSelector = require('./index.js');

inquirer.registerPrompt('file-tree-selection', fileSelector);

inquirer
	.prompt([
		{
			type: 'file-tree-selection',
			name: 'file',
			message: 'choose a file',
			extensions: ['js']
		}
	])
	.then(answers => {
		console.log(JSON.stringify(answers));
	});
```

# License

This project is under the MIT license.
npm package: @rizzlesauce/oclif-command
Description: oclif base command
Author: Jeff Dickey @jdxcode
Latest version: 1.5.20-rossa.8

@oclif/command
===============

oclif base command

[![Version](https://img.shields.io/npm/v/@oclif/command.svg)](https://npmjs.org/package/@oclif/command)
[![CircleCI](https://circleci.com/gh/oclif/command/tree/master.svg?style=shield)](https://circleci.com/gh/oclif/command/tree/master)
[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/command?branch=master&svg=true)](https://ci.appveyor.com/project/heroku/command/branch/master)
[![Codecov](https://codecov.io/gh/oclif/command/branch/master/graph/badge.svg)](https://codecov.io/gh/oclif/command)
[![Known Vulnerabilities](https://snyk.io/test/npm/@oclif/command/badge.svg)](https://snyk.io/test/npm/@oclif/command)
[![Downloads/week](https://img.shields.io/npm/dw/@oclif/command.svg)](https://npmjs.org/package/@oclif/command)
[![License](https://img.shields.io/npm/l/@oclif/command.svg)](https://github.com/oclif/command/blob/master/package.json)

This is about half of the main codebase for oclif. The other half lives in [@oclif/config](https://github.com/oclif/config). This can be used directly, but it probably makes more sense to build your CLI with the [generator](https://github.com/oclif/oclif).

Usage
=====

Without the generator, you can create a simple CLI like this:

**TypeScript**
```js
#!/usr/bin/env ts-node

import * as fs from 'fs'
import {Command, flags} from '@oclif/command'

class LS extends Command {
  static flags = {
    version: flags.version(),
    help: flags.help(),
    // run with --dir= or -d=
    dir: flags.string({
      char: 'd',
      default: process.cwd(),
    }),
  }

  async run() {
    const {flags} = this.parse(LS)
    let files = fs.readdirSync(flags.dir)
    for (let f of files) {
      this.log(f)
    }
  }
}

LS.run()
.catch(require('@oclif/errors/handle'))
```

**JavaScript**
```js
#!/usr/bin/env node

const fs = require('fs')
const {Command, flags} = require('@oclif/command')

class LS extends Command {
  async run() {
    const {flags} = this.parse(LS)
    let files = fs.readdirSync(flags.dir)
    for (let f of files) {
      this.log(f)
    }
  }
}

LS.flags = {
  version: flags.version(),
  help: flags.help(),
  // run with --dir= or -d=
  dir: flags.string({
    char: 'd',
    default: process.cwd(),
  }),
}

LS.run()
.catch(require('@oclif/errors/handle'))
```

Then run either of these with:

```sh-session
$ ./myscript
...files in current dir...
$ ./myscript --dir foobar
...files in ./foobar...
$ ./myscript --version
myscript/0.0.0 darwin-x64 node-v9.5.0
$ ./myscript --help
USAGE
  $ @oclif/command

OPTIONS
  -d, --dir=dir  [default: /Users/jdickey/src/github.com/oclif/command]
  --help         show CLI help
  --version      show CLI version
```

See the [generator](https://github.com/oclif/oclif) for all the options you can pass to the command.
npm package: @rizzlesauce/oclif-config
Description: base config object and standard interfaces for oclif components
Author: Jeff Dickey @jdxcode
Latest version: 1.13.4-rossa.4

@oclif/config
==============

base config object and standard interfaces for oclif components

[![Version](https://img.shields.io/npm/v/@oclif/config.svg)](https://npmjs.org/package/@oclif/config)
[![CircleCI](https://circleci.com/gh/oclif/config/tree/master.svg?style=svg)](https://circleci.com/gh/oclif/config/tree/master)
[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/config?branch=master&svg=true)](https://ci.appveyor.com/project/heroku/config/branch/master)
[![Codecov](https://codecov.io/gh/oclif/config/branch/master/graph/badge.svg)](https://codecov.io/gh/oclif/config)
[![Known Vulnerabilities](https://snyk.io/test/npm/@oclif/config/badge.svg)](https://snyk.io/test/npm/@oclif/config)
[![Downloads/week](https://img.shields.io/npm/dw/@oclif/config.svg)](https://npmjs.org/package/@oclif/config)
[![License](https://img.shields.io/npm/l/@oclif/config.svg)](https://github.com/oclif/config/blob/master/package.json)
npm package: @rizzlesauce/oclif-errors
Description: display friendly CLI errors and log to error log
Author: Jeff Dickey @jdxcode
Latest version: 1.2.3-beta.1

@oclif/errors
==============

display friendly CLI errors and log to error log

[![Version](https://img.shields.io/npm/v/@oclif/errors.svg)](https://npmjs.org/package/@oclif/errors)
[![CircleCI](https://circleci.com/gh/oclif/errors/tree/master.svg?style=svg)](https://circleci.com/gh/oclif/errors/tree/master)
[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/errors?branch=master&svg=true)](https://ci.appveyor.com/project/heroku/errors/branch/master)
[![Codecov](https://codecov.io/gh/oclif/errors/branch/master/graph/badge.svg)](https://codecov.io/gh/oclif/errors)
[![Known Vulnerabilities](https://snyk.io/test/npm/@oclif/errors/badge.svg)](https://snyk.io/test/npm/@oclif/errors)
[![Downloads/week](https://img.shields.io/npm/dw/@oclif/errors.svg)](https://npmjs.org/package/@oclif/errors)
[![License](https://img.shields.io/npm/l/@oclif/errors.svg)](https://github.com/oclif/errors/blob/master/package.json)
npm package: @rizzlesauce/oclif-parser
Description: arg and flag parser for oclif
Author: Jeff Dickey @jdxcode
Latest version: 3.8.5-rossa.1

@oclif/parser
=============

arg and flag parser for oclif

[![Version](https://img.shields.io/npm/v/@oclif/parser.svg)](https://npmjs.org/package/@oclif/parser)
[![CircleCI](https://circleci.com/gh/oclif/parser/tree/master.svg?style=svg)](https://circleci.com/gh/oclif/parser/tree/master)
[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/parser?branch=master&svg=true)](https://ci.appveyor.com/project/heroku/parser/branch/master)
[![Codecov](https://codecov.io/gh/oclif/parser/branch/master/graph/badge.svg)](https://codecov.io/gh/oclif/parser)
[![Known Vulnerabilities](https://snyk.io/test/npm/@oclif/parser/badge.svg)](https://snyk.io/test/npm/@oclif/parser)
[![Downloads/week](https://img.shields.io/npm/dw/@oclif/parser.svg)](https://npmjs.org/package/@oclif/parser)
[![License](https://img.shields.io/npm/l/@oclif/parser.svg)](https://github.com/oclif/parser/blob/master/package.json)

CLI flag parser.

Usage:

```js
const CLI = require('cli-flags')

const {flags, args} = CLI.parse({
  flags: {
    'output-file': CLI.flags.string({char: 'o'}),
    force: CLI.flags.boolean({char: 'f'})
  },
  args: [
    {name: 'input', required: true}
  ]
})

if (flags.force) {
  console.log('--force was set')
}

if (flags['output-file']) {
  console.log(`output file is: ${flags['output-file']}`)
}

console.log(`input arg: ${args.input}`)

// $ node example.js -f myinput --output-file=myexample.txt
// --force was set
// output file is: myexample.txt
// input arg: myinput
```
npm package: @rizzlesauce/oclif-plugin-autocomplete
Description: autocomplete plugin for oclif
Author: Philipe Navarro @RasPhilCo
Latest version: 0.1.6-rossa.1

@oclif/plugin-autocomplete
==========================

autocomplete plugin for oclif (bash & zsh)

[![Version](https://img.shields.io/npm/v/@oclif/plugin-autocomplete.svg)](https://npmjs.org/package/@oclif/plugin-autocomplete)
[![CircleCI](https://circleci.com/gh/oclif/plugin-autocomplete/tree/master.svg?style=shield)](https://circleci.com/gh/oclif/plugin-autocomplete/tree/master)
[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/plugin-autocomplete?branch=master&svg=true)](https://ci.appveyor.com/project/oclif/plugin-autocomplete/branch/master)
[![Codecov](https://codecov.io/gh/oclif/plugin-autocomplete/branch/master/graph/badge.svg)](https://codecov.io/gh/oclif/plugin-autocomplete)
[![Downloads/week](https://img.shields.io/npm/dw/@oclif/plugin-autocomplete.svg)](https://npmjs.org/package/@oclif/plugin-autocomplete)
[![License](https://img.shields.io/npm/l/@oclif/plugin-autocomplete.svg)](https://github.com/oclif/plugin-autocomplete/blob/master/package.json)

<!-- toc -->
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->
# Usage
See https://oclif.io/docs/plugins.html
# Commands
<!-- commands -->
* [`oclif-example _autocomplete [SHELL]`](#oclif-example-_autocomplete-shell)

## `oclif-example _autocomplete [SHELL]`

display autocomplete installation instructions

```
USAGE
  $ oclif-example _autocomplete [SHELL]

ARGUMENTS
  SHELL  shell type

OPTIONS
  -r, --refresh-cache  Refresh cache (ignores displaying instructions)

EXAMPLES
  $ oclif-example _autocomplete
  $ oclif-example _autocomplete bash
  $ oclif-example _autocomplete zsh
  $ oclif-example _autocomplete --refresh-cache
```

_See code: [src/commands/_autocomplete/index.ts](https://github.com/rizzlesauce/oclif-plugin-autocomplete/blob/v0.1.6-rossa.1/src/commands/_autocomplete/index.ts)_
<!-- commandsstop -->
npm package: @rizzlesauce/oclif-plugin-help
Description: standard help for oclif
Author: Jeff Dickey @jdxcode
Latest version: 2.2.4-rossa.2

@oclif/plugin-help
===================

standard help for oclif

[![Version](https://img.shields.io/npm/v/@oclif/plugin-help.svg)](https://npmjs.org/package/@oclif/plugin-help)
[![CircleCI](https://circleci.com/gh/oclif/plugin-help/tree/master.svg?style=svg)](https://circleci.com/gh/oclif/plugin-help/tree/master)
[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/plugin-help?branch=master&svg=true)](https://ci.appveyor.com/project/heroku/plugin-help/branch/master)
[![Codecov](https://codecov.io/gh/oclif/plugin-help/branch/master/graph/badge.svg)](https://codecov.io/gh/oclif/plugin-help)
[![Known Vulnerabilities](https://snyk.io/test/npm/@oclif/plugin-help/badge.svg)](https://snyk.io/test/npm/@oclif/plugin-help)
[![Downloads/week](https://img.shields.io/npm/dw/@oclif/plugin-help.svg)](https://npmjs.org/package/@oclif/plugin-help)
[![License](https://img.shields.io/npm/l/@oclif/plugin-help.svg)](https://github.com/oclif/plugin-help/blob/master/package.json)
npm package: @rizzzse/bimap
Description: A simple and tiny bi-directional map that extends ES2015's Map.
Author: rizzzse
Latest version: 1.2.1

# bimap

A simple and tiny bi-directional map that extends ES2015's Map.
BiMap can be operated with the same interface as Map, and you can get an inverted BiMap with `inverse`.

```ts
// cjs
const { BiMap, WeakBiMap } = require("@rizzzse/bimap");
// esm
import { BiMap, WeakBiMap } from "@rizzzse/bimap";

const bimap = new BiMap([["key", "value"]]);
bimap.get("key");           // === "value"
bimap.inverse.get("value"); // === "key"

bimap.set("key2", "value");
bimap.has("key");           // === false
bimap.get("key2");          // === "value"
bimap.inverse.get("value"); // === "key2"
```

```ts
class MyBiMap<K, V> extends BiMap<K, V> {
    declare readonly inverse: MyBiMap<V, K>;
    myMethod() {
        // ...
    }
}
```
npm package: @rizzzse/datetime
Description: [![CI](https://github.com/rizzzse/datetime.js/actions/workflows/ci.yml/badge.svg)](https://github.com/rizzzse/datetime.js/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/rizzzse/datetime.js/branch/main/graph/badge.svg?token=N5VTZ5QWCB)](https:
Author: rizzzse
Latest version: 0.3.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# datetime.js

[![CI](https://github.com/rizzzse/datetime.js/actions/workflows/ci.yml/badge.svg)](https://github.com/rizzzse/datetime.js/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/rizzzse/datetime.js/branch/main/graph/badge.svg?token=N5VTZ5QWCB)](https://codecov.io/gh/rizzzse/datetime.js)
[![npm version](https://img.shields.io/npm/v/@rizzzse/datetime/latest?logo=npm)](https://www.npmjs.com/package/@rizzzse/datetime)
[![package size](https://img.shields.io/bundlephobia/min/@rizzzse/datetime)](https://bundlephobia.com/package/@rizzzse/datetime)

```ts
// cjs
const { DateTime } = require("@rizzzse/datetime");
// esm
import { DateTime } from "@rizzzse/datetime";
```

```html
<script src="https://unpkg.com/@rizzzse/datetime@0.3"></script>
<script>
    rdt.DateTime;
</script>
```