open-index/open-npm huggingface dataset:
npm package: @noirstack/ledgerbill-sdk
Description: Official TypeScript client for LedgerBill API
Author: Noir Stack LLC
Latest version: 0.1.0

# @ledgerbill/sdk

Official TypeScript client scaffold for LedgerBill.

## Build flow

From repository root:

1. Export OpenAPI source of truth:
   - `npm run openapi:export`
2. Generate strongly-typed API contracts:
   - `npm run sdk:types`
3. Build SDK package:
   - `npm run sdk:build`
4. Create local tarball for publishing checks:
   - `npm run sdk:pack`

## Basic usage

```ts
import { LedgerBillClient } from '@ledgerbill/sdk';

const client = new LedgerBillClient({
  baseUrl: 'http://localhost:3107',
  tenantId: 'tenant_123',
  apiKey: 'lb_your_api_key',
});

const plans = await client.getPricingPlans();
const preview = await client.previewUsage({
  customerId: 'cus_123',
  featureKey: 'events_processed',
  amount: 1000,
});
```

## Notes

- This package is currently scaffolded from OpenAPI and intentionally thin.
- Any route types come from `src/generated/api-types.ts`.
- Re-run `npm run sdk:types` after API contract changes.
npm package: @nois/ng2-fullcalendar
Description: Angular2 component for FullCalendar
Author: Ken Nguyen
Latest version: 1.0.30


# Angular 2: FullCalendar component

