open-index/open-npm huggingface dataset:
npm package: @furkanalptokac/use-form
Description: A form hook that manages your form's states, changes, errors. (All you need.)
Author: Furkan Alp Tokac
Latest version: 0.0.4

# @furkanalptokac/use-form

A form hook that manages your form's states, changes, errors. (All you need.)

## Installation

You can use Yarn

```
yarn add @furkanalptokac/use-form
```

or npm

```
npm install @furkanalptokac/use-form
```

## Usage

Here's a sample implementation.

```ts
import React from 'react';
import { useForm } from '@furkanalptokac/use-form';

type FormType = {
  title: string;
  description: string;
}

const validationRules = {
  title: (value: string) => {
    if (value === undefined) {
      return 'Enter a title';
    }
    if (value.length < 2) {
      return 'Value length must greater than 1';
    }
    return '';
  },
  description: (value: string) => {
    if (value === undefined) {
      return 'Enter a description';
    }
    if (value.length < 2) {
      return 'Description length must greater than 1';
    }
    return '';
  }
}

const App: React.FC = () => {
  const initialState = {
    title: '',
    description: '',
  };

  const { values, errors, handleChange, handleSubmit } = useForm<FormType>(
    initialState,
    validationRules,
  );

  const createPost = () => {
    console.log('Post created with', values);
  }

  return (
    <>
      <form onSubmit={handleSubmit(createPost)}>
        <div>
          <div>
            <label htmlFor='title'>
              Title
            </label>
            <input
              id='title'
              name='title'
              type='text'
              placeholder='Title'
              onChange={handleChange}
            ></input>
            {errors.title && <span>{errors.title}</span>}
          </div>
          <label htmlFor='description'>
            Description
          </label>
          <input
            id='description'
            name='description'
            type='text'
            placeholder='Description'
            onChange={handleChange}
          ></input>
          {errors.description && <span>{errors.description}</span>}
        </div>
        <button type='submit'>
          Post
        </button>
      </form>
    </>
  );
}

export default App;
```

## License

[MIT](LICENSE).
npm package: @furkankoykiran/telegram-wallet-p2p
Description: Unofficial Node.js/TypeScript SDK for the Telegram Wallet P2P API
Author: Furkan Köykıran
Latest version: 1.0.1

# Telegram Wallet P2P SDK — Node.js / TypeScript

> ⚠️ **Unofficial SDK** — This project is not affiliated with, endorsed by, or related to Telegram or Wallet.

