open-index/open-npm huggingface dataset:
npm package: @hrefcl/moment-adapter
Description: Angular Material Moment Adapter
Author: HO Hong Quan
Latest version: 21.0.0

# NgxMatMomentAdapter

## Description

Moment Adapter for [@hrefcl/datetime-picker](https://www.npmjs.com/package/@hrefcl/datetime-picker)

## Getting started

```
npm install --save  @hrefcl/moment-adapter
```

## Setup

```
import { NgxMatMomentModule } from '@hrefcl/moment-adapter';
@NgModule({
   ...
   imports: [
      NgxMatMomentModule,
      NgxMatDatetimePickerModule,
   ],
   ...
})
export class AppModule { }
```

## License

MIT
npm package: @hreflang-checker/cypress
Description: Check your hreflang implementation using cypress
Latest version: 1.0.0


# hreflang-checker (WIP)

Easily check your hreflangs are valid using Cypress


## Installation

```bash
npm install @hreflang-checker/cypress
```

```ts
// cypress/support/commands.js
import '@hreflang-checker/cypress';
```
## Usage/Examples

```typescript
cy.validateHreflang();
```
npm package: @hreflang-checker/playwright
Description: Check your hreflang implementation using playwright
Author: Benjamin Pickford
Latest version: 1.0.0


# hreflang-checker

Easily check your hreflangs are valid using Playwright


## Installation

```bash
npm install @hreflang-checker/playwright
```

```ts
// playwright.config.ts
import '@hreflang-checker/playwright';
```
## Usage/Examples

```typescript
test(`hreflang for https://myurl.com is valid`, async ({ page }) => {
    await page.goto('https://myurl.com');
    await expect(page).toHaveValidHreflangs();
});
```
npm package: @hregibo/bunyan-discord
Description: Discord Webhook bridge for Bunyan logger
Author: Hugo Regibo
Latest version: 1.0.0

# Bunyan-discord

_ A simple port of the bunyan logging system to use Discord's Webhooks_

## Installation

Using NPM, you can install bunyan-discord by using this command:

    npm i -s @hregibo/bunyan-discord

or simply clone this project and require it in your project.

## Usage

Before declaring your Bunyan instance, create a new instance of bunyan-discord:

```javascript
const BunyanDiscord = require("@hregibo/bunyan-discord");
const discordReporter = new BunyanDiscord({
    // Your bot avatar, defaults to the one set on the Webhook
    botAvatarUrl: "https://i.imgur.com/2rHccsR.png",
    // Your bot name, defaults to the one set on the Webhook
    botUsername: "Log Reporter",
    // Eventually, customize the message, to include a @everyone for example
    // By default, the message is "Hey @here - New log is available"
    message: "Hey there @everyone ; looks like we failed somewhere!",
    // The webhook uri that you obtained when creating your discord webhook
    webhookUrl: "https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token}",
}, (err) => {
    console.error("Error: ", err);
});
```

then, when creating your bunyan logger instance, just give the created variable as a stream
```javascript
const log = bunyan.createLogger({
    name: 'discordLogging',
    streams: [
        {stream: discordReporter, level: "error", type: "raw"},
    ],
});
```

and that's it ! Your logger now can send any log matching the level requirement to your discord channel!

If you execute our example (in example.js) you'd get something like this:

![img](https://i.imgur.com/7reWbTQ.png)


## Todo

* Add a typescript support, and a @types
* Allow full customization of the webhook, by adding any extra value given by the user

## Contributing

Simply do a merge request with the feature, and i'll do my best to check it and approve it hopefully!
npm package: @hregibo/require-env
Description: A simple tool to require mandatory environment variable in your Javascript/Typescript project
Author: Hugo Regibo
Latest version: 0.1.2

# require-env

A simple library that forces the specific environment variable to be present in order to continue execution.
If the environment variable is not set, it will throw an error. It is then up to you to capture it or not.

# Planning

[ ] Make the library load automatically `.env` and other files to not depend on any other library related to environment variables.
npm package: @hreimer/ngx-hover-opacity
Description: This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.0.0.
Author: hreimer
Latest version: 0.14.1

# NgxHoverOpacity

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

## Code scaffolding

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

> Note: Don't forget to add `--project ngx-hover-opacity` or else it will be added to the default project in your `angular.json` file.

## Build

Run `ng build ngx-hover-opacity --configuration production` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build ngx-hover-opacity --configuration production`, go to the dist folder `cd dist/ngx-hover-opacity` and run `npm publish ./ --access public`.