An Angular 2 component for [fullcalendar](https://fullcalendar.io/).

## Installation
```
npm install angular2-fullcalendar --save
```
## Usage
####Import the calendar component
```
import {CalendarComponent} from "angular2-fullcalendar/src/calendar/calendar";
// other imports 

@NgModule({
  declarations: [
    // other declarations 
    CalendarComponent
  ],
  // ...
})
export class AppModule {}
```
#### Add config in my-component.ts
For a full list of options available, please refer to fullcalendar.io documentation at https://fullcalendar.io/docs/
```
@Component({
  selector: 'my-component',
  templateUrl: 'my-component.html'
})
export class MyComponent{
    calendarOptions:Object = {
        height: 'parent',
        fixedWeekCount : false,
        defaultDate: '2016-09-12',
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        events: [
          {
            title: 'All Day Event',
            start: '2016-09-01'
          },
          {
            title: 'Long Event',
            start: '2016-09-07',
            end: '2016-09-10'
          },
          {
            id: 999,
            title: 'Repeating Event',
            start: '2016-09-09T16:00:00'
          },
          {
            id: 999,
            title: 'Repeating Event',
            start: '2016-09-16T16:00:00'
          },
          {
            title: 'Conference',
            start: '2016-09-11',
            end: '2016-09-13'
          },
          {
            title: 'Meeting',
            start: '2016-09-12T10:30:00',
            end: '2016-09-12T12:30:00'
          },
          {
            title: 'Lunch',
            start: '2016-09-12T12:00:00'
          },
          {
            title: 'Meeting',
            start: '2016-09-12T14:30:00'
          },
          {
            title: 'Happy Hour',
            start: '2016-09-12T17:30:00'
          },
          {
            title: 'Dinner',
            start: '2016-09-12T20:00:00'
          },
          {
            title: 'Birthday Party',
            start: '2016-09-13T07:00:00'
          },
          {
            title: 'Click for Google',
            url: 'http://google.com/',
            start: '2016-09-28'
          }
        ]
      };
  }
}
```
#### Add selector in template file my-component.html
```
<angular2-fullcalendar [options]="calendarOptions"></angular2-fullcalendar>
```
#### Import the fullcalendar css
If you're using Angular CLI, this is as simple as including one line in your style.css file:
```
@import "fullcalendar/dist/fullcalendar.min.css";
```
Alternatively, you can just reference the file directly. This would look something like
```
<link href="node_modules/fullcalendar/dist/fullcalendar.min.css" rel="stylesheet">
```

## TODO's
* Tests
npm package: @nois/ngx-datatable
Description: ngx-datatable is a Angular2+ table grid component for presenting large and complex data.
Latest version: 11.1.10

# ngx-datatable
[![Join the chat at https://gitter.im/swimlane/ngx-datatable](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/swimlane/ngx-datatable?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 
[![Code Climate](https://codeclimate.com/github/swimlane/ngx-datatable/badges/gpa.svg)](https://codeclimate.com/github/swimlane/ngx-datatable)
[![Build Status](https://travis-ci.org/swimlane/ngx-datatable.svg?branch=master)](https://travis-ci.org/swimlane/ngx-datatable)
[![Test Coverage](https://codeclimate.com/github/swimlane/ngx-datatable/badges/coverage.svg)](https://codeclimate.com/github/swimlane/ngx-datatable/coverage)
[![npm version](https://badge.fury.io/js/%40swimlane%2Fngx-datatable.svg)](https://badge.fury.io/js/%40swimlane%2Fngx-datatable)

`ngx-datatable` is an Angular component for presenting large and complex data.  It has all the features you would expect from any other table but in a light package with _no external dependencies_. The table was designed to be extremely flexible and light; it doesn't make any assumptions about your data or how you: filter, sort or page it.

It was built for modern browsers using _TypeScript, CSS3 and HTML5_ and Angular `>=4.0.0`. This is the sister project of the [angular-data-table](https://github.com/swimlane/angular-data-table) that is designed for Angular 1.x.

Check out the [documentation](https://swimlane.gitbooks.io/ngx-datatable/) & [demos](http://swimlane.github.io/ngx-datatable/) for more information!

See the [changelog](https://github.com/swimlane/ngx-datatable/blob/master/docs/changelog.md) for recent changes.

## Features
- Handle large data sets ( Virtual DOM )
- Expressive Header and Cell Templates
- Horizontal & Vertical Scrolling
- Column Reordering & Resizing
- Client/Server side Pagination & Sorting
- Intelligent Column Width Algorithms ( Force-fill & Flex-grow )
- Integrated Pager
- Cell & Row Selection ( Single, Multi, Keyboard, Checkbox )
- Fixed AND Fluid height
- Left and Right Column Pinning
- Row Detail View
- Decoupled theme'ing with included Google Material theme
- Light codebase / No external dependencies
- AoT Compilation Support

## Installation
To use ngx-datatable in your project install it via [npm](https://www.npmjs.com/package/@swimlane/ngx-datatable):
```
npm i @swimlane/ngx-datatable --save
```

## Credits
`ngx-datatable` is a [Swimlane](http://swimlane.com) open-source project; we believe in giving back to the open-source community by sharing some of the projects we build for our application. Swimlane is an automated cyber security operations and incident response platform that enables cyber security teams to leverage threat intelligence, speed up incident response and automate security operations.
npm package: @nois/ngx-datepicker
Description: This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.1.3.
Latest version: 1.0.2

# NgxDatepicker

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.1.3.

## Code scaffolding

Run `ng generate component component-name --project ngx-datepicker` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-datepicker`.
> Note: Don't forget to add `--project ngx-datepicker` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build ngx-datepicker` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build ngx-datepicker`, go to the dist folder `cd dist/ngx-datepicker` and run `npm publish`.

## Running unit tests

Run `ng test ngx-datepicker` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
npm package: @nois/ngx-material-datepicker
Description: This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.1.3.
Author: Shawn Dao
Latest version: 1.0.1

# NgxMaterialDatepicker2

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.1.3.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
npm package: @nois/react-native-android-fullscreen-webview-video
Description: WebView fullscreen video support for Android in React Native
Author: Airship
Latest version: 1.2.2

## react-native-android-fullscreen-webview-video

## Overview

The WebView component that comes with React Native doesn't have the ability to show videos
fullscreen by default. This package essentially copies the existing WebView for Android and adds some extra functionality to enable fullscreen videos. This behavior is supported by default for iOS, so this will simply use the native iOS WebView.

## Getting started

`yarn add react-native-android-fullscreen-webview-video`

or

`npm install react-native-android-fullscreen-webview-video --save`

##### Automatically link the library

`react-native link`

## Usage

This works exactly like the existing `WebView` component, so there is nothing extra that needs to be added.

```
import WebView from 'react-native-android-fullscreen-webview-video';

...

<WebView
  source={{ uri: 'https://www.youtube.com/embed/dQw4w9WgXcQ' }}
/>
```

---

MIT License.

---
npm package: @nois/react-native-key-scanner
Description: barcode scanner by key event
Author: lam-huynh
Latest version: 0.2.2

# react-native-key-scanner

Barcode scanner by key event

## Installation

```sh
npm install @nois/react-native-key-scanner
```

## Usage
React-native code
```js
import KeyScanner from 'react-native-key-scanner'
...
componentDidMount() {
    KeyScanner.onBarcodeScanner((result) => {
        // do something with result
    });
    KeyScanner.onKeyMultipleListener((result) => {
        // do something with result
    });
}
componentWillUnmount() {
    KeyScanner.removeBarcodeScanner();
    KeyScanner.removeKeyMultipleListener();
}
```
Implement onKeyDown and onKeyUp in MainActivity.java
```java
import com.reactnativekeyscanner.KeyScannerModule;
import android.view.KeyEvent;
...
	@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
		KeyboardModule.getInstance().onKeyDownEvent(keyCode, event);
		super.onKeyDown(keyCode, event);
        return true;
	}
	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {
		KeyboardModule.getInstance().onKeyUpEvent(keyCode, event);
		super.onKeyUp(keyCode, event);
        return true;
	}
  @Override
  public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
      KeyScannerModule.getInstance().onKeyMultipleEvent(keyCode, repeatCount, event);
      return super.onKeyMultiple(keyCode, repeatCount, event);
  }
...

```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT
npm package: @nois/react-native-modalbox
Description: A <Modal/> component for react-native
Author: Maxime Mezrahi
Latest version: 1.4.3

# react-native-modalbox

[![npm](https://img.shields.io/npm/dm/react-native-modalbox.svg?maxAge=2592000)]()
[![npm](https://img.shields.io/npm/dt/react-native-modalbox.svg?maxAge=2592000)]()   

A react native <Modal> component, easy, fully customizable, implementing the 'swipe down to close' feature.

## Preview
![](https://i.imgur.com/QTAYh81.gif)
![](http://i.imgur.com/3XULLt8.gif)

## Install

`npm install react-native-modalbox@latest --save`

## Example
Check [index.js](https://github.com/maxs15/react-native-modalbox/blob/master/Example/index.ios.js) in the Example folder.

## Properties

| Prop  | Default  | Type | Description |
| :------------ |:---------------:| :---------------:| :-----|
| isOpen | false | `bool` | Open/close the modal, optional, you can use the open/close methods instead  |
| isDisabled | false | `bool` | Disable any action on the modal (open, close, swipe)  |
| backdropPressToClose | true | `bool` | Close the the modal by pressing on the backdrop |
| swipeToClose | true | `bool` | Set to `true` to enable the swipe down to close feature |
| swipeThreshold | 50 | `number` | The threshold to reach in pixels to close the modal |
| swipeArea | - | `number` | The height in pixels of the swipeable area, window height by default |
| position | center | `string` | Control the modal position using `top` or `center` or `bottom`
| entry | bottom | `string` | Control the modal entry position `top` or `bottom`
| backdrop | true | `bool` | Display a backdrop behind the modal
| backdropOpacity | 0.5| `number` | Opacity of the backdrop
| backdropColor | black| `string` | backgroundColor of the backdrop
| backdropContent | null| `ReactElement` | Add an element in the backdrop (a close button for example)
| animationDuration | 400| `number` | Duration of the animation
| easing | Easing.elastic(0.8) | `function` | Easing function applied to opening modal animation
| backButtonClose | false | `bool` | (Android only) Close modal when receiving back button event
| startOpen | false | `bool` | Allow modal to appear open without animation upon first mount
| coverScreen | false | `bool` | Will use RN `Modal` component to cover the entire screen wherever the modal is mounted in the component hierarchy
| keyboardTopOffset | ios:22, android:0 | `number` | This property prevent the modal to cover the ios status bar when the modal is scrolling up because the keyboard is opening

## Events

| Prop  | Params  | Description |
| :------------ |:---------------:| :---------------:|
| onClosed | - | When the modal is close and the animation is done |
| onOpened | - | When the modal is open and the animation is done |
| onClosingState | state `bool` | When the state of the swipe to close feature has changed (usefull to change the content of the modal, display a message for example) |

## Methods
These methods are optional, you can use the isOpen property instead   

| Prop  | Params  | Description |
| :------------ |:---------------:| :---------------:|
| open | - | Open the modal |
| close | - | Close the modal |
npm package: @nois/react-native-notifications
Description: Advanced Push Notifications (Silent, interactive notifications) for iOS & Android
Author: Lidan Hifi
Latest version: 1.1.22

# React Native Notifications [![Build Status](https://travis-ci.org/wix/react-native-notifications.svg)](https://travis-ci.org/wix/react-native-notifications)

Handle all the aspects of push notifications for your app, including remote and local notifications, interactive notifications, silent notifications, and more.

**All the native iOS notifications features are supported!** 

_For information regarding proper integration with [react-native-navigation](https://github.com/wix/react-native-navigation), follow [this wiki](https://github.com/wix/react-native-notifications/wiki/Android:-working-with-RNN)._


### iOS

<img src="https://s3.amazonaws.com/nrjio/interactive.gif" alt="Interactive notifications example" width=350/>

- Remote (push) notifications
- Local notifications
- Background/Managed notifications (notifications that can be cleared from the server, like Facebook messenger and Whatsapp web)
- PushKit API (for VoIP and other background messages)
- Interactive notifications (allows you to provide additional functionality to your users outside of your application such as action buttons)

### Android

- Receiving notifications in any App state (foreground, background, "dead")
- Built-in notification drawer management
- High degree of code extensibility to allow for advanced custom layouts and any specific notifications behavior as available by [Android's API](https://developer.android.com/training/notify-user/build-notification.html)
- Android equivalent of React-Native's implementation of [`PushNotificationsIOS.getInitialNotification()`](https://facebook.github.io/react-native/docs/pushnotificationios.html#getinitialnotification).

_Upcoming: local notifications, background-state Rx queue (iOS equivalent)_


# Table of Content

- [Installation and setup](./docs/installation.md) - Setting up the library in your app
- [Subscription](./docs/subscription.md) - Signing in to push notifications vendors (e.g. GCM)
- [Notification Events (notfications core)](./docs/notificationsEvents.md) - Handling push notification arrival, notification opening by users
- [Local notifications](./docs/localNotifications.md) - Manually triggering notifications (i.e. not via push)
- [Advanced iOS topics](./docs/advancedIos.md) - e.g. managed notifications, PushKit API, Notifications actions
- [Notifications layout control - Android (wiki page)](https://github.com/wix/react-native-notifications/wiki/Android:-Layout-Customization) - Learn how to fully customize your notifications layout on Android!

# License
The MIT License.

See [LICENSE](LICENSE)
npm package: @nois/react-native-safe-area-view
Description: JS only version of SafeAreaView for supporting iPhone X safe area insets.
Author: Dave Pack
Latest version: 0.10.1

# react-native-safe-area-view

This is a JS-only version of SafeAreaView that will be available in React Native v0.50.0, to be released at the beginning of November. This version also adds a small api that makes SafeAreaView more flexible for complex UIs. React Navigation already includes and uses this view starting in [v1.0.0-beta.16](https://github.com/react-community/react-navigation/releases/tag/v1.0.0-beta.16).

## Usage

Wrap components that touch any edge of the screen with SafeAreaView.

```jsx
<SafeAreaView>
  <View>
    <Text>Look, I'm safe!</Text>
  </View>
</SafeAreaView>
```

### forceInset

Sometimes you will observe unexpected behavior and jank because SafeAreaView uses `onLayout` then calls `measureInWindow` on the view. If you know your view will touch certain edges, use `forceInset` to force it to apply the inset padding on the view.

```jsx
<SafeAreaView forceInset={{ top: 'always' }}>
  <View>
    <Text>Yeah, I'm safe too!</Text>
  </View>
</SafeAreaView>
```

`forceInset` takes an object with the keys `top | bottom | left | right | vertical | horizontal` and the values `'always' | 'never'`. Or you can override the padding altogether by passing an integer.

### With HOC

Sometimes you would prefer to use a higher-order component to wrap components.

```js
withSafeArea()(Component);

// Or with forceInset props
withSafeArea({ top: 'always' })(Component);
```
npm package: @nois/react-native-webview-autoheight
Description: React Native WebView with AutoHeight
Author: Elton Jain
Latest version: 1.1.0

# React Native WebView Autoheight
React Native WebView which sets it's height automatically with minimal efforts.

You can also add custom CSS style or javascript to your webview using below example.



![Downloads](https://nodei.co/npm/react-native-webview-autoheight.png?downloads=true&stars=true)



## Installation
> npm install --save react-native-webview-autoheight

## Usage

```
import MyWebView from 'react-native-webview-autoheight';
const customStyle = "<style>* {max-width: 100%;} body {font-family: sans-serif;} h1 {color: red;}</style>";
const htmlContent = "<h1>This is title</h1><p>Throw your entire HTML here</p>";

<MyWebView
    source={{html: customStyle + htmlContent}}
    startInLoadingState={true}
/>
```

```
<MyWebView
    source={{uri: 'http://example.com/helloworld.html'}}
    startInLoadingState={true}
/>
```


## Props
* Same as https://facebook.github.io/react-native/docs/webview.html#props
* `autoHeight` (default: true)
* `width` (default: Screen width)
* `defaultHeight` (default height unless autoHeight)

## How it works
It is a very simple wrapper around the built-in React Native Webview, which updates the height of the webview based on a state change using `onNavigationStateChange`.


### Feel free to add issues or feature requests
npm package: @nois/react-scripts
Description: Configuration and scripts for Create React App.
Latest version: 2.1.2

# react-scripts

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

- [Getting Started](https://github.com/facebook/create-react-app/blob/master/README.md#getting-started) – How to create a new app.
- [User Guide](https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md) – How to develop apps bootstrapped with Create React App.
npm package: @nois/signalr-client
Description: ASP.NET Core SignalR
Author: Microsoft
Latest version: 1.0.0-alpha2-final

JavaScript and TypeScript clients for SignalR for ASP.NET Core

## Installation

```bash
npm install @aspnet/signalr-client
```

## Usage

### Browser

To use the client in a browser, copy `*.js` files from the `dist/browser` folder to your script folder include on your page using the `<script>` tag.

### Node.js

The following polyfills are required to use the client in Node.js applications:
- `XmlHttpRequest` - always
- `WebSockets` - to use the WebSockets transport
- `EventSource` - to use the ServerSentEvents transport
- `btoa/atob` - to use binary protocols (e.g. MessagePack) over text transports (ServerSentEvents)

### Example

```JavaScript
let connection = new signalR.HubConnection('/chat');

connection.on('send', data => {
    console.log(data);
});

connection.start()
    .then(() => connection.invoke('send', 'Hello'));
```
npm package: @nois/smart-space-floor-map
Description: A floor map module for Smart Space App
Author: Shawn Dao
Latest version: 1.0.0

# react-native-smart-space-floor-map

A project to display floor image and desks over it with zooming feature for Smart Space App.

## Features
- Display Image with zooming
- Render Desks over the image
- Allow to click to the desk and set active style

## About

This project was started in the cause of solving issue Image Zooming and drawing in Android


## Installation

Install package from npm

```sh
npm install --save @nois/smart-space-floor-map
```
In App Gradle
```gradle
...

dependencies {
    ...

    compile project(':smart-space-floor-map')
    
    ...
}
```

In `android/settings.gradle`
```gradle
...

include ':smart-space-floor-map'
project(':smart-space-floor-map').projectDir = new File(rootProject.projectDir, '../node_modules/smart-space-floor-map/android/release')
```

Manually register module in `MainApplication.java`:

```java
import com.south32.oraclecms.floormap.FloorMapPackage;  // <--- Import Package

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
      @Override
      protected boolean getUseDeveloperSupport() {
        return BuildConfig.DEBUG;
      }

      @Override
      protected List<ReactPackage> getPackages() {

      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
          new FloorMapPackage() // <---- Add the Package
      );
    }
  };

  ....
}
```

## Usage

Check out the `example` folder for sample code

## Development

Uncomment the `application` that include the `activity` in `AndroidManifest.xml` and run the project to dev. Remember to comment it again to make a release.

## Release
- Run following command to update release folder: `$ npm run release`
npm package: @noise-machines/normalize
Description: Normalize an array of numbers.
Author: C. Thomas Bailey
Latest version: 1.0.2

# Normalize

Normalize arrays of numbers.

## Installation

`$ npm install @noise-machines/normalize`

## Usage

```js
import normalize from '@noise-machines/normalize'

const normalized = normalize([1,2,3,4,5])
//=> [0, 0.25, 0.5, 0.75, 1]
console.log(normalized)
```
npm package: @noise-machines/pixel-matrix
Description: A tiny (< 2 KB) library for playing with pixels.
Author: Thomas Bailey
Latest version: 0.0.6

# Pixel Matrix
> A [tiny (< 2 KB)](https://bundlephobia.com/result?p=@noise-machines/pixel-matrix) library for playing with pixels.

# Live Demo


# Install

`yarn add @noise-machines/pixel-matrix`

# Usage

## Create a random image

```js
import PixelMatrix from '@noise-machines/pixel-matrix'

const canvas = document.querySelector('canvas')

// Returns a random number between 0 and 256.
const getRandomColorChannel = () => Math.floor(Math.random() * 256)

// Colors in Pixel Matrix are just JSON objects.
const getRandomColor = () => {
  return {
    red:  getRandomColorChannel(),
    green: getRandomColorChannel(),
    blue: getRandomColorChannel(),
    alpha: 255
  }
}

// Create a pixel matrix that's the same width and height as the canvas,
// then populate it with random colors.
const pixelMatrix = new PixelMatrix(canvas.width, canvas.height).map(getRandomColor)

// Draw to the canvas.
pixelMatrix.putPixels(canvas)
```
npm package: @noisegate/sdk
Description: Filter noise from your error tracking with community-trained patterns
Author: NoiseGate
Latest version: 0.4.0

# @noisegate/sdk

Filter noise from your error tracking with community-curated patterns.

## Installation

```bash
npm install @noisegate/sdk
```

## Usage

```typescript
import * as Sentry from "@sentry/browser";
import { initNoisegate, isNoise } from "@noisegate/sdk";

// Initialize once at startup (auto-loads patterns)
initNoisegate({ apiKey: "ng_live_your_api_key" });

// Use in Sentry
Sentry.init({
  dsn: "your-sentry-dsn",
  beforeSend: (event, hint) => {
    const error = hint?.originalException;
    if (error instanceof Error && isNoise(error)) {
      return null; // Filter out noise
    }
    return event;
  },
});
```

## API

### `initNoisegate(config)`

Initialize NoiseGate. Call once at app startup. Automatically loads filter patterns.

```typescript
initNoisegate({
  apiKey: "ng_live_...",  // Required
  apiUrl: "...",          // Optional: custom API endpoint
  debug: true,            // Optional: enable logging
  timeout: 5000,          // Optional: request timeout in ms
});
```

### `isNoise(error)`

Check if an error matches any filter pattern.

```typescript
if (isNoise(error)) {
  // This error is noise, don't report it
}
```

## License

MIT
npm package: @noisemaker11/app
Description: Dependencies for these templates are managed with [pnpm](https://pnpm.io) using `pnpm up -Lri`.
Latest version: 1.1.34

## Usage

Dependencies for these templates are managed with [pnpm](https://pnpm.io) using `pnpm up -Lri`.

This is the reason you see a `pnpm-lock.yaml`. That said, any package manager will work. This file can safely be removed once you clone a template.

```bash
$ npm install # or pnpm install or yarn install
```

### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)

## Available Scripts

In the project directory, you can run:

### `npm run dev` or `npm start`

Runs the app in the development mode.<br>
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.<br>

### `npm run build`

Builds the app for production to the `dist` folder.<br>
It correctly bundles Solid in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.<br>
Your app is ready to be deployed!

## E2E Testing

Playwright starts the Vite dev server automatically via `webServer`, and UI tests need an jonsoc backend (defaults to `localhost:4096`).
Use the local runner to create a temp sandbox, seed data, and run the tests.

```bash
bunx playwright install
bun run test:e2e:local
bun run test:e2e:local -- --grep "settings"
```

Environment options:

- `PLAYWRIGHT_SERVER_HOST` / `PLAYWRIGHT_SERVER_PORT` (backend address, default: `localhost:4096`)
- `PLAYWRIGHT_PORT` (Vite dev server port, default: `3000`)
- `PLAYWRIGHT_BASE_URL` (override base URL, default: `http://localhost:<PLAYWRIGHT_PORT>`)

## Deployment

You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
npm package: @noisemaker11/slack
Description: Slack bot integration for jonsoc that creates threaded conversations.
Latest version: 1.1.34

# @jonsoc/slack

Slack bot integration for jonsoc that creates threaded conversations.

## Setup

1. Create a Slack app at https://api.slack.com/apps
2. Enable Socket Mode
3. Add the following OAuth scopes:
   - `chat:write`
   - `app_mentions:read`
   - `channels:history`
   - `groups:history`
4. Install the app to your workspace
5. Set environment variables in `.env`:
   - `SLACK_BOT_TOKEN` - Bot User OAuth Token
   - `SLACK_SIGNING_SECRET` - Signing Secret from Basic Information
   - `SLACK_APP_TOKEN` - App-Level Token from Basic Information

## Usage

```bash
# Edit .env with your Slack app credentials
bun dev
```

The bot will respond to messages in channels where it's added, creating separate jonsoc sessions for each thread.
npm package: @noisemakerjon/isspamllm
Description: LLM-based spam classifier. Works with any OpenAI-compatible API.
Latest version: 0.1.0

# isSpamLLM

Simple LLM-based spam classifier. Works with any OpenAI-compatible API.

## Install

```bash
npm install spam-classifier
```

## Usage

```typescript
import { createClassifier } from "spam-classifier";

// Set up once
const isSpam = createClassifier({
  apiKey: process.env.OPENROUTER_API_KEY!,
});

// Use anywhere - returns true/false
if (await isSpam("Need a quote for your services")) {
  // spam - ignore it
}

// Or get details
const result = await isSpam.details("Need a quote");
// { isSpam: false, confidence: 0.95, reason: "Customer requesting quote" }
```

## Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `apiKey` | string | **required** | API key |
| `model` | string | `"openai/gpt-4o-mini"` | Model to use |
| `baseUrl` | string | OpenRouter | API endpoint |
| `zdr` | boolean | `false` | Enable Zero Data Retention |

## Providers

Works with any OpenAI-compatible API:

```typescript
// OpenRouter (default)
const isSpam = createClassifier({ apiKey: process.env.OPENROUTER_API_KEY! });

// OpenAI directly
const isSpam = createClassifier({
  apiKey: process.env.OPENAI_API_KEY!,
  baseUrl: "https://api.openai.com/v1/chat/completions",
  model: "gpt-4o-mini",
});

// Local LLM
const isSpam = createClassifier({
  apiKey: "not-needed",
  baseUrl: "http://localhost:11434/v1/chat/completions",
  model: "llama3",
});
```

## Fail-Safe

Returns `false` (legitimate) if the API fails, so you never block real customers.

## Cost

~$0.0002 per classification. 10,000 submissions = ~$2.

## License

MIT
npm package: @noisemakerjon/react-address-autocomplete
Description: React component for Google Places address autocomplete
Author: noisemakerjon
Latest version: 1.0.2

# @noisemakerjon/react-address-autocomplete

A React component for Google Places address autocomplete.

## Installation

```bash
npm install @noisemakerjon/react-address-autocomplete
```

## Usage

```tsx
import { AddressAutocompleteInput } from "@noisemakerjon/react-address-autocomplete";

function MyForm() {
  const [address, setAddress] = useState("");

  return (
    <AddressAutocompleteInput
      value={address}
      onChange={setAddress}
      apiKey={import.meta.env.VITE_GOOGLE_MAPS_API_KEY}
      placeholder="Start typing your address..."
    />
  );
}
```

## Hook Usage

You can also use the hook directly for custom implementations:

```tsx
import { useGooglePlacesAutocomplete } from "@noisemakerjon/react-address-autocomplete/hooks";

function MyComponent() {
  const { predictions, isLoading, error, fetchPredictions } = useGooglePlacesAutocomplete({
    apiKey: "your-api-key",
  });

  // Custom implementation...
}
```

## API

### AddressAutocompleteInput Props

| Prop | Type | Required | Description |
|------|------|----------|-------------|
| `value` | string | Yes | Current input value |
| `onChange` | (value: string) => void | Yes | Called when value changes |
| `apiKey` | string | Yes | Google Maps API key |
| `onFocus` | (e) => void | No | Focus event handler |
| `onBlur` | (e) => void | No | Blur event handler |
| `onSelectionComplete` | () => void | No | Called when user selects an address |
| `className` | string | No | Additional CSS classes |
| `required` | boolean | No | HTML required attribute |

### useGooglePlacesAutocomplete Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `enabled` | boolean | true | Enable/disable the hook |
| `apiKey` | string | - | Google Maps API key |

### Return Values

| Value | Type | Description |
|-------|------|-------------|
| `predictions` | PlacePrediction[] | Array of address predictions |
| `isLoading` | boolean | Whether API request is in progress |
| `error` | string \| null | Error message if request failed |
| `fetchPredictions` | (input: string) => void | Function to fetch predictions |
| `resetSession` | () => void | Reset the Google session token |
| `clearPredictions` | () => void | Clear current predictions |
npm package: @noisemakerjon/spam-classifier
Description: LLM-based spam classifier for form submissions. Works with any OpenAI-compatible API.
Latest version: 0.1.0

# spam-classifier

Simple LLM-based spam classifier for form submissions.

## Install

```bash
npm install spam-classifier
```

## Usage

```typescript
import { createClassifier } from "spam-classifier";

// Set up once
const isSpam = createClassifier({
  apiKey: process.env.OPENROUTER_API_KEY!,
});

// Use anywhere - returns true/false
if (await isSpam("Need a quote for your services")) {
  // spam - ignore it
}

// Or get details
const result = await isSpam.details("Need a quote");
// { isSpam: false, confidence: 0.95, reason: "Customer requesting quote" }
```

## Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `apiKey` | string | **required** | API key |
| `model` | string | `"openai/gpt-4o-mini"` | Model to use |
| `baseUrl` | string | OpenRouter | API endpoint |
| `zdr` | boolean | `false` | Enable Zero Data Retention |

## Providers

Works with any OpenAI-compatible API:

```typescript
// OpenRouter (default)
const isSpam = createClassifier({ apiKey: process.env.OPENROUTER_API_KEY! });

// OpenAI directly
const isSpam = createClassifier({
  apiKey: process.env.OPENAI_API_KEY!,
  baseUrl: "https://api.openai.com/v1/chat/completions",
  model: "gpt-4o-mini",
});

// Local LLM
const isSpam = createClassifier({
  apiKey: "not-needed",
  baseUrl: "http://localhost:11434/v1/chat/completions",
  model: "llama3",
});
```

## Fail-Safe

Returns `false` (legitimate) if the API fails, so you never block real customers.

## Cost

~$0.0002 per classification. 10,000 submissions = ~$2.

## License

MIT
npm package: @noisim/tabvuelar
Description: Table for Vue.js and Laravel
Author: Alban Afmeti
Latest version: 1.0.4

## TabVueLar
> **Tab**les for **Vue**.js 2 and **Lar**avel 5+

## How To Use

Using this package you can build tables in the simplest way in a web app using [Laravel](https://laravel.com/) as back-end and [Vue](https://vuejs.org/) as a front-end framework.

Just run on the CLI:

`npm install @noisim/tabvuelar --save`

The package will be installed, and will be part of the `node_modules` directory.

Include [Font Awesome](http://fontawesome.io/) and [Bootstrap 3](https://getbootstrap.com/docs/3.3/) into the project so it will have a nice look.

Import the package:

```js
import TabVueLar from '@noisim/tabvuelar';
```

Use it:

```js
import Vue from 'vue';
import TabVueLar from '@noisim/tabvuelar';

Vue.use(TabVueLar);
```

Here is an example project [Tabvuelar Example Project](https://github.com/albanafmeti/tabvuelar-example-proj) and here is an online demo [tabvuelar.techalin.com](http://tabvuelar.techalin.com/).

Have fun!