open-index/open-npm huggingface dataset:
npm package: @santoshpk/react-native-nfc-scanner
Description: Android NFC scanner for React Native — supports both foreground and background scanning with latest RN compatibility
Author: Santosh Kumar
Latest version: 1.0.1

# @santoshpk/react-native-nfc-scanner

Android NFC scanning for React Native. Supports foreground and background scanning out of the box.

> **Android only.** Requires React Native 0.79+.

[![npm version](https://img.shields.io/npm/v/@santoshpk/react-native-nfc-scanner)](https://www.npmjs.com/package/@santoshpk/react-native-nfc-scanner)
[![Platform](https://img.shields.io/badge/platform-Android-green)](https://developer.android.com/guide/topics/connectivity/nfc)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

---

## Installation

```sh
npm install @santoshpk/react-native-nfc-scanner
```

Auto-links on install. No extra setup needed.

---

## Usage

```tsx
import { Button, View } from 'react-native';
import {
  startScanning,
  stopScanning,
  isSupported,
  isEnabled,
  goToNfcSetting,
  addNfcListener,
} from '@santoshpk/react-native-nfc-scanner';

function ScanScreen() {
  async function scan() {
    const supported = await isSupported();
    if (!supported) return console.log('NFC not supported');

    const enabled = await isEnabled();
    if (!enabled) return goToNfcSetting();

    const sub = addNfcListener('NfcTagScanned', (tag) => {
      console.log('Tag ID:', tag.tag);
      console.log('Payloads:', tag.payloads);
      stopScanning();
      sub.remove();
    });

    await startScanning();
  }

  return (
    <View>
      <Button title="Scan NFC Tag" onPress={scan} />
    </View>
  );
}
```

---

## API

| Method | Returns | Description |
|---|---|---|
| `startScanning()` | `Promise<void>` | Start listening for NFC tags |
| `stopScanning()` | `Promise<void>` | Stop listening |
| `isSupported()` | `Promise<boolean>` | Check if device has NFC hardware |
| `isEnabled()` | `Promise<boolean>` | Check if NFC is turned on |
| `goToNfcSetting()` | `Promise<boolean>` | Open Android NFC settings |
| `addNfcListener(event, cb)` | `EmitterSubscription` | Subscribe to scan events. Call `.remove()` to unsubscribe |

### Events

| Event | Payload |
|---|---|
| `NfcTagScanned` | `NfcTagEvent` |

### Types

```typescript
interface NfcTagEvent {
  tag: string;         // tag identifier
  ndef: string;        // NDEF data (empty string if none)
  payloads: string[];  // decoded text from each NDEF record
}
```

---

## Requirements

- React Native **0.79+**
- Android **API 21+**
- Physical device with NFC

---

## License

MIT
npm package: @santoshrajan/async-iterators
Description: Asynchronous Iterators
Author: Santosh Rajan
Latest version: 0.0.1

# async-iterators
Asynchronous iterators for event handilng in JavaScript

## install
Just copy index.mjs to the relevant folder

## Example
```
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Click Counter</title>
  </head>
<body>
  <h1>Click Counter</h1>
  <div id='counter'></div>
  <button id='plus'>+</button>
  <button id='minus'>-</button>

<script type='module'>

import {
  clickIterator,
  mapIterator,
  mergeIterators,
  runIterator
 } from './index.mjs'

const store = function createStore () {
  var counter = 0
  return (n) => counter += n 	
}()

function render (n) {
  document.querySelector('#counter').textContent = n
  return n
}

function pipe (...fns) {
  return function (n) {
    for (const f of fns) n = f(n)
  }
}

const handleButtonClicks = pipe(store, render)

const plusIterator = mapIterator(clickIterator('#plus'), e => 1)

const minusIterator = mapIterator(clickIterator('#minus'), e => -1)

const allIterator = mergeIterators(plusIterator, minusIterator)

runIterator(allIterator, handleButtonClicks)

handleButtonClicks(0)

</script>
</body>
</html>

```
npm package: @santoshrajan/simba
Description: No Non Sense JavaScript Framework
Author: Santosh Rajan
Latest version: 0.1.3

# simba

### Features

* Immutable State by default. Uses [immer.js](https://github.com/mweststrate/immer) under the hood.

* Components have their own state.

* Mutate state like you would in JavaScript. Immer has you covered.

* No classes, no `this`, no vdom

### Usage

CDN
```
<script type='module'>
import {R, H, CreateComponent} from 'https://cdn.jsdelivr.net/gh/santoshrajan/simba/simba.js'
```
NPM
```
$ npm install @santoshrajan/simba --save
```

#### Demos

#### [Counter](https://santoshrajan.github.io/simba/examples/counter)

#### [Todo](https://santoshrajan.github.io/simba/examples/todo)

#### See examples folder for more