## Running unit tests

Run `ng test ngx-hover-opacity` 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: @hretief/tiny
Description: Removes all spaces from a string
Latest version: 2.1.0

# @hretief/tiny

[![npm (scoped)]
(https://img.shields.io/npm/v/@hretief/tiny.svg)]
(https://github.com/hretief/tiny)
[![npm bundle size (minified)]
(https://img.shields.io/bundlephobia/min/@hretief/tiny.svg)]
(https://github.com/hretief/tiny)

My tiny npm module
npm package: @hrfee/simpletemplate
Description: simple text templater for either typescript or go
Author: Harvey Tindall
Latest version: 1.1.0

# simple-template
[![Go Reference](https://pkg.go.dev/badge/github.com/hrfee/simple-template.svg)](https://pkg.go.dev/github.com/hrfee/simple-template)

simple templater for templates written by an end user. see godoc for more info.

## todo

- [x] Implement else/else if
- [ ] Duplicate implementation in Typescript

## rough perf comparison

just for fun, not scientific. by suffix:
* "": This library
* "Old": Old version (-tags oldimpl)
* "BuiltinOnDemand": text/template with equivalent logic, template compile time included (-tags comparebuiltin)
* "BuiltinPrecompiled": text/template with equivalent logic, template compile time excluded (-tags comparebuiltin)
```
```
goos: linux
goarch: amd64
pkg: github.com/hrfee/simple-template
cpu: Intel(R) Core(TM) Ultra 9 185H
BenchmarkBlankTemplateBuiltinOnDemand-22          	1017019	     1169 ns/op
BenchmarkConditionalTrueBuiltinOnDemand-22        	 193219	     6022 ns/op
BenchmarkConditionalFalseBuiltinOnDemand-22       	 190468	     6045 ns/op
BenchmarkBlankTemplateBuiltinPrecompiled-22       	10806879	      105.6 ns/op
BenchmarkConditionalTrueBuiltinPrecompiled-22     	 925048	     1081 ns/op
BenchmarkConditionalFalseBuiltinPrecompiled-22    	 743378	     1389 ns/op
BenchmarkBlankTemplateOld-22                      	8661529	      138.0 ns/op
BenchmarkConditionalTrueOld-22                    	1698522	      706.5 ns/op
BenchmarkConditionalFalseOld-22                   	3465555	      343.9 ns/op
BenchmarkBlankTemplate-22                         	4308925	      285.0 ns/op
BenchmarkConditionalTrue-22                       	1549011	      765.8 ns/op
BenchmarkConditionalFalse-22                      	2028720	      595.1 ns/op
PASS
ok  	github.com/hrfee/simple-template	13.895s
```
npm package: @hrfmartins/ip
Description: [![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)
Author: Fedor Indutny
Latest version: 2.0.1

# IP  
[![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)  

IP address utilities for node.js

## Installation

###  npm
```shell
npm install ip
```

### git

```shell
git clone https://github.com/indutny/node-ip.git
```
  
## Usage
Get your ip address, compare ip addresses, validate ip addresses, etc.

```js
var ip = require('ip');

ip.address() // my ip address
ip.isEqual('::1', '::0:1'); // true
ip.toBuffer('127.0.0.1') // Buffer([127, 0, 0, 1])
ip.toString(new Buffer([127, 0, 0, 1])) // 127.0.0.1
ip.fromPrefixLen(24) // 255.255.255.0
ip.mask('192.168.1.134', '255.255.255.0') // 192.168.1.0
ip.cidr('192.168.1.134/26') // 192.168.1.128
ip.not('255.255.255.0') // 0.0.0.255
ip.or('192.168.1.134', '0.0.0.255') // 192.168.1.255
ip.isPrivate('127.0.0.1') // true
ip.isV4Format('127.0.0.1'); // true
ip.isV6Format('::ffff:127.0.0.1'); // true

// operate on buffers in-place
var buf = new Buffer(128);
var offset = 64;
ip.toBuffer('127.0.0.1', buf, offset);  // [127, 0, 0, 1] at offset 64
ip.toString(buf, offset, 4);            // '127.0.0.1'

// subnet information
ip.subnet('192.168.1.134', '255.255.255.192')
// { networkAddress: '192.168.1.128',
//   firstAddress: '192.168.1.129',
//   lastAddress: '192.168.1.190',
//   broadcastAddress: '192.168.1.191',
//   subnetMask: '255.255.255.192',
//   subnetMaskLength: 26,
//   numHosts: 62,
//   length: 64,
//   contains: function(addr){...} }
ip.cidrSubnet('192.168.1.134/26')
// Same as previous.

// range checking
ip.cidrSubnet('192.168.1.134/26').contains('192.168.1.190') // true


// ipv4 long conversion
ip.toLong('127.0.0.1'); // 2130706433
ip.fromLong(2130706433); // '127.0.0.1'
```

### License

This software is licensed under the MIT License.

Copyright Fedor Indutny, 2012.

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: @hrfmartins/ip-non-vuln
Description: [![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)
Author: Fedor Indutny
Latest version: 2.0.1

# IP  
[![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)  

IP address utilities for node.js

## Installation

###  npm
```shell
npm install ip
```

### git

```shell
git clone https://github.com/indutny/node-ip.git
```
  
## Usage
Get your ip address, compare ip addresses, validate ip addresses, etc.

```js
var ip = require('ip');

ip.address() // my ip address
ip.isEqual('::1', '::0:1'); // true
ip.toBuffer('127.0.0.1') // Buffer([127, 0, 0, 1])
ip.toString(new Buffer([127, 0, 0, 1])) // 127.0.0.1
ip.fromPrefixLen(24) // 255.255.255.0
ip.mask('192.168.1.134', '255.255.255.0') // 192.168.1.0
ip.cidr('192.168.1.134/26') // 192.168.1.128
ip.not('255.255.255.0') // 0.0.0.255
ip.or('192.168.1.134', '0.0.0.255') // 192.168.1.255
ip.isPrivate('127.0.0.1') // true
ip.isV4Format('127.0.0.1'); // true
ip.isV6Format('::ffff:127.0.0.1'); // true

// operate on buffers in-place
var buf = new Buffer(128);
var offset = 64;
ip.toBuffer('127.0.0.1', buf, offset);  // [127, 0, 0, 1] at offset 64
ip.toString(buf, offset, 4);            // '127.0.0.1'

// subnet information
ip.subnet('192.168.1.134', '255.255.255.192')
// { networkAddress: '192.168.1.128',
//   firstAddress: '192.168.1.129',
//   lastAddress: '192.168.1.190',
//   broadcastAddress: '192.168.1.191',
//   subnetMask: '255.255.255.192',
//   subnetMaskLength: 26,
//   numHosts: 62,
//   length: 64,
//   contains: function(addr){...} }
ip.cidrSubnet('192.168.1.134/26')
// Same as previous.

// range checking
ip.cidrSubnet('192.168.1.134/26').contains('192.168.1.190') // true


// ipv4 long conversion
ip.toLong('127.0.0.1'); // 2130706433
ip.fromLong(2130706433); // '127.0.0.1'
```

### License

This software is licensed under the MIT License.

Copyright Fedor Indutny, 2012.

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: @hrgui/bunyan-cloud-logging-stdout-format
Description: Formats Bunyan logs that output to stdout to be easily picked up by Google Cloud Logging.
Author: Harman
Latest version: 1.2.0

# @hrgui/bunyan-cloud-logging-stdout-format

Formats Bunyan logs that output to stdout to be easily picked up by Google Cloud Logging.

# Quickstart

```
npm install @hrgui/bunyan-cloud-logging-stdout-format
```

```js
const {
  CloudLoggingStream,
} = require("@hrgui/bunyan-cloud-logging-stdout-format");
const bunyan = require("bunyan");

const logger = bunyan.createLogger({
  name: "myapp",
  streams: [new CloudLoggingStream().stream("info")],
});

logger.info("hello world");
```

```bash
{"timestamp":"2020-09-22T06:58:46.564Z","severity":"INFO","name":"myapp","hostname":"harman-comp.local","pid":20499,"level":30,"time":"2020-09-22T06:58:46.564Z","v":0,"message":"hello world"}
```

## bunyan-cli doesn't work.

This is because Cloud Logging prefers `message` over `msg`. This module supports writing to both `message` and `msg` via flag called `bunyanReadable`.

### Example

```js
const {
  CloudLoggingStream,
} = require("@hrgui/bunyan-cloud-logging-stdout-format");
const bunyan = require("bunyan");

const logger = bunyan.createLogger({
  name: "myapp",
  streams: [new CloudLoggingStream({ bunyanReadable: true }).stream("info")],
});

logger.info("hello world");
```

```bash
node index.js | bunyan
[2020-09-22T07:19:05.642Z]  INFO: myapp/21716 on harmans-comp.local: hello world (timestamp=2020-09-22T07:19:05.642Z, severity=INFO, message="hello world")
```

Note that to support both Cloud Logging and bunyan, "hello world" was printed to both `msg` and `message`.

# What's the difference between @google-cloud/logging-bunyan and this?

- https://github.com/googleapis/nodejs-logging-bunyan writes to Google Cloud Logging directly.
- `@hrgui/bunyan-cloud-logging-stdout-format` does not. It writes directly to stdout and formats it as per https://cloud.google.com/logging/docs/structured-logging

- https://github.com/googleapis/nodejs-logging-bunyan requires Cloud Log Writer Role since it writes to Google Cloud Logging directly
- `@hrgui/bunyan-cloud-logging-stdout-format` requires whatever is writing to STDOUT to eventually arrive at Cloud Logging. Example: Google Kubernetes Engine: https://cloud.google.com/blog/products/management-tools/using-logging-your-apps-running-kubernetes-engine
npm package: @hrgui/classy-components
Description: Creates React components with specified CSS classes
Author: Harman Goei
Latest version: 0.1.3-alpha.1

# @hrgui/classy-components

This is a forked copy of [sk22/classy-components](https://github.com/sk22/classy-components.js). Please see for original changes and manual.

This has a couple of additional bugfixes and additional features described below, and is under the @hrgui alias.

## Installation

```bash
yarn install @hrgui/classy-components
```

## Bugfixes

### Standard function notation
```jsx
const Button = classy.button('btn');
// => <button class="btn">

const PrimaryButton = classy(Button)('btn-primary');
// => <button class="btn btn-primary">
```

would return `b t b t` previously. Now it returns `btn btn-primary`

## Additional features

### Created component can have props.className as an added class

Before:
```jsx
const Button = classy.button('btn');
// => <button class="btn">
<Button className="hello"></Button>
// => <button class="hello">
```

After:
```jsx
const Button = classy.button('btn');
// => <button class="btn">
<Button className="hello btn"></Button>
// => <button class="hello btn">
```

### Interpolation through tagged literals w/ functions (combines features from [@memphju/classed-components](https://github.com/mephju/classed-components/))

```jsx
const Button = classy.button`green ${props => props.className}`

<Button className="hello btn"></Button>
// => <button class="green hello btn">
```

## References
- [sk22/classy-components](https://github.com/sk22/classy-components.js)
- [@memphju/classed-components](https://github.com/mephju/classed-components/)
npm package: @hrgui/libass-wasm-ts
Description: Adds types for [libass-wasm](https://github.com/libass/JavascriptSubtitlesOctopus).
Latest version: 1.0.3
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @hrgui/libass-wasm-ts
Adds types for [libass-wasm](https://github.com/libass/JavascriptSubtitlesOctopus). 

This isn't the traditional way though, and it is temporary for the time being before it lands as a `@types` package.

# Usage
```
npm i @hrgui/libass-wasm
```

Since this isn't a `@types` package, this requires adding the types via the following way in tsconfig.json:

```json
"types": ["@hrgui/libass-wasm-ts"]
```