open-index/open-npm huggingface dataset:
npm package: @ferronrsmith/homebridge-hikvision
Description: \* README written from memory, please raise an issue if things are not working as expected.
Latest version: 1.2.1

# Homebridge Hikvision plugin

\* README written from memory, please raise an issue if things are not working as expected.

Homebridge plugin that connects to your HikVision NVR and exposes your cameras in Homebridge. The plugin is heavily based on excellent [homebridge-camera-ffmpeg](https://github.com/Sunoo/homebridge-camera-ffmpeg).

This plugin will automatically discover all cameras connected to your NVR and will expose them to homebridge. You will get access to stream video (including sound) directly from your home app, will get push notification with screenshots of the motion events - this needs to be configured in HikVision NVR and additionally in Home app under home settings - you will need to enable notifications.

## Installation

In order to use this plugin, you need to install `homebridge-camera-ffmpeg` and `homebridge-hikvision` as per below:

```bash
sudo npm install -g homebridge-camera-ffmpeg @ferronrsmith/homebridge-hikvision --unsafe-perm
```

## Configuration

To configure, add this to your `config.json` for homebridge under platforms node:

```json
{
  "platforms": [
    {
      "platform": "Hikvision",
      "host": "nvr-host",
      "port": 443,
      "username": "admin",
      "password": "very-secure-password"
    }
  ]
}
```

At this time, these are the only configuration options available. Once you've added the platform to your config, (re)start your homebridge instance, and configure your cameras on your iPhone or iPad, iOS will prompt you for each camera in your system.

## Enable notifications in HikVision NVR

The plugin does not detect motion itself, it responds to events generated by the NVR using HTTP Event API. The relevant code for this lives at https://github.com/node-packages/homebridge-hikvision/blob/master/src/HikvisionApi.ts#L73. 

You must set up notifications in the NVR configuration as per below screenshot:

![image](https://user-images.githubusercontent.com/47468/103291461-af287480-49e3-11eb-9db9-18708b35b3c3.png)

You might also find this YouTube video useful:

https://www.youtube.com/watch?v=-R_dtE9o9WI

[![Setup Notifications](https://img.youtube.com/vi/-R_dtE9o9WI/0.jpg)](https://www.youtube.com/watch?v=-R_dtE9o9WI)
npm package: @ferrugemjs/compile
Description: a node package to convert html template to Incremental DOM
Author: ferrugemjs
Latest version: 3.0.7

# @ferrugemjs/compile
a npm package to convert html to incremental dom


# @ferrugemjs/compile
ferrugemjs-node is a simple node package to converte template HTML engine to google incremental-DOM.

[![NPM](https://nodei.co/npm/@ferrugemjs/compile.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/@ferrugemjs/compile)

#### Install

'npm install @ferrugemjs/compile --save-dev'

#### Usage

```js
var ferrugemjs_compile = require('@ferrugemjs/compile');//import the plugin
// your code here!!
ferrugemjs_compile('<template><div>test</div></template>',<<options>>)
```

#### Options

```js	
	{
		templateExtension: ".html",
		env: "production" // default is "development"
	}
```

### Usage

```js
const fs = require("fs");
//import the plugin
const ferrugemjs_compile = require('@ferrugemjs/compile');

const filePath = "test/app/main-app.html";

fs.readFile(filePath, function (err, buf) {
    const compiledStr = ferrugemjs_compile(buf.toString(), {
        templateExtension: ".html",
        viewModel: "main-app",
        env: "production" // default is "development"
    })

    fs.writeFile(`${filePath}.js`, compiledStr, (err) => {
        if (err) console.log(err);
        console.log("Successfully Written to File.");
    });
});

```

## License

[MIT License](http://en.wikipedia.org/wiki/MIT_License)
npm package: @ferrugemjs/loader
Description: @ferrugemjs/loader is a simple webpack loader to converte template HTML engine to google incremental-DOM js
Author: ferrugemjs
Latest version: 3.0.6

## ferrugemjs-loader
ferrugemjs-node is a simple webpack loader to converte template HTML engine to google incremental-DOM js.

[![NPM](https://nodei.co/npm/ferrugemjs-loader.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/ferrugemjs-loader/)

#### Install

'npm install ferrugemjs-loader --save-dev'

#### Usage

``` js
//webpack.config.js 
module: {
    rules: [
        {
          test: /\.html$/
          ,loaders:[
		{ 
			loader: 'ferrugemjs-loader',
			options: {
				templateExtension:'.html', // default is '.html'
				env: 'production' // default is 'development'
			} 
		}
	   ]
        }
    ]
},
,resolve: {
    extensions: [".js",".html"]
    ,alias:{    		
    	"app":__dirname + '/src'
    	,"ferrugemjs":"ferrugemjs/dist/core"
    }    
}
```
to work with webpack there is 'ferrugemjs/platform' as a application bootstrapping.

``` typescript
import bootstrapper from "ferrugemjs/bootstrapper";
```
or

```typescript
import platform from "ferrugemjs/platform";
import init_app from "./init-app";
 
platform
    .bootstrap(init_app)
    .at(
        document.getElementById("init_app_id")
    );
```

## License

[MIT License](http://en.wikipedia.org/wiki/MIT_License)
npm package: @ferrugemjs/v3rtigo
Description: state management library for ferrugemjs applications
Author: ferrugemjavascript@gmail.com
Latest version: 3.0.7

# V3rtigo

V3rtigo is a state management library for [Ferrugemjs](https://ferrugemjs.github.io/home-page/) applications.

[![NPM](https://nodei.co/npm/@ferrugemjs/v3rtigo.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/@ferrugemjs/v3rtigo/)

### install

```
npm install v3rtigo --save
```

## usage

### create a store

eg. stores/count.js
``` javascript
import { Store } from '@ferrugemjs/v3rtigo';

class CountStore extends Store{
    constructor(){
        super();
        this.state = 1;
    }
    public increment(){
        this.setState( this.getState() + 1 );
    }
}

export default new CountStore();

```

### import store into component

eg. app/hello-world.js
``` javascript
import countStore from "../stores/count";

export class HelloWorld{
  get count(){
    return countStore.getState();
  }
  incrementHandler(){
    countStore.increment();
  }
  storeChangeHandler(){
    // react to change
  }
}

```

### connect-provider componente

eg. app/hello-world.html

``` xml
<template>
  <require from="@ferrugemjs/v3rtigo as v3r" type="namespace"/>
  <require from="../stores/count as countStore" type="script"/>
  <div>
    <h4>${this.count}</h4>
    <button click.trigger="this.incrementHandler"/>
    <v3r:connect-provider
      stores="${[countStore.default]}"
      store-change.handler="this.storeChangeHandler"
    />
  </div>
</template>
```

### With commonjs
``` js
const v3rtigo = require('@ferrugemjs/v3rtigo/dist/commonjs/store');

class CountStore extends v3rtigo.Store{
  
}
export default new CountStore();
```

- **stores** : a list of stores which will be connected (obrigatory).

### Store methods

#### dispatch
``` javascript
let payload = {desc: 'a basic info!'};
store.dispatch('storeMethod', payload);
store.dispatch({type: 'storeMethod' , payload});
```

#### subscribe
``` javascript
store.subscribe('storeMethod', payload => {
  console.log('subscribe working', payload);
});
```

#### unsubscribe
``` javascript
let unsub = store.subscribe('storeMethod', payload => {
  console.log('subscribe working once time ', payload);
  unsub();
});
```

#### emit (it's a store protected method)
``` javascript
...
  save(item){
    ...
    this.emit('item:saved', item);
  }
...
```