open-index/open-npm huggingface dataset:
npm package: @johanblumenberg/eventemitter-async
Description: Promise based async drop-in replacement for EventEmitter
Author: johan.blumenberg@gmail.com
Latest version: 1.0.5

# @johanblumenberg/eventemitter-async

Promise based async drop-in replacement for `EventEmitter`

## API

Follows the API specified by https://nodejs.org/api/events.html#events_class_eventemitter

If no asynchronous listeners are added, it works exactly the same as `EventEmitter`.

If asynchronous listeners are added, those will be executed asynchronously before the next listener is executed. This holds both when emitting events using `emitAsync()` and using `emit()`.

An asynchronous event listener is any listener that returns a `Promise`.

### Additions

`emitAsync(event: string, ...args: any[]): Promise<boolean>`

Does the same as `EventEmitter.emit()`, but returns a `Promise` that is resolved once all event listeners are executed.
npm package: @johanblumenberg/sip.js
Description: A simple, intuitive, and powerful JavaScript signaling library
Author: OnSIP
Latest version: 1.0.2

# SIP.js

This is a fork of https://github.com/onsip/SIP.js, that will be discontinued as soon as the following PRs are merged:
 - https://github.com/onsip/SIP.js/pull/680

# SIP.js

[![Build Status](https://travis-ci.org/onsip/SIP.js.png?branch=master)](https://travis-ci.org/onsip/SIP.js)

A JavaScript SIP stack for WebRTC, instant messaging, and more!


## Website and Documentation

* [SIPjs.com](https://sipjs.com)
* [Mailing List](https://groups.google.com/forum/#!forum/sip_js)
* [Issue Tracking](https://github.com/onsip/sip.js/issues)


## Download

* [sipjs.com/download](https://sipjs.com/download/)
* npm: `npm install sip.js`

## Authors

### James Criscuolo [@james-criscuolo](https://github.com/james-criscuolo)

### Eric Green [@egreenmachine](https://github.com/egreenmachine)

## Previous Authors

* Joseph Frazier
* Will Mitchell

### JsSIP Authors

SIP.js contains substantial portions of the JsSIP software. JsSIP's authors at time of fork are listed below. For up to date information about JsSIP, please visit [jssip.net](http://jssip.net)

* José Luis Millán
* Iñaki Baz Castillo
* Saúl Ibarra Corretgé

## License

SIP.js is released under the [MIT license](https://sipjs.com/license).

SIP.js contains substantial portions of the JsSIP software, under the following license:

~~~
Copyright (c) 2012-2013 José Luis Millán - Versatica <http://www.versatica.com>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

~~~
npm package: @johanbuys/stet
Description: Code review CLI — coming soon
Author: Johan Buys
Latest version: 0.0.1

# stet

A code review CLI. Under construction.

Stet is a proofreading and editing term, derived from Latin meaning "let it stand," used to instruct typesetters or editors to ignore a previous deletion or correction, retaining the original text. 
Merriam-Webster
npm package: @johancdev/typedoc-theme
Description: - demo   - [example](https://mengxinssfd.github.io/typedoc-theme/)   - [request-template](https://mengxinssfd.github.io/request-template/) - [example-code](https://github.com/mengxinssfd/typedoc-theme/tree/main/example)
Latest version: 1.0.2

# @nolosay/typedoc-theme

- demo
  - [example](https://mengxinssfd.github.io/typedoc-theme/)
  - [request-template](https://mengxinssfd.github.io/request-template/)
- [example-code](https://github.com/mengxinssfd/typedoc-theme/tree/main/example)


<img width="1440" alt="截屏2023-04-11 17 56 04" src="https://user-images.githubusercontent.com/28827520/231126819-e2535010-9872-46ef-ae72-18645717f2ff.png">
<img width="1440" alt="截屏2023-04-11 17 55 25" src="https://user-images.githubusercontent.com/28827520/231126914-84d132fb-074a-453b-8514-69ea705b4faa.png">
<img width="1440" alt="截屏2023-04-11 17 56 49" src="https://user-images.githubusercontent.com/28827520/231126521-7fdaeced-ee87-4015-8be6-45371c3f35fd.png">
<img width="1440" alt="截屏2023-04-11 17 57 06" src="https://user-images.githubusercontent.com/28827520/231126464-26b811d7-c8fc-4e49-b744-a2b7b931f1a5.png">

## Installation

```shell
npm install typedoc @nolosay/typedoc-theme -D
```

## Usage

use script command

```shell
typedoc --plugin @nolosay/typedoc-theme --theme my-theme
```

or

use `typedoc.json`

```json
{
  "$schema": "https://typedoc.org/schema.json",
  "plugin": ["@nolosay/typedoc-theme"],
  "theme": "my-theme"
}
```
npm package: @johang/calendarjs
Description: A class that returns an array spanning provided years with their months and days as objects
Author: Johan Glud Jensen
Latest version: 2.0.0

### CalendarJS install

```
  npm install @johang/calendarjs
```

* Please NOTE: a {`DEPRECATED`} version of the package exists called:
```
  @johang/calendar-date-time-js
```
This package is no longer supported.

## Description
a class that can generate objects of years/months/days for further developing a calendar related component

### Example

```js
  import Calendar from '@johang/calendarjs';

  const config: Config = {
    range: { start: 1980, end: 2050 },
  };
  const calendar = new Calendar(config);
  calendar.getYears();

  // getMonths(year)
  calendar.getMonths(2022);

  // getDays(year, month)
  calendar.getDays(2022, 7);

  // set a different language for months & days
  calendar.setMonths
  calendar.setDays

  // set selected day, month & year
  calendar.setSelectedYear({ year: 1990, months: calendar.getMonths(1990), currentYear: false });
  calendar.setSelectedMonth({ month: 'January', days: calendar.getDays(1990, 1), currentMonth: false };)
  calendar.setSelectedDay({ day: 'Tuesday', number: 1, currentDay: false });

```

### TS interfaces

```js
export interface IYear {
  year: string;
  months: IMonth[];
  currentYear: boolean;
}

export interface IMonth {
  month: string;
  days: IDay[];
  currentMonth: boolean;
}

export interface IDay {
  day: string;
  number: number;
  currentDay: boolean;
}

export type CalendarRange = {
  start: number;
  end: number;
};

export type Config = {
  range: CalendarRange;
  months?: Months;
  days?: Days;
};

```
npm package: @johang/trycatch
Description: A try-catch wrapper function.
Author: Johan Glud Jensen
Latest version: 1.1.2

## Try-Catch
==========

[![npm Version][NPM VERSION BADGE]][NPM PAGE]

The tryCatch function is designed to mimic Go's error-handling pattern by returning both data and an error. It executes a provided function inside a try block, capturing any exceptions that occur. If the function runs successfully, it returns the result along with None as the error.

If an exception is raised, it returns None for the data and the caught exception as the error. This approach enables explicit error handling, similar to Go's value, err := function() pattern.

### Example

```ts
import { tryCatch } from 'trycatch';

type Response = {
    userId: number;
    id: number;
    title: string;
    completed: boolean;
};

 const dummyAPI = async () => {
    return await fetch('https://url').then(
      (res) => {
        if (!res.ok) throw new Error('I dont work');

        return res.json();
      }
    );
  };

  const handler = async () => {
    const { data, error } = await tryCatch<Response, Error>(dummyAPI());
    if(error != null) {
      throw error;
    }

    console.log('success: ', data);
  }
```

For more examples, check `src/examples/*`

[NPM PAGE]: https://www.npmjs.com/package/@johang/trycatch
[NPM VERSION BADGE]: https://img.shields.io/npm/v/@johang/trycatch.svg
npm package: @johanhalse/pucko-search
Description: The stupidest search
Author: Johan Halse
Latest version: 0.0.7

# Pucko search

When you thought you needed something like [Lunr.js](https://lunrjs.com) but it turned out you only needed the dumbest search.

## It's so tiny!

Yup. It's designed to be more or less a drop-in for your lunr.js installation unless you're doing anything clever (so hands off those Levenshtein distances and fancy-pants vectors!) but it's only 2kb minified. The only thing it contains is a really basic algorithmic stemmer which is currently in, uh, Swedish, and a naive string search. That's what I needed when I wrote this.

## Installation

Install via npm, like this:

```bash
npm install --save-dev @johanhalse/pucko-search
```

## Usage

One difference between Lunr and Pucko when instantiating is that you need a `new` keyword. Otherwise the functions look pretty much the same:

```javascript
import Pucko from "@johanhalse/pucko-search";
let idx = new Pucko(function() {
  this.ref("url");
  this.field("header");
  this.field("body");
  this.field("summary");

  myDocuments.forEach(doc => {
    this.add(doc);
  }, this);
});
```

## Function reference

`ref(String)`: change reference field

`field(String)`: make a field in your corpus searchable

`search(String)`: perform a search for your terms

When searching, Pucko will split any string it receives on spaces only, and the search is always case insensitive. Combined with the stemmer, this means that if you search for something like "Leva farligt" you'll get results that match the substrings `["lev", "farl"]`. It'll also strip diacritics in both search term and corpus. You'll get a lot more results than Lunr, for sure. If you want to search for an _exact match_ and not split the string by spaces, prefix your search term with `^`.

Another difference versus Lunr is that you'll only get an array of strings back. Since Pucko isn't doing anything suspicious like tracking advanced matching data it makes no sense to wrap all your results with `{ ref: "foo" }`. All you'll get back is the ref string, and you'll damn well like it.
npm package: @johanholmerin/structured-clone
Description: A Javascript implementation of the structured clone algorithm.
Author: Johan Holmerin
Latest version: 2.4.0

# Structured clone

A Javascript implementation of the structured clone algorithm.

No external dependencies.

## Install

```sh
# Yarn
yarn add @johanholmerin/structured-clone

# npm
npm install @johanholmerin/structured-clone
```

## Usage

```javascript
import structuredClone from '@johanholmerin/structured-clone';

const newObj = structuredClone(obj);
```

## Limitations

- `CryptoKey` and `ImageBitmap` are not supported, since there is no way to
  synchronously make a copy.
- Copying `FileList` is only supported in browsers that support the
  `DataTransfer` constructor.
- Does not support the [transfer](https://html.spec.whatwg.org/multipage/structured-data.html#structured-cloning) parameter
npm package: @johanleroy/dialogue-lib
Description: Système de dialogue Angular standalone avec alertes personnalisables
Author: Johan Leroy
Latest version: 1.0.2

# @johanleroy/dialogue-lib

🧩 **Dialogue-lib** est une bibliothèque Angular standalone permettant d'afficher des **alertes, confirmations ou dialogues personnalisés**, avec animations, timeout, icônes, backdrop et plus encore.

> ✅ Compatible Angular 20+ • 📦 Utilisable en module partagé ou injecté globalement • 🎨 Style avec Tailwind (ou sans)

---

## 📦 Installation

```bash
npm install @angular/animations @johanleroy/dialogue-lib
```

# 🚀 Utilisation de base

### 1. Import du provider dans app.config.ts

```TS
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { provideAnimations } from '@angular/platform-browser/animations';
import { provideDialogues } from '@ton-nom/dialogue-lib';

bootstrapApplication(AppComponent, {
    providers: [
        provideAnimations(),
        provideDialogues()
    ]
});
```

### 2. Appel depuis un composant

```TS
import { inject } from '@angular/core';
import { DialogueService } from '@johanleroy/dialogue-lib';

export class HomeComponent {
    
    private dialogue = inject(DialogueService);

    showSuccess() {
        this.dialogue.confirm({
            type: 'success',
            title: 'Bravo !',
            text: 'Vous avez réussie',
            confirmText: 'Okay !',
            timeout: 800,
            backdropOpacity: 0.5,
        });
    }

    showError() {
        this.dialogue.confirm({
            type: 'error',
            title: 'Aïeeeee !',
            text: 'Une erreur est survenue',
            confirmText: 'Mince !',
            timeout: 800,
            backdropOpacity: 0.5,
        });
    }

    showQuestion() {
        this.dialogue.confirm({
            type: 'question',
            title: 'Êtes-vous sûr ?',
            text: 'Supprimer définitivement l\'utilisateur ?',
            confirmText: 'Oui, supprimer',
            cancelText: 'Annuler',
            backdropOpacity: 0.5,
        }).then((res: boolean) => {
            if (res) {
                this.deleteUser(id);
            }
        });
    }
    
}
```

# 👨‍💻 Contribution

Les PR sont les bienvenues ! Clone le repo :

```bash
git clone https://github.com/ton-nom/dialogue-lib.git
cd dialogue-lib
npm install
npm run build
```

# 🐛 Bug ou idée d'amélioration ?

Crée une issue ici ou contacte-moi directement.
Tu peux aussi me proposer des améliorations UX ou des nouveaux types de dialogues (ex : prompt, select...).

# 📄 Licence

MIT — © 2025 Johan Leroy
npm package: @johann01/react-native-mlkit-core
Description: Shared Library for RNMLKit
Author: Trevor Coleman
Latest version: 0.7.9

# @infinitered/react-native-mlkit-core

## Description

This is a shared library for RNMLKit that contains helper functions and shared code for various packages. It offers
some helpful methods that are used by many apps on the React Native (JS) side and includes functionality to work with
images and bounding boxes.

## Installation

Use the following command to install the package:

```bash
npm install @infinitered/react-native-mlkit-core
```

## Usage

### RNMLKitImage

#### Swift

Use this class in Swift to create and manage images with MLKitVision. It provides utility methods for loading images and
managing their vision representations.

```swift
import RNMLKitCore
let image = RNMLKitImage(imagePath: imagePath)
// ...
```

- `imagePath` - should be the localUri of the image to process. i.e. `Asset.localUri` from an Expo Asset or `Image.uri`
  from
  an ImagePickerAsset.

#### Kotlin

Use this class in Kotlin to create and manage images with MLKitVision. It provides utility methods for loading images
and managing their vision representations.

```kotlin
import com.infinitered.reactnativemlkitcore.RNMLKitImage

val imageUri = Uri.parse(imagePath)
var image:InputImage = RNMLKitImage(imagePath, appContext.reactContext!!).image
// ...
```

- `imagePath` is the localUri of the image to process. `Asset.localUri` from an Expo Asset or `Image.uri` from an Expo
  ImagePickerAsset.
- `appContext` is the AppContext from your expo module -- it's accessible as a property on the Module class.

### React Components

#### BoundingBoxView

Renders a bounding box based on the specified dimensions and scale.

```jsx
import { BoundingBoxView } from "@infinitered/react-native-mlkit-core";
// ...
<BoundingBoxView box={box} scale={scale} />;
```

- `box` is the bounding box to render of type `BoundingBox`

```ts
/**
 * Represents a bounding box with origin, size, color, label, and width properties.
 */
export interface BoundingBox {
  origin: { x: number; y: number };
  size: { x: number; y: number };
  color?: string;
  label?: string;
  width?: number;
}
```

#### ImageWithBoundingBoxes

Renders an image with bounding boxes drawn over specified regions.

```jsx
import { ImageWithBoundingBoxes } from "@infinitered/react-native-mlkit-core";
// ...
<ImageWithBoundingBoxes image={image} boundingBoxes={boundingBoxes} />;
```

- `boundingBoxes` is an array of `BoundingBox` objects to render over the image.
- `image` is the image to render. Accepts an `Image` from `expo-image`

### Hooks

Several hooks are included to assist with layout and scaling:

- `useBoundingBoxStyle`: Calculates the style object for a bounding box.
- `useImageScale`: Calculates the image scale based on the provided parameters.
- `useLayout`: Handles layout change events.
npm package: @johann01/react-native-mlkit-face-detection
Description: MLKit Face Detection for Expo
Author: Trevor Coleman
Latest version: 0.7.12

# react-native-mlkit-face-detection

MLKit Face Detection for Expo

# API documentation

# Installation in managed Expo projects

For [managed](https://docs.expo.dev/archive/managed-vs-bare/) Expo projects, please follow the installation instructions
in the [API documentation for the latest stable release](#api-documentation). If you follow the link and there is no
documentation available then this library is not yet usable within managed projects &mdash; it is likely to be included
in an upcoming Expo SDK release.

# Installation in bare React Native projects

For bare React Native projects, you must ensure that you
have [installed and configured the `expo` package](https://docs.expo.dev/bare/installing-expo-modules/) before
continuing.

### Add the package to your npm dependencies

```
npm install react-native-mlkit-face-detection
```

### Configure for iOS

Run `npx pod-install` after installing the npm package.

### Configure for Android

# Contributing

Contributions are very welcome! Please refer to guidelines described in
the [contributing guide](https://github.com/expo/expo#contributing).
npm package: @johannes.reuter/react-long
Description: A LongPress React component
Latest version: 1.1.3

# react-long
Warning: works only on devices that support touch.

# Demo

[http://react-long.surge.sh](http://react-long.surge.sh)

# Example

```js
<div>
  <LongPress
    time={1000}
    onLongPress={() => alert('pressed for 1s')}
    onPress={() => alert('pressed')}
  >
    <div>
      Hello world
    </div>
  </LongPress>
</div>
```
npm package: @johanneshighspirits/env-setup
Description: Keep track of required environment variables
Author: Johannes Borgström
Latest version: 0.0.5

# env-setup

## Work in progress

### Example usage

Create a configuration file

```js
// config.js
module.exports = {
  envFilePath: '.env',
  vars: { testVariables: ['VAR_1', 'VAR_2'] }
}
```

Add npm script and pass the path to your config file as `--config` argument

```json
// package.json
{
  "scripts": {
    "prestart": "env-setup --config config.js"
  }
}
```
npm package: @johanneslumpe/css-types
Description: TypeScript CSS types and value helpers generated from MDN data
Author: Johannes Lumpe
Latest version: 0.4.0

# css-types

![Build status](https://travis-ci.org/johanneslumpe/css-types.svg?branch=master)
[![codecov](https://codecov.io/gh/johanneslumpe/css-types/branch/master/graph/badge.svg)](https://codecov.io/gh/johanneslumpe/css-types)

This library provides TypeScript types for CSS properties. It uses data provided by [MDN](https://github.com/mdn/data/) to generate types. This project is similar to https://github.com/frenic/csstype, but differs in some key points:

1) Allow typing of dynamic user input for lengths and other custom inputs
2) Generate pre-combined types where possible, e.g. the `display` property
3) Usage of tuples to express non-combineable types
4) Exported types aren't exhaustive, only standard property types are generated

It has mainly been designed to generate types which could be consumed by https://github.com/johanneslumpe/styled-props which can natively work with the generated tuple types. Maybe others will find this helpful as well.

The type generation process itself works, but doesn't yet support all CSS features. E.g. functions are aliased to `string`, instead of auto-generated helper functions which return branded types.

All properties are suffixed with `Property` and combined types are suffixed with `Combined`, e.g. `DisplayProperty` and `DisplayPropertyCombined`.

## Get it

`npm i @johanneslumpe/css-types`

## Use it

TODO

## Documentation

Typedocs can be found in [the docs folder](docs/README.md)
npm package: @johannesnormannjensen/capacitor-fused-location
Description: Gives access to Google Play Services location. (Android only)
Author: Johannes Normann Jensen
Latest version: 1.0.0-beta.19.8

# capacitor-fused-location
Fused location plugin for android

Essentially this is just a copy of the pull request not yet merged into the official Capacitor repo:
[Use Fused Location Provider for Android #379](https://github.com/ionic-team/capacitor/issues/379)



## Installation

```bash
npm i --save @johannesnormannjensen/capacitor-fused-location
```