open-index/open-npm huggingface dataset:
npm package: @petrmiko/konteiner
Description: Simple DI container for node.js applications
Author: Petr Miko
Latest version: 2.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# konteiner - simple zero-dependencies DI container for node.js apps

> [!WARNING]  
> This package is no longer maintained and will not receive further updates.

[![Build Status](https://travis-ci.com/petrmiko/konteiner.svg?branch=master)](https://travis-ci.com/petrmiko/konteiner)
[![Coverage Status](https://coveralls.io/repos/github/petrmiko/konteiner/badge.svg)](https://coveralls.io/github/petrmiko/konteiner)

This module provides you means to:
- register desired instantiable modules (functions, classes) to DI container
- use the initialized dependencies in modules by obtaining them via getter on Konteiner instance, that is provided via constructor/parent function
- having the modules initialized in lazy manner, ie. on first konteiner.get call

## Usage

- Install the dependency
	`npm i --save @petrmiko/konteiner@latest`
- In JS code
```
const Konteiner = require('@petrmiko/konteiner')

const konteiner = new Konteiner()

// first we need to have some instance creators, here functions
const Logger = () => console
const Messenger = /** @type {Konteiner} */ (konteiner) => {
	const logger = konteiner.get(Logger)
	return {
		sendMessage(text) { logger.log(text) }
	}
}
// following lines will just register dependencies, init is made upon first get for affected dependencies
konteiner.register(Logger)
konteiner.register(Messenger)

const messenger = konteiner.get(Messenger) // this will actually invoke the constructor of Messenger (and Logger, since it is a dependency of demoMessenger)
messenger.sendMessage('Hello world!') // console.log will print out 'Hello world!'
```

If you want to load all dependencies in an directory, you can also do following.
```
const Konteiner = require('@petrmiko/konteiner')
const konteiner = new Konteiner({exclude: [
	'\\.test\\.' // all test files will be omitted from batch loading using .registerPath
]})

konteiner.registerPath('./src', {exclude: [
	'\\.test\\.',
	'index\\.js'
]}) // all but tests and index.js will be loaded. Overrides exclude from constructor for this call only

// then in place of use we need to know, what dependency creator was used to retrieve its instance
const Service = require('./src/service')

const someService = konteiner.get(Service) // all dependencies bound to Service will be now initialized
...
```

For more details, see [API section](./docs/api.md).
npm package: @petro-kushchak/homebridge-ch-ac-globals
Description: Cooper&Hunter AC plugin for Homebridge (Homekit) with Data Sharing over globals
Latest version: 0.0.6

# Cooper&Hunter AC plugin for Homebridge 

This plugins is based on https://github.com/norberttech/homebridge-ch-ac

Should work with all Cooper&Hunter AC controlled by EWPE Smart APP. 

## Requirements 
- NodeJS (>=8.9.3) with NPM (>=6.4.1)

For each AC device you need to add an accessory and specify the IP address of the device. 
Some of Cooper&Hunter AC does not provide current temperature information, so this plugin allows to fetch this data from another Homebridge plugin using "globals" dictionary

## Usage Example:
```
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "123-45-568"
    },
    "accessories": [
        {
            "accessory": "CooperHunterAC",
            "host": "192.168.1.X",
            "name": "Bedroom AC",
            "serial": "ch-00-00-01",
            "model": "CH-S09FTXE WIFI",
            "globalsTemperaturePath": "Mi/Humidifier/6/values/0/characteristic/value",
            "updateInterval": 10000
        },
        {
            "accessory": "CooperHunterAC",
            "host": "192.168.1.Y",
            "name": "Living room AC",
            "serial": "ch-00-00-02",
            "model": "CH-S09FTXE WIFI",
            "globalsTemperaturePath": "Mi/Humidifier2/6/values/0/characteristic/value",
            "updateInterval": 10000
        }
    ]
}
```

Example path "Mi/Humidifier/6/values/0/characteristic/value" here is value of temperature sensor written by homebridge-mi-humidifier-globals plugin for model deerma.humidifier.mjjsq (depends on humidifier model)

## C&H AC communication protocol 

Communication protocol for C&H AC is the same as for [GreeSmart](https://play.google.com/store/apps/details?id=com.gree.smarthome). 
It is described in open source project [Gree Remote](https://github.com/tomikaa87/gree-remote#protocol-details).
npm package: @petro-kushchak/homebridge-ch-ac-ts
Description: Cooper&Hunter AC plugin for Homebridge (Homekit) with Web Hook Data Sharing 
Latest version: 1.0.17


<p align="center">

<img src="https://github.com/homebridge/branding/raw/master/logos/homebridge-wordmark-logo-vertical.png" width="150">

</p>

# Cooper&Hunter AC plugin for Homebridge


This plugin is based on https://github.com/norberttech/homebridge-ch-ac

Should work with all Cooper&Hunter AC controlled by EWPE Smart APP. 

## Requirements 
- NodeJS (>=8.9.3) with NPM (>=6.4.1)

For each AC device you need to add an accessory and specify the IP address of the device. 
Some of Cooper&Hunter AC does not provide current temperature information, so this plugin allows to fetch this data from another Homebridge plugin using "globals" dictionary

## AC room temperature
Some of Cooper&Hunter ACs are not exposing room temperature over APIs, so there is a need to provide AC temperature from other source.

## Endpoint for AC temperature
This plugin supports temperature updates from http web hook. You can enable HomeKit automation to send room temperature sensor information.
Once plugin is started, it starts http server with port httpPort. Currently plugin supports URL (example with Homebridge Raspberry Pi setup and default httpPort: 4567):
```
GET http://homebridge.localhost:4567/temp/21.5%32%C
```

## Eve app temperature history

- AC temperature updates are stored using fakegato lib, so when open AC accessory with Eve app its possible to see AC temperature change history
- when AC accessory starts it tries to read last logged temperature from fakegato lib storage

Fakegato  open source project [fakegato-history](https://github.com/simont77/fakegato-history). 



## Usage Example:
```
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "123-45-568"
    },
    "accessories": [
        {
            "accessory": "CooperHunterAC",
            "host": "192.168.1.X",
            "name": "Bedroom AC",
            "serial": "ch-00-00-01",
            "model": "CH-S09FTXE WIFI",
            "httpPort": 4567,
            "updateInterval": 10000
        },
        {
            "accessory": "CooperHunterAC",
            "host": "192.168.1.Y",
            "name": "Living room AC",
            "serial": "ch-00-00-02",
            "model": "CH-S09FTXE WIFI",
            "httpPort": 4567,
            "updateInterval": 10000
        }
    ]
}
```

## C&H AC communication protocol 

Communication protocol for C&H AC is the same as for [GreeSmart](https://play.google.com/store/apps/details?id=com.gree.smarthome). 
It is described in open source project [Gree Remote](https://github.com/tomikaa87/gree-remote#protocol-details).
npm package: @petro-kushchak/homebridge-irrigation-eve
Description: Irrigation System with Eve water consumption history
Latest version: 1.0.13


<p align="center">

<img src="https://github.com/homebridge/branding/raw/master/logos/homebridge-wordmark-logo-vertical.png" width="150">

</p>

# Virtual Irrigation plugin for Homebridge with Eve watering history



## Requirements 
- NodeJS (>=8.9.3) with NPM (>=6.4.1)

## Endpoint for watering log
This plugin supports temperature updates from http web hook. You can enable HomeKit automation to send watering status information.
Once plugin is started, it starts http server with port httpPort. Currently plugin supports URL (example with Homebridge Raspberry Pi setup and default httpPort: 5678):
```
GET http://homebridge.localhost:5678/watering/1
```

## Eve app usage history

- usage updates are stored using fakegato lib, so when open irrigation accessory with Eve app its possible to see watering  history

Fakegato  open source project [fakegato-history](https://github.com/simont77/fakegato-history). 



## Usage Example:
```
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "123-45-568"
    },
    "accessories": [
        {
            "accessory": "VirtualIrrigationEve",
            "name": "Virtual Irrigation System",
            "httpPort": 5678,
        }
    ]
}
```
npm package: @petrocloud/angular-dayparts
Description: Angular directive for select hours in a week
Author: https://github.com/petrocloud
Latest version: 0.2.9

# Angular Dayparts

Angular directive for select hours in a week.




## Screenshots
Sample 1
![Sample](sample1.png)
Sample 2
![Sample](sample2.png)


## Usage
Include the module in your app

```javascript
angular.module('myapp', ['angular-dayparts'])
```


Configure the directive inside the controller

```javascript
$scope.options = {
    // Reset button
    reset: true, // default false
    
    // Event triggered when selecting a cell
    onChange: function(selected) {
        console.log('selected: ', selected)
    },
    
    // Prepopulated cells
    selected: ['monday-14', 'monday-15', 'monday-15.5'], // monday 2:00 pm, monday 3:00 pm, monday 3:30 pm
    
    // When true clicking on the day name it will select the entire row
    disableRowSelection: true, // default false
    
    // When true clicking on the hour it will select the entire columns
    disableColumnSelection: true // default false,

    // Reverses x and y axis so time goes from left to right and day goes top to bottom (i.e. sample1 is `reverse: true`) 
    reverse: true, // default false

    // adds "midnight" and "noon" labels to 12:00 am and 12:00 pm times.
    twelveOClockLabel: true // default false
};
```


Call the directive from your page

```html
<angular-dayparts options="options"></angular-dayparts>
```

## Demo
Install dependencies:
`npm install`

Compile:
`gulp`

Run web server in at the root
example:
```
- cd angular-dayparts
- http-server
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8080
  http://localhost:8080
Hit CTRL-C to stop the server
```



## License

Released under the terms of MIT License.
npm package: @petrocloud/sails-rigger
Description: A reliable callback handler for loading an external Sails.js app via require()
Author: Travis Webb
Latest version: 0.12.0

sails-rigger
==================

[![Build Status](https://travis-ci.org/petrocloud/sails-rigger.svg)](https://travis-ci.org/petrocloud/sails-rigger)

> Original Sails Rigger appears to be no longer maintained

A reliable callback handler for loading an external Sails.js app via require()

## Install

```sh
$ npm install sails-rigger --save
```

```js
var rigger = require('sails-rigger');
var app = require('petrocloud/sails-sample');
```

## Usage

```js
rigger.lift(app, function (sails) {
  // sails.models, sails.controllers, etc. are available here
});

```

To make the unit tests work, go to node_modules/@petrocloud/sails-sample and run ```npm install``` from there
npm package: @petrocloud/skipper-s3
Description: Stream file uploads, downloads, and transloads to and from S3.  Plus some other utilities like `rm` and `ls`.
Author: Mike McNeil
Latest version: 0.6.2

# [<img title="skipper-s3 - S3 adapter for Skipper" src="http://i.imgur.com/P6gptnI.png" width="200px" alt="skipper emblem - face of a ship's captain"/>](https://github.com/balderdashy/skipper-s3) S3 Blob Adapter

[![NPM version](https://badge.fury.io/js/skipper-s3.png)](http://badge.fury.io/js/skipper-s3) &nbsp; &nbsp;
[![Build Status](https://travis-ci.org/balderdashy/skipper-s3.svg?branch=master)](https://travis-ci.org/balderdashy/skipper-s3)

S3 adapter for receiving [upstreams](https://github.com/balderdashy/skipper#what-are-upstreams). Particularly useful for handling streaming multipart file uploads from the [Skipper](https://github.com/balderdashy/skipper) body parser.


## Installation

```
$ npm install skipper-s3 --save
```

Also make sure you have skipper itself [installed as your body parser](http://sailsjs.com/documentation/concepts/Middleware?q=adding-or-overriding-http-middleware).  This is the default configuration in the [Sails framework](https://sailsjs.com).


## Usage

```javascript
req.file('avatar')
.upload({
  // Required
  adapter: require('skipper-s3'),
  key: 'thekyehthethaeiaghadkthtekey',
  secret: 'AB2g1939eaGAdesoccertournament',
  bucket: 'my_stuff',
  // Optional
  token: 'temporary_sts_creds',
  ACL: 'file_permission'
}, function whenDone(err, uploadedFiles) {
  if (err) {
    return res.serverError(err);
  }
  return res.ok({
    files: uploadedFiles,
    textParams: req.params.all()
  });
});
```


For more detailed usage information and a full list of available options, see the Skipper docs, especially the section on "[Uploading to S3](https://github.com/balderdashy/skipper#uploading-files-to-s3)".


## Contribute

See [ROADMAP.md](https://github.com/balderdashy/skipper-s3/blob/master/ROADMAP.md).

Also be sure to check out [ROADMAP.md in the Skipper repo](https://github.com/balderdashy/skipper/blob/master/ROADMAP.md).

To run the tests:

```sh
git clone git@github.com:balderdashy/skipper-s3.git
cd skipper-s3
npm install
KEY=your_aws_access_key SECRET=your_aws_access_secret BUCKET=your_s3_bucket npm test
```

Please don't check in your aws credentials :)


## License

**[MIT](./LICENSE)**
&copy; 2013, 2014-

[Mike McNeil](http://michaelmcneil.com), [Balderdash](http://balderdash.co) & contributors

See `LICENSE.md`.

This module is part of the [Sails framework](http://sailsjs.org), and is free and open-source under the [MIT License](http://sails.mit-license.org/).


![image_squidhome@2x.png](http://i.imgur.com/RIvu9.png)


[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/a22d3919de208c90c898986619efaa85 "githalytics.com")](http://githalytics.com/balderdashy/skipper-s3)
npm package: @petroglyph/core
Description: Core library for working with Personal Knowledge Management (PKM) systems. Fully compatible with Obsidian.
Latest version: 0.2.1

# @petroglyph/core

Core library for working with Personal Knowledge Management (PKM) systems. Fully compatible with Obsidian.

## Installation

```bash
bun add @petroglyph/core
# or
npm install @petroglyph/core
# or
pnpm add @petroglyph/core
```

## Usage

```ts
import { createCave } from '@petroglyph/core';
import { LocalFileSystem } from '@petroglyph/fs';
import { RemarkRenderer } from '@petroglyph/renderer/remark';

// createCave is async - builds index for Obsidian-style resolution
const cave = await createCave({
  fileSystem: new LocalFileSystem('path-to-your-folder'),
  renderer: new RemarkRenderer(), // optional
  autoRefresh: true // optional, auto-updates index on create/delete
});
```

## Features

### Notes

```ts
// List all notes
const notes = await cave.notes.listAll();

// Get note by path, wikilink, or name
const note = await cave.notes.get('Notes/my-note.md');
const note = await cave.notes.get('[[my-note]]');
const note = await cave.notes.get('my-note', { nearest: 'current-note' });

// Typed notes with Zod schemas
import { z } from 'zod';

const bookSchema = z.object({
  type: z.literal('book'),
  title: z.string(),
  author: z.string(),
});

const note = await cave.notes.typed(bookSchema).get('my-book');
// note.frontmatter is now typed according to the schema

// Search notes
const results = await cave.notes.search('search term');
```

### Files, Bases, and Canvases

```ts
// Files
const files = await cave.files.listAll();
const file = await cave.files.get('document.pdf');

// Bases
const bases = await cave.bases.listAll();
const base = await cave.bases.get('my-base.base');
const view = await cave.bases.render(base, 'view-name');

// Canvases
const canvases = await cave.canvases.listAll();
const canvas = await cave.canvases.get('my-canvas.canvas');
```

## API Reference

See the main [Petroglyph documentation](https://github.com/aitorllj93/petroglyph) for complete API reference.

## License

MIT
npm package: @petroglyph/fs
Description: File system adapters for Petroglyph. Provides LocalFileSystem and VirtualFileSystem implementations.
Latest version: 0.2.0

# @petroglyph/fs

File system adapters for Petroglyph. Provides `LocalFileSystem` and `VirtualFileSystem` implementations.

## Installation

```bash
bun add @petroglyph/fs
# or
npm install @petroglyph/fs
# or
pnpm add @petroglyph/fs
```

## Usage

### LocalFileSystem

```ts
import { LocalFileSystem } from '@petroglyph/fs';

const fs = new LocalFileSystem('/path/to/your/vault');

// Read a file
const content = await fs.readFile('note.md');

// Write a file
await fs.writeFile('note.md', '# My Note\n\nContent here');

// List directory
const entries = await fs.readdir('/path/to/directory');

// Watch for changes
const watcher = await fs.watch('/path/to/directory', (event) => {
  console.log('File changed:', event.path, event.type);
});
```

### VirtualFileSystem

```ts
import { VirtualFileSystem } from '@petroglyph/fs';

const fs = new VirtualFileSystem({
  'note.md': '# My Note\n\nContent',
  'folder/another.md': '# Another Note',
});

// Same API as LocalFileSystem
const content = await fs.readFile('note.md');
```

## Exports

This package provides multiple entry points:

- `@petroglyph/fs` - Main exports (types, errors, utilities)
- `@petroglyph/fs/local` - LocalFileSystem adapter
- `@petroglyph/fs/virtual` - VirtualFileSystem adapter

## API Reference

### IFileSystem

The base interface that all file system adapters implement:

```ts
interface IFileSystem {
  readFile(path: string): Promise<Uint8Array>;
  writeFile(path: string, content: Uint8Array): Promise<void>;
  readdir(path: string): Promise<DirEntry[]>;
  stat(path: string): Promise<FileStat>;
  mkdir(path: string, options?: MkdirOptions): Promise<void>;
  rmdir(path: string, options?: RmdirOptions): Promise<void>;
  unlink(path: string): Promise<void>;
  watch(path: string, callback: WatchCallback): Promise<Watcher>;
}
```

## License

MIT
npm package: @petroglyph/renderer
Description: Markdown renderers for Petroglyph. Supports Obsidian-flavored Markdown with wikilinks, callouts, and embeds.
Latest version: 0.2.0

# @petroglyph/renderer

Markdown renderers for Petroglyph. Supports Obsidian-flavored Markdown with wikilinks, callouts, and embeds.

## Installation

```bash
bun add @petroglyph/renderer
# or
npm install @petroglyph/renderer
# or
pnpm add @petroglyph/renderer
```

## Usage

### RemarkRenderer

The main renderer that supports Obsidian-flavored Markdown:

```ts
import { RemarkRenderer } from '@petroglyph/renderer/remark';
import { LocalFileSystem } from '@petroglyph/fs';

const fs = new LocalFileSystem('/path/to/vault');
const renderer = new RemarkRenderer({
  // Auto-configure with file system for wikilink resolution
  fileSystem: fs,
});

// Render markdown content
const result = await renderer.render('# My Note\n\n[[Link to other note]]');
console.log(result.content); // HTML output
console.log(result.metadata); // Extracted metadata
```

### RawContentRenderer

A simple renderer that returns raw content without processing:

```ts
import { RawContentRenderer } from '@petroglyph/renderer/raw';

const renderer = new RawContentRenderer();
const result = await renderer.render('# My Note\n\nContent');
console.log(result.content); // Raw markdown content
```

## Features

- **Wikilinks**: `[[note-name]]` resolved using nearest-neighbor logic
- **Embeds**: `![[image.png]]` resolved to file paths
- **Callouts**: `> [!note]` converted to styled HTML
- **GFM**: GitHub Flavored Markdown support
- **Custom plugins**: Extensible plugin system

## Exports

This package provides multiple entry points:

- `@petroglyph/renderer` - Main exports (types, errors, renderers)
- `@petroglyph/renderer/remark` - RemarkRenderer
- `@petroglyph/renderer/raw` - RawContentRenderer

## Plugins

The package includes several remark/rehype plugins:

- `remarkWikilink` - Parse and resolve wikilinks
- `remarkEmbed` - Parse and resolve embeds
- `remarkCallout` - Convert callouts to HTML
- `remarkHighlight` - Syntax highlighting

## License

MIT
npm package: @petroglyph/search
Description: Search engine for Petroglyph. Provides BM25-based full-text search for notes and content.
Latest version: 0.2.0

# @petroglyph/search

Search engine for Petroglyph. Provides BM25-based full-text search for notes and content.

## Installation

```bash
bun add @petroglyph/search
# or
npm install @petroglyph/search
# or
pnpm add @petroglyph/search
```

## Usage

### BM25Engine

```ts
import { BM25Engine } from '@petroglyph/search/bm25';

const engine = new BM25Engine();

// Index documents
await engine.index('doc1', 'This is a sample document about search');
await engine.index('doc2', 'Another document with different content');
await engine.index('doc3', 'Search functionality is important');

// Search
const results = await engine.search('search document');
// Returns: [{ id: 'doc1', score: ... }, { id: 'doc3', score: ... }, ...]

// Remove from index
await engine.remove('doc1');

// Clear index
await engine.clear();
```

### Integration with Petroglyph

The search engine is integrated into `@petroglyph/core`:

```ts
import { createCave } from '@petroglyph/core';
import { LocalFileSystem } from '@petroglyph/fs/local';
import { BM25SearchEngine } from '@petroglyph/search/bm25';

const cave = await createCave({
  fileSystem: new LocalFileSystem('/path/to/vault'),
  searchEngine: new BM25SearchEngine(),
});

// Search notes
const results = await cave.notes.search('search term');
```

## BM25 Algorithm

BM25 (Best Matching 25) is a ranking function used to estimate the relevance of documents to a given search query. It's widely used in information retrieval systems.

## Exports

This package provides multiple entry points:

- `@petroglyph/search` - Main exports (types, BM25Engine)
- `@petroglyph/search/bm25` - BM25Engine class

## License

MIT
npm package: @petrov.ro/form-renderer
Description: Configurable form renderer
Author: Roman Petrov
Latest version: 3.4.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

```
//    _____                                         _                    
//   |  ___|__  _ __ _ __ ___    _ __ ___ _ __   __| | ___ _ __ ___ _ __ 
//   | |_ / _ \| '__| '_ ` _ \  | '__/ _ \ '_ \ / _` |/ _ \ '__/ _ \ '__|
//   |  _| (_) | |  | | | | | | | | |  __/ | | | (_| |  __/ | |  __/ |   
//   |_|  \___/|_|  |_| |_| |_| |_|  \___|_| |_|\__,_|\___|_|  \___|_|   
//          
```

# Description
Configurable form renderer

# Installation
npm install @petrov.ro/form-renderer