A fully typed TypeScript SDK for the [Telegram Wallet P2P API](https://docs.wallet.tg/p2p).

## Features

- 🔷 **TypeScript-first** — Full type safety with strict mode
- 🌐 **Zero dependencies** — Uses native `fetch` (Node.js 18+)
- 🔁 **Auto-retry** — Exponential backoff on rate limits and server errors
- 📊 **Analytics** — Built-in utilities for price analysis and filtering
- 🔑 **Safe auth** — API key passed via constructor, never logged

## Installation

```bash
npm install @furkankoykiran/telegram-wallet-p2p
```

## Quick Start

```typescript
import { WalletP2PClient, TradeSide } from "@furkankoykiran/telegram-wallet-p2p";

const client = new WalletP2PClient({
  apiKey: process.env.WALLET_P2P_API_KEY!,
});

const response = await client.getOnlineItems({
  cryptoCurrency: "USDT",
  fiatCurrency: "RUB",
  side: TradeSide.SELL,
});

for (const item of response.data) {
  console.log(`${item.nickname}: ${item.price} ${item.fiatCurrency}`);
}
```

## Analytics

```typescript
import { bestPrice, priceSpread, marketSummary, TradeSide } from "@furkankoykiran/telegram-wallet-p2p";

// Find the best sell price
const best = bestPrice(response.data, TradeSide.SELL);

// Get price statistics
const spread = priceSpread(response.data);
// => { min: "95.0000", max: "102.5000", avg: "98.7500", ... }

// Full market summary
const summary = marketSummary(response.data);
```

## API Reference

### `new WalletP2PClient(options)`

| Option | Type | Default | Description |
|---|---|---|---|
| `apiKey` | `string` | required | Your Wallet P2P API key |
| `baseUrl` | `string` | `https://p2p.walletbot.me` | API base URL |
| `timeout` | `number` | `30000` | Request timeout in ms |
| `maxRetries` | `number` | `3` | Retry attempts on 429/5xx |
| `retryBaseDelay` | `number` | `1000` | Base delay in ms for exponential backoff |

### `client.getOnlineItems(params)`

Fetches active P2P ads. Returns `Promise<GetOnlineItemsResponse>`.

## Error Handling

```typescript
import {
  BadRequestError,       // 400 — unsupported currency
  AuthenticationError,   // 401 — invalid API key
  AccessDeniedError,     // 403 — access denied
  RateLimitError,        // 429 — rate limit exceeded
  ServerError,           // 5xx — server error
} from "@furkankoykiran/telegram-wallet-p2p";
```

## License

MIT
npm package: @furkankoykiran/telegram-wallet-p2p-mcp
Description: Unofficial MCP server for Telegram Wallet P2P market data analytics
Author: Furkan Köykıran
Latest version: 1.0.1

# Telegram Wallet P2P MCP Server

> ⚠️ **Unofficial** — This project is not affiliated with, endorsed by, or related to Telegram or Wallet.

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server providing read-only tools for Telegram Wallet P2P market data analytics.

## Tools

| Tool | Description |
|---|---|
| `get_p2p_ads` | Fetch active P2P ads filtered by crypto/fiat/side |
| `get_market_summary` | Aggregated analytics: price stats, payment methods, merchant distribution |
| `get_best_price` | Find the best available buy/sell price |

All tools return structured JSON suitable for AI consumption.

## Setup

### Prerequisites

- Node.js 18+
- A Wallet P2P API key ([how to get one](https://help.wallet.tg/article/934-p2p-api))

### Installation

```bash
npm install -g @furkankoykiran/telegram-wallet-p2p-mcp
```

Or build from source:

```bash
cd packages/mcp
npm install
npm run build
```

### Configuration

Set your API key as an environment variable:

```bash
export WALLET_P2P_API_KEY=your-api-key
```

### Usage with Claude Desktop

Add to your Claude Desktop configuration (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "telegram-wallet-p2p": {
      "command": "npx",
      "args": ["@furkankoykiran/telegram-wallet-p2p-mcp"],
      "env": {
        "WALLET_P2P_API_KEY": "your-api-key"
      }
    }
  }
}
```

### Usage with VS Code

Add to your VS Code settings (`.vscode/mcp.json`):

```json
{
  "servers": {
    "telegram-wallet-p2p": {
      "command": "npx",
      "args": ["@furkankoykiran/telegram-wallet-p2p-mcp"],
      "env": {
        "WALLET_P2P_API_KEY": "your-api-key"
      }
    }
  }
}
```

## Example Prompts

Once connected, you can ask your AI assistant:

- *"What's the current best price for selling USDT in RUB?"*
- *"Show me a market summary for BTC/USD buy ads"*
- *"List all USDT/RUB sell ads that accept Tinkoff"*

## License

MIT
npm package: @furkansuren/mobilescreen
Description: MobileScreen CLI for generating & uploading screenshots to App Store Connect.
Author: Furkan Suren
Latest version: 0.1.1
Deprecated: Use @mobilescreen/cli instead

# MobileScreen CLI

Command-line tool for [MobileScreen](https://mobilescreen.co) — generate App Store and Play Store screenshots from your raw device screenshots.

## Requirements

- **Node.js** 18 or later

## Installation

```bash
npm install -g @furkansuren/mobilescreen
```

Or run with `npx` without installing:

```bash
npx @furkansuren/mobilescreen <command>
```

Either way, the command name is **`mobilescreen`**.

## Commands

### `mobilescreen login`

Authenticate with your MobileScreen account. Opens your browser to sign in; the CLI stores your session locally.

```bash
mobilescreen login
```

- If you're already logged in, you'll be told to run `logout` first to switch accounts.
- Credentials are stored in `~/.mobilescreen/config.json`.

---

### `mobilescreen logout`

Clear your stored credentials and sign out.

```bash
mobilescreen logout
```

---

### `mobilescreen whoami`

Print the currently logged-in user (name and email).

```bash
mobilescreen whoami
```

---

### `mobilescreen init`

Set up MobileScreen in the current directory. Use this inside your app project.

1. **Login** — If you're not logged in, you'll be prompted to run the login flow.
2. **Project** — You'll choose one of your MobileScreen projects (created at [mobilescreen.co](https://mobilescreen.co)).
3. **Folders** — The CLI creates this structure for your raw screenshots:

   ```
   screenshots/
   ├── ios/
   │   ├── iPhone/
   │   └── iPad/
   └── android/
       ├── phone/
       └── tablet/
   ```

```bash
mobilescreen init
```

Place your raw screenshots in the right device folders, then use the MobileScreen web app to generate and upload to App Store Connect / Google Play.

## Typical workflow

1. **Sign in**

   ```bash
   mobilescreen login
   ```

2. **Create a project** at [mobilescreen.co](https://mobilescreen.co) if you don’t have one.

3. **Initialize** in your app repo

   ```bash
   cd /path/to/your-app
   mobilescreen init
   ```

4. **Add screenshots** into `screenshots/ios/` and `screenshots/android/` as needed.

5. **Generate & upload** via the MobileScreen dashboard.

## License

MIT
npm package: @furkanugurlu/react-native-alphabet-flat-list
Description: 使用FlatList制作的react-native字母选择列表
Latest version: 1.3.2

<p align="center" >
   <a href="https://github.com/yoonzm/react-native-alphabet-flat-list">
    <img alt="react-native-alphabet-flat-list" src="https://github.com/yoonzm/react-native-alphabet-flat-list/blob/master/screenshot/image1.gif" width="260" height="510" />
    <img alt="react-native-alphabet-flat-list" src="https://github.com/yoonzm/react-native-alphabet-flat-list/blob/master/screenshot/image2.gif" width="260" height="510" />
 </a>
</p>

<h3 align="center">
   Alphabet FlatList
</h3>

## Installation

- Using [npm](https://www.npmjs.com/#getting-started): `npm install @yoonzm/react-native-alphabet-flat-list --save`
- Using [Yarn](https://yarnpkg.com/): `yarn add @yoonzm/react-native-alphabet-flat-list`

## Example
```jsx
import React, {Fragment} from 'react';
import {StatusBar, Text, View} from 'react-native';
import AlphabetFlatList from "react-native-alphabet-flat-list";
import ContactItem, {CONTACT_ITEM_HEIGHT, IContact} from "./ContactItem";

...

const HEADER_HEIGHT = 50;

const App = () => {
  return (
    <Fragment>
      <StatusBar barStyle="dark-content"/>
      <AlphabetFlatList<IContact>
        data={data}
        itemHeight={CONTACT_ITEM_HEIGHT}
        headerHeight={HEADER_HEIGHT}
        renderItem={ContactItem}
        ListHeaderComponent={(
          <View style={{
            height: HEADER_HEIGHT,
            justifyContent: 'center',
            alignItems: 'center'
          }}>
            <Text>ListHeaderComponent</Text>
          </View>
        )}
      />
    </Fragment>
  );
};

```
[Detail](./example/App.tsx)

## Props
- **`data`**_(Object)_ [isRequire] - listData to display
- **`itemHeight`**_(Number)_ [isRequire] - itemComponent height
- **`renderItem`**_(Function)_ [isRequire] - itemComponent render
- **`sectionHeaderHeight`**_(Number)_ - sectionHeader height; default is 25
- **`renderSectionHeader`**_(Function)_ - sectionHeader
- **`ListHeaderComponent`**_(Function)_ - ListHeader
- **`alphabetToast`**_(Boolean)_ - click on the letter to prompt

## Download

| 类型          | 二维码                                      |
| ----------- | ---------------------------------------- |
| **Apk二维码**  | ![](https://github.com/yoonzm/react-native-alphabet-flat-list/blob/master/download.png) |
| **IOS暂无下载** |  |

## License

- [MIT](LICENSE)
npm package: @furkot/address
Description: Furkot address normalizer.
Author: Natalia Kowalczyk
Latest version: 1.0.1

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# address

Furkot address normalizer.

## Install

```sh
$ npm install --save @furkot/address
```

## Usage

```js
const {
  normalize,
  stringify,
  parse,
  prettify
} = require('@furkot/address');

normalize('123 Main St, Los Angeles, California'); // => '123 Main St,Los Angeles,CA,US'

stringify({
  house: 123,
  street: 'Main St',
  city: 'Los Angeles',
  province: 'California',
  country: 'USA'
}); // => '123 Main St,Los Angeles,CA,US'

parse('123 Main St,Los Angeles,CA,US'); // =>
// { house: 123,
//   street: 'Main St',
//   city: 'Los Angeles',
//   province: 'CA',
//   country: 'USA'
// }; 

prettify(',Los Angeles,CA,US'); // => 'Los Angeles, CA'
prettify('123 Main St,Toronto,ON,CA'); // => '123 Main St, Toronto, ON, Canada'
prettify('1 Via Toselli,Taranto,Taranto,IT'); // => '1 Via Toselli, Taranto, Italy
```

## License

MIT © [Natalia Kowalczyk](https://melitele.me)

[npm-image]: https://img.shields.io/npm/v/@furkot/address
[npm-url]: https://npmjs.org/package/@furkot/address

[build-url]: https://github.com/furkot/address/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/address/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/address
[deps-url]: https://libraries.io/npm/@furkot%2Faddress
npm package: @furkot/directions
Description: Directions service for Furkot
Author: Damian Krzeminski
Latest version: 3.0.1

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# furkot-directions

Directions service for Furkot

## Install

```sh
$ npm install --save furkot-directions
```

## Usage

```js
import furkotDirections from 'furkot-directions';

furkotDirections('Rainbow');
```

## License

MIT © [Damian Krzeminski](https://pirxpilot.me)

[npm-image]: https://img.shields.io/npm/v/@furkot/directions
[npm-url]: https://npmjs.org/package/@furkot/directions

[build-url]: https://github.com/furkot/directions/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/directions/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/directions
[deps-url]: https://libraries.io/npm/@furkot%2Fdirections
npm package: @furkot/elevation
Description: Elevation service for Furkot
Author: Damian Krzeminski
Latest version: 3.0.0

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/elevation

Elevation service for Furkot

## Install

```sh
$ npm install --save @furkot/elevation
```

## Usage

```js
const furkotElevation = require('@furkot/elevation');

const elevation = furkotElevation(options);

const points = [
  [ lon, lat ] ,
  // ...
];

const result = await elevation(points);
// result is an Array of elevations in meters
// elevation Array items corresponds to the items in points array 
assert.equal(result.length, points.length);
```

## License

MIT © [Damian Krzeminski](https://pirxpilot.me)

[npm-image]: https://img.shields.io/npm/v/@furkot/elevation
[npm-url]: https://npmjs.org/package/@furkot/elevation

[build-url]: https://github.com/furkot/elevation/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/elevation/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/elevation
[deps-url]: https://libraries.io/npm/@furkot%2Felevation
npm package: @furkot/export-copilot
Description: Generate CoPilot .TRP files from Furkot trip data.
Author: Natalia Kowalczyk
Latest version: 3.0.0

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-copilot

Generate CoPilot .TRP files from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-copilot
```

## Usage

```js
var furkotCopilot = require('@furkot/export-copilot');

furkotCopilot(trip);
```

## License

MIT © [code42day](https://code42day.com)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-copilot
[npm-url]: https://npmjs.org/package/@furkot/export-copilot

[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-copilot/check.yaml?branch=main
[build-url]: https://github.com/furkot/export-copilot/actions/workflows/check.yaml

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-copilot
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-copilot
npm package: @furkot/export-driving-log
Description: Generate CSV driving log from Furkot trip data.
Author: Damian Krzeminski
Latest version: 4.1.1

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-driving-log

Generate CSV driving log from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-driving-log
```

## Usage

```js
import drivingLog from '@furkot/export-driving-log';

drivingLog(trip);
```

## License

MIT © [code42day](https://code42day.com)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-driving-log
[npm-url]: https://npmjs.org/package/@furkot/export-driving-log

[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-driving-log/check.yaml?branch=main
[build-url]: https://github.com/furkot/export-driving-log/actions/workflows/check.yaml

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-driving-log
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-driving-log
npm package: @furkot/export-expense-report
Description: Generate CSV expense report from Furkot trip data.
Author: Natalia Kowalczyk
Latest version: 1.0.2

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# expense-report

Generate CSV expense report from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-expense-report
```

## Usage

```js
import expenseReport from '@furkot/export-expense-report';

expenseReport(trip);
```

## License

MIT © [Natalia Kowalczyk](https://melitele.me)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-expense-report
[npm-url]: https://npmjs.org/package/@furkot/export-expense-report

[build-url]: https://github.com/furkot/export-expense-report/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-expense-report/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-expense-report
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-expense-report
npm package: @furkot/export-gpx
Description: Generate GPX files from Furkot trip data.
Author: Damian Krzeminski
Latest version: 6.0.0

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-gpx

Generate GPX files from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-gpx
```

## Usage

```js
import furkotGpx from '@furkot/export-gpx';
furkotGpx(tripData);
```

## License

MIT © [code42day](https://code42day.com)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-gpx
[npm-url]: https://npmjs.org/package/@furkot/export-gpx

[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-gpx/check.yaml?branch=main
[build-url]: https://github.com/furkot/export-gpx/actions/workflows/check.yaml

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-gpx
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-gpx
npm package: @furkot/export-ical
Description: Generate iCalendar file from Furkot trip data.
Author: Damian Krzeminski
Latest version: 3.0.1

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-ical

Generate iCalendar file from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-ical
```

## Usage

```js
import ical from '@furkot/export-ical';

ical(trip);
```

## License

MIT © [code42day](https://code42day.com)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-ical
[npm-url]: https://npmjs.org/package/@furkot/export-ical

[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-ical/check.yaml?branch=main
[build-url]: https://github.com/furkot/export-ical/actions/workflows/check.yaml

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-ical
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-ical
npm package: @furkot/export-kml
Description: Generate KML file from Furkot trip data.
Author: Damian Krzeminski
Latest version: 5.0.0

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-kml

Generate KML file from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-kml
```

## Usage

```js
const exportKml = require('@furkot/export-kml');

// data is a generator/iterable
const data = kml(trip); 
```

## License

MIT © [code42day](https://code42day.com)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-kml
[npm-url]: https://npmjs.org/package/@furkot/export-kml

[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-kml/check.yaml?branch=main
[build-url]: https://github.com/furkot/export-kml/actions/workflows/check.yaml

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-kml
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-kml
npm package: @furkot/export-tomtom-ov2
Description: Generate TomTom OV2 files from Furkot trip data.
Author: Damian Krzeminski
Latest version: 3.0.0

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-tomtom-ov2

Generate TomTom OV2 files from [Furkot] trip data.

## Install

```sh
$ npm install --save @furkot/export-tomtom-ov2
```

## Usage

```js
import ov2 from '@furkot/export-tomtom-ov2';

for(const buffer of ov2(trip)) {
  // buffer is ArrayBuffer to be streamed/processed
}
```

## License

MIT © [code42day](https://code42day.com)

[Furkot]: https://trips.furkot.com

[npm-image]: https://img.shields.io/npm/v/@furkot/export-tomtom-ov2
[npm-url]: https://npmjs.org/package/@furkot/export-tomtom-ov2

[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-tomtom-ov2/check.yaml?branch=main
[build-url]: https://github.com/furkot/export-tomtom-ov2/actions/workflows/check.yaml

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-tomtom-ov2
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-tomtom-ov2
npm package: @furkot/export-zip
Description: Composite exporter that solves problem of downloading/exporting multiple files.
Author: Damian Krzeminski
Latest version: 1.0.1

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/export-zip

Composite exporter that solves problem of downloading/exporting multiple files.

## Install

```sh
$ npm install --save @furkot/export-zip
```

## Usage

```js
import exportZip from '@furkot/export-zip';

const buffers = exportZip([
  { name: 'day-1', bytes: day1 },
  { name: 'day-2', bytes: day2 }
]);

// buffers is now a generator/iterator producing store-only zip file
const zip = new Blob(Array.from(buffers));

```

## License

MIT © [Damian Krzeminski](https://pirxpilot.me)

[npm-image]: https://img.shields.io/npm/v/@furkot/export-zip
[npm-url]: https://npmjs.org/package/@furkot/export-zip

[build-url]: https://github.com/furkot/export-zip/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/export-zip/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/export-zip
[deps-url]: https://libraries.io/npm/@furkot%2Fexport-zip
npm package: @furkot/galileo-data
Description: Data used by Furkot modules dealing with Galileo GPX format.
Author: Natalia Kowalczyk
Latest version: 1.0.2

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/galileo-data

Data used by Furkot modules dealing with GPX files with data specific to [Galileo] offline maps and navigation app.

## Install

```sh
$ npm install --save @furkot/galileo-data
```

## Usage

```js
var furkotGalileoData = require('@furkot/galileo-data');

furkotGalileoData('Rainbow');
```

## License

MIT © [Natalia Kowalczyk](https://melitele.me)

[npm-image]: https://img.shields.io/npm/v/@furkot/galileo-data
[npm-url]: https://npmjs.org/package/@furkot/galileo-data

[build-url]: https://github.com/furkot/galileo-data/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/workflow/status/furkot/galileo-data/check

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/galileo-data
[deps-url]: https://libraries.io/npm/@furkot%2Fgalileo-data

[Galileo]: https://galileo-app.com/
npm package: @furkot/garmin-data
Description: Data used by Furkot modules dealing with Garmin GPX format.
Author: Damian Krzeminski
Latest version: 3.0.1

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/garmin-data

Data used by [Furkot] modules dealing with Garmin GPX format.

## Install

```sh
$ npm install --save @furkot/garmin-data
```

## Usage

Furkot pin symbols are characters in [furkot-icon-font] - see [here][furkot-icon-font-demo].

```js
import data from '@furkot/garmin-data';

console.log(data.toFurkot['Church']);  // === 34
console.log(data.toGarmin['34']);      // === 'Church'

```

## License

MIT © [Damian Krzeminski](https://code42day.com)

[Furkot]: https://furkot.com
[furkot-icon-font]: https://github.com/furkot/icon-fonts
[furkot-icon-font-demo]: https://furkot.github.io/icon-fonts/build/furkot.html

[npm-image]: https://img.shields.io/npm/v/@furkot/garmin-data
[npm-url]: https://npmjs.org/package/@furkot/garmin-data

[build-url]: https://github.com/furkot/garmin-data/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/garmin-data/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/garmin-data
[deps-url]: https://libraries.io/npm/@furkot%2Fgarmin-data
npm package: @furkot/geocode
Description: Geocoding service for Furkot
Author: Natalia Kowalczyk
Latest version: 4.0.0

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]
[![Dependency Status][deps-image]][deps-url]

# @furkot/geocode

Geocoding service for Furkot

## Install

```sh
$ npm install --save @furkot/geocode
```

## Usage

````js
import furkotGeocode from '@furkot/geocode';

const options = {}; // options activating geocoding services

const geocode = furkotGeocode(options);

const query = {}; // geocoding query

const { places } = await geocode(query)
// process result
````

### Configuration options

Geocoding component expects a configuration options object with following fields:

- `max` - maximum number of places to return
- `order` - list of names of geocoding services in the order they will be tried
- `XXX_key` - API key for service `XXX` (if service `XXX` requires a key)
- `XXX_enable` - function that takes query and returns `true` when service `XXX` is expected to handle that query; if the function is absent, the service `XXX` won't be used even if listed in the `order`
- `XXX_parameters` - object with additional parameters specific to service `XXX`

### Query parameters

Common parameters:

- `max` - maximum number of places to return (overrides configuration option)
- `lang` - language code, defaults to `en`

Reverse geocoding:

- `ll` - array of coordinates `[ longitude, latitude ]`

Forward geocoding:

- `address` - string representing an address
- `place` - string representing place name; either `addess` or `place` is expected
- `partial` - a boolean flag set when geocoding is done as part of autocomplete
- `bounds` - a hint to the region place resides in as array of south west and north east `[[SW longitude, SW latitude], [NE longitude, NE latitude]]`

### Results format

If successful, geocoding service will return object with field `places` - an array of objects, each describing one place with following fields (not all fields are always set):

- `place` - place name (may be absent if address doesn't correspond to a named place)
- `type` - place type
- `address` - formated address
- `normal` - normalized address: `house street,town,province,country_code`
- `house` - building number
- `street` - street name
- `community` - neighborhood or village
- `town` - town or city
- `county` - administrative area more general than town
- `province` - state or province (usually abbreviated)
- `country` - country (short form but not abbreviated)

## License

MIT © [Natalia Kowalczyk](https://melitele.me)

[npm-image]: https://img.shields.io/npm/v/@furkot/geocode
[npm-url]: https://npmjs.org/package/@furkot/geocode

[build-url]: https://github.com/furkot/geocode/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/furkot/geocode/check.yaml?branch=main

[deps-image]: https://img.shields.io/librariesio/release/npm/@furkot/geocode
[deps-url]: https://libraries.io/npm/@furkot%2Fgeocode