open-index/open-npm huggingface dataset:
npm package: @namics/storybook-versions
Description: An express server which provides different versions of storybook
Author: Simon Mollweide
Latest version: 0.3.2

# Storybook versions [![npm](https://img.shields.io/npm/v/@namics/storybook-versions.svg)](https://www.npmjs.com/package/@namics/storybook-versions)

> An express server which provides different versions of storybook

## Install

`npm i -D @namics/storybook-versions`

## CLI

```
$ storybook-versions
```

### Options

`-c`, `--create`
Create a new version into storybook-versions by adding the path to the storybook-static directory

`-s`, `--src`
Source directory (default storybook-static-versions)

`-p`, `--port`
Port

## License
[MIT License](./LICENSE)
npm package: @namics/stylelint-config
Description: Shared stylelint config
Author: Merkle Inc.
Latest version: 3.0.0
Deprecated: Package no longer maintained. Use https://www.npmjs.com/package/@merkle-open/stylelint-config instead.

# Shared stylelint config [![npm](https://img.shields.io/npm/v/@namics/stylelint-config.svg)](https://www.npmjs.com/package/@namics/stylelint-config)

> reusable stylelint config for stylelint 14

## Usage

`npm install --save-dev stylelint@14 @namics/stylelint-config`

**stylelint.config.js**

```js
module.exports = require('@namics/stylelint-config');
```

**.stylelintignore**

```
node_modules/
src/shared/base/reset/css/yui/reset.css
```

**package.json**

```json
{
  "scripts": {
    "lint:css": "stylelint src/**/*.*ss"
  }
}
```

## We recommend to use stylelint together with lint-staged and husky

`npm install --save-dev husky lint-staged`

**package.json**

```json
{
  "scripts": {
    "lint:css": "stylelint src/**/*.*ss"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*.*ss": ["stylelint"]
  }
}
```

## License

[MIT License](./LICENSE)
npm package: @namics/test-suite
Description: jest test suite
Author: Simon Mollweide
Latest version: 0.1.3

# Test suite [![npm](https://img.shields.io/npm/v/@namics/test-suite.svg)](https://www.npmjs.com/package/@namics/test-suite)

> reusable and easy to use jest test suite

## Usage

`npm i -D @namics/test-suite`

This packages uses [jest](https://jestjs.io/) and [enzyme](http://airbnb.io/enzyme/) please read their documentations for details.
Most parts are copied from the [Create React App](https://github.com/facebook/create-react-app) unit test solution.

**package.json**

```json
  ...
  "scripts": {
    "test": "test-suite --coverage",
    "test:dev": "test-suite",
    ...
  },
  ...
```

## Collect Coverage

**package.json**

```json
"jest": {
  "collectCoverageFrom": [
	"src/**/*.{js|jsx|ts|tsx}",
	"!src/**/*.stories.{js|jsx|ts|tsx}",
	"!src/dev.ts",
	"!src/index.tsx"
  ]
},
```

allowed configurations:

| key                     | documentation                                                                |
|-------------------------|------------------------------------------------------------------------------|
| collectCoverageFrom     | https://jestjs.io/docs/en/configuration#collectcoveragefrom-array            |
| coverageReporters       | https://jestjs.io/docs/en/configuration#coveragereporters-array-string       |
| coverageThreshold       | https://jestjs.io/docs/en/configuration#coveragethreshold-object             |
| resetMocks              | https://jestjs.io/docs/en/configuration#resetmocks-boolean                   |
| resetModules            | https://jestjs.io/docs/en/configuration#resetmodules-boolean                 |
| snapshotSerializers     | https://jestjs.io/docs/en/configuration#snapshotserializers-array-string     |
| watchPathIgnorePatterns | https://jestjs.io/docs/en/configuration#watchpathignorepatterns-array-string |

## License
[MIT License](./LICENSE)
npm package: @namics/ts-config
Description: Shared configuration for Typescript
Author: Merkle Inc.
Latest version: 2.0.1
Deprecated: Package no longer maintained. Use https://www.npmjs.com/package/@merkle-open/ts-config instead.

# Shared typescript config [![npm](https://img.shields.io/npm/v/@namics/ts-config.svg)](https://www.npmjs.com/package/@namics/ts-config)

> Shared configuration for Typescript

## Usage

`npm install --save-dev typescript @namics/ts-config`

**tsconfig.json**

```json
{
  "extends": "@namics/ts-config"
}
```

## License

[MIT License](./LICENSE)
npm package: @namics/tslint-config
Description: Shared tslint config
Author: Namics AG
Latest version: 1.0.2
Deprecated: Package no longer supported. Use at your own risk.

# Shared tslint config [![npm](https://img.shields.io/npm/v/@namics/tslint-config.svg)](https://www.npmjs.com/package/@namics/tslint-config)

> reusable tslint config

## Usage

`npm i -D tslint @namics/tslint-config`

**tslint.json**

```json
{
  "defaultSeverity": "error",
  "extends": ["@namics/tslint-config"],
  "jsRules": {},
  "rules": {},
  "rulesDirectory": []
}
```

**package.json**

```json
  ...
  "scripts": {
    "lint:ts": "tslint 'src/**/*.{ts,tsx}'",
    ...
  },
  ...
```

## Usage with prettier

The [`tslint-config-prettier`](https://www.npmjs.com/package/tslint-config-prettier) npm package disables all conflicting rules that may cause such problems. Prettier takes care of the formatting whereas tslint takes care of all the other things.

`npm i -D tslint tslint-config-prettier @namics/tslint-config`


**tslint.json**

```json
{
  "defaultSeverity": "error",
  "extends": ["@namics/tslint-config", "tslint-config-prettier"],
  "jsRules": {},
  "rules": {},
  "rulesDirectory": []
}
```

**package.json**

```json
  ...
  "scripts": {
    "lint:ts": "tslint 'src/**/*.{ts,tsx}'",
    ...
  },
  ...
```

See [@namics/tslint-config](https://unpkg.com/@namics/tslint-config) on unpkg

## License
[MIT License](./LICENSE)
npm package: @namics/webpack-4-ts-config
Description: Shared webpack config
Author: Jan Nicklas
Latest version: 0.2.0

# Webpack 4 Typescript config [![npm](https://img.shields.io/npm/v/@namics/webpack-4-ts-config.svg)](https://www.npmjs.com/package/@namics/webpack-4-ts-config)

> reusable and easy to use webpack config

## Usage

`npm i -D webpack webpack-dev-server webpack-cli @namics/webpack-4-ts-config`

**webpack.config.js**

```js
module.exports = require('@namics/webpack-4-ts-config');
```

**package.json**

```json
  ...
  "scripts": {
    "start": "webpack-dev-server",
    "build": "webpack-cli --env production --mode production --config ./webpack.config.js",
    ...
  },
  "config": {
    "webpack-4-ts-config": {
      "port": 3003,
      "banner": "/* Build {date} */",
      "include": "@project",
      "i18nProductionDependency": "@project/i18n",
      "externalsPath": "./externals.json",
    }
  },
  ...
```

## License
[MIT License](./LICENSE)
npm package: @namigbit/config
Description: Configuration module with validation
Author: namig
Latest version: 0.0.7

# @namig/config

Конфигурация через декораторы с валидацией.

## Установка

```bash
npm install @namig/config class-validator reflect-metadata dotenv
```

## Использование

```typescript
import 'reflect-metadata';
import { Env, getConfig } from '@namig/config';
import { IsString, IsNumber, Min, Max } from 'class-validator';

class AppConfig {
  @Env('PORT', { type: 'number', default: 3000 })
  @IsNumber()
  @Min(1000)
  @Max(65535)
  port: number;

  @Env('DATABASE_URL')
  @IsString()
  databaseUrl: string;

  @Env('DEBUG', { type: 'boolean', default: false })
  debug: boolean;

  @Env('REDIS_CONFIG', { type: 'json', default: { host: 'localhost', port: 6379 } })
  redis: { host: string; port: number };

  @Env('ALLOWED_ORIGINS', { type: 'array', default: ['http://localhost:3000'] })
  allowedOrigins: string[];

  @Env('OPTIONAL_KEY', { optional: true })
  optionalKey?: string;
}

export const config = getConfig(AppConfig);
```

## API

### `@Env(key, options?)`

Декоратор для маппинга env переменной на свойство класса.

**Options:**

| Параметр | Тип | По умолчанию | Описание |
|----------|-----|--------------|----------|
| `type` | `'string' \| 'number' \| 'boolean' \| 'json' \| 'array'` | `'string'` | Тип преобразования |
| `default` | `any` | `undefined` | Значение по умолчанию |
| `optional` | `boolean` | `false` | Опциональная переменная |

### `getConfig<T>(ConfigClass)`

Создаёт и валидирует инстанс конфига.

- Читает `.env` файл через dotenv
- Трансформирует значения согласно `type`
- Валидирует через class-validator
- Выбрасывает ошибку если обязательная переменная отсутствует или валидация не прошла

## Типы преобразования

| Тип | ENV значение | Результат |
|-----|--------------|-----------|
| `string` | `"hello"` | `"hello"` |
| `number` | `"3000"` | `3000` |
| `boolean` | `"true"` / `"false"` | `true` / `false` |
| `json` | `'{"host":"localhost"}'` | `{ host: "localhost" }` |
| `array` | `"a, b, c"` | `["a", "b", "c"]` |

## Peer Dependencies

- `class-validator` ^0.14.0
- `dotenv` ^16.0.0
- `reflect-metadata` ^0.2.0
npm package: @namiruai/angular
Description: Angular wrapper for Namiru AI chat widget
Author: Namiru
Latest version: 1.16.0

# @namiruai/angular

Angular wrapper for the [Namiru.ai](https://namiru.ai) chat widget.

Namiru.ai lets you create AI-powered chat agents for your website in under 30 seconds. Paste your URL, and Namiru crawls your site to build a knowledge base. One line of code to embed.

**But customer support is only half the product.** The real value is in what happens after conversations:

- **Conversation intelligence** - The system monitors every chat and notifies you by email when users encounter issues, discover missing information, or report bugs. It gives you valuable insights into your customers' behavior.
- **Lead collection** - The chatbot collects name, email, phone, company (whatever you configure) during natural conversation. If someone didn't sign up because they hit a bug, you still have their contact info and can reach out to convert them.
- **Pain point detection** - Tracks recurring problems across all conversations, groups them by topic, and surfaces what matters most so you can fix issues fast.
- **AI summaries** - Every conversation is analyzed. You never have to read a single chat log.

## Installation

```bash
npm install @namiruai/angular
```

## Usage

### Import the Component

`NamiruChatComponent` is a standalone component -- import it directly in your module or component:

```typescript
import { NamiruChatComponent } from '@namiruai/angular';

@Component({
  standalone: true,
  imports: [NamiruChatComponent],
  template: `
    <namiru-chat
      [agentId]="'your-agent-id'"
      [position]="'bottom-right'"
    />
  `,
})
export class AppComponent {}
```

### Inline Mode

```html
<div style="width: 400px; height: 600px">
  <namiru-chat
    [agentId]="'your-agent-id'"
    [mode]="'inline'"
    [width]="'100%'"
    [height]="'100%'"
  />
</div>
```

### Inputs

| Input | Type | Description |
|-------|------|-------------|
| `agentId` | `string` | **Required.** Your Namiru agent ID. |
| `mode` | `'button' \| 'inline'` | Display mode. Default: `'button'`. |
| `position` | `'bottom-left' \| 'bottom-right'` | Button position. Default: `'bottom-right'`. |
| `width` | `string` | Width for inline mode. |
| `height` | `string` | Height for inline mode. |

## Requirements

Angular 15 or higher.

## Get your agent ID

1. Go to [namiru.ai](https://namiru.ai)
2. Paste your website URL
3. Your agent is ready in 30 seconds
4. Copy the agent ID from the dashboard

## Documentation

Full docs at [namiru.ai/docs/widgets](https://namiru.ai/docs/widgets).

## License

MIT
npm package: @namiruai/chat
Description: Namiru AI chat widget - standalone embeddable widget with Shadow DOM isolation
Author: Namiru
Latest version: 1.16.0

# @namiruai/chat

Standalone embeddable chat widget for [Namiru.ai](https://namiru.ai). Uses Shadow DOM for style isolation.

Namiru.ai lets you create AI-powered chat agents for your website in under 30 seconds. Paste your URL, and Namiru crawls your site to build a knowledge base. One line of code to embed.

**But customer support is only half the product.** The real value is in what happens after conversations:

- **Conversation intelligence** - The system monitors every chat and notifies you by email when users encounter issues, discover missing information, or report bugs. It gives you valuable insights into your customers' behavior.
- **Lead collection** - The chatbot collects name, email, phone, company (whatever you configure) during natural conversation. If someone didn't sign up because they hit a bug, you still have their contact info and can reach out to convert them.
- **Pain point detection** - Tracks recurring problems across all conversations, groups them by topic, and surfaces what matters most so you can fix issues fast.
- **AI summaries** - Every conversation is analyzed. You never have to read a single chat log.

## Recommended: Use the script tag

The simplest way to add Namiru to any website:

```html
<script src="https://namiru.ai/widget.js"></script>
<script>
  NamiruChat.init({ agentId: 'your-agent-id' });
</script>
```

## Or use a framework wrapper

For React, Vue, or Angular projects, use the dedicated wrapper instead of this package:

- **React**: `npm install @namiruai/react` - [@namiruai/react](https://www.npmjs.com/package/@namiruai/react)
- **Vue**: `npm install @namiruai/vue` - [@namiruai/vue](https://www.npmjs.com/package/@namiruai/vue)
- **Angular**: `npm install @namiruai/angular` - [@namiruai/angular](https://www.npmjs.com/package/@namiruai/angular)

## Configuration

| Option | Type | Description |
|--------|------|-------------|
| `agentId` | `string` | **Required.** Your Namiru agent ID. |
| `mode` | `'button' \| 'inline'` | Display mode. Default: `'button'`. |
| `position` | `'bottom-left' \| 'bottom-right'` | Button position. Default: `'bottom-right'`. |
| `width` | `string` | Width for inline mode. |
| `height` | `string` | Height for inline mode. |

## Get your agent ID

1. Go to [namiru.ai](https://namiru.ai)
2. Paste your website URL
3. Your agent is ready in 30 seconds
4. Copy the agent ID from the dashboard

## Documentation

Full docs at [namiru.ai/docs/widgets](https://namiru.ai/docs/widgets).

## License

MIT
npm package: @namiruai/react
Description: React wrapper for Namiru AI chat widget
Author: Namiru
Latest version: 1.16.0

# @namiruai/react

React wrapper for the [Namiru.ai](https://namiru.ai) chat widget.

Namiru.ai lets you create AI-powered chat agents for your website in under 30 seconds. Paste your URL, and Namiru crawls your site to build a knowledge base. One line of code to embed.

**But customer support is only half the product.** The real value is in what happens after conversations:

- **Conversation intelligence** - The system monitors every chat and notifies you by email when users encounter issues, discover missing information, or report bugs. It gives you valuable insights into your customers' behavior.
- **Lead collection** - The chatbot collects name, email, phone, company (whatever you configure) during natural conversation. If someone didn't sign up because they hit a bug, you still have their contact info and can reach out to convert them.
- **Pain point detection** - Tracks recurring problems across all conversations, groups them by topic, and surfaces what matters most so you can fix issues fast.
- **AI summaries** - Every conversation is analyzed. You never have to read a single chat log.

## Installation

```bash
npm install @namiruai/react
```

## Usage

### Floating Button (default)

```tsx
import { NamiruChat } from '@namiruai/react';

function App() {
  return (
    <NamiruChat
      agentId="your-agent-id"
      position="bottom-right"
    />
  );
}
```

### Inline Mode

```tsx
import { NamiruChat } from '@namiruai/react';

function App() {
  return (
    <div style={{ width: '400px', height: '600px' }}>
      <NamiruChat
        agentId="your-agent-id"
        mode="inline"
        width="100%"
        height="100%"
      />
    </div>
  );
}
```

### Props

| Prop | Type | Description |
|------|------|-------------|
| `agentId` | `string` | **Required.** Your Namiru agent ID. |
| `mode` | `'button' \| 'inline'` | Display mode. Default: `'button'`. |
| `position` | `'bottom-left' \| 'bottom-right'` | Button position. Default: `'bottom-right'`. |
| `width` | `string` | Width for inline mode. |
| `height` | `string` | Height for inline mode. |

## Get your agent ID

1. Go to [namiru.ai](https://namiru.ai)
2. Paste your website URL
3. Your agent is ready in 30 seconds
4. Copy the agent ID from the dashboard

## Documentation

Full docs at [namiru.ai/docs/widgets](https://namiru.ai/docs/widgets).

## License

MIT
npm package: @namiruai/vue
Description: Vue wrapper for Namiru AI chat widget
Author: Namiru
Latest version: 1.16.0

# @namiruai/vue

Vue 3 wrapper for the [Namiru.ai](https://namiru.ai) chat widget.

Namiru.ai lets you create AI-powered chat agents for your website in under 30 seconds. Paste your URL, and Namiru crawls your site to build a knowledge base. One line of code to embed.

**But customer support is only half the product.** The real value is in what happens after conversations:

- **Conversation intelligence** - The system monitors every chat and notifies you by email when users encounter issues, discover missing information, or report bugs. It gives you valuable insights into your customers' behavior.
- **Lead collection** - The chatbot collects name, email, phone, company (whatever you configure) during natural conversation. If someone didn't sign up because they hit a bug, you still have their contact info and can reach out to convert them.
- **Pain point detection** - Tracks recurring problems across all conversations, groups them by topic, and surfaces what matters most so you can fix issues fast.
- **AI summaries** - Every conversation is analyzed. You never have to read a single chat log.

## Installation

```bash
npm install @namiruai/vue
```

## Usage

### Floating Button (default)

```vue
<script setup>
import { NamiruChat } from '@namiruai/vue';
</script>

<template>
  <NamiruChat
    agent-id="your-agent-id"
    position="bottom-right"
  />
</template>
```

### Inline Mode

```vue
<script setup>
import { NamiruChat } from '@namiruai/vue';
</script>

<template>
  <div style="width: 400px; height: 600px">
    <NamiruChat
      agent-id="your-agent-id"
      mode="inline"
      width="100%"
      height="100%"
    />
  </div>
</template>
```

### Props

| Prop | Type | Description |
|------|------|-------------|
| `agent-id` | `string` | **Required.** Your Namiru agent ID. |
| `mode` | `'button' \| 'inline'` | Display mode. Default: `'button'`. |
| `position` | `'bottom-left' \| 'bottom-right'` | Button position. Default: `'bottom-right'`. |
| `width` | `string` | Width for inline mode. |
| `height` | `string` | Height for inline mode. |

## Get your agent ID

1. Go to [namiru.ai](https://namiru.ai)
2. Paste your website URL
3. Your agent is ready in 30 seconds
4. Copy the agent ID from the dashboard

## Documentation

Full docs at [namiru.ai/docs/widgets](https://namiru.ai/docs/widgets).

## License

MIT
npm package: @nammaplugin/autocomplete
Description: Auto Complete Dropdown
Author: Aravinda
Latest version: 1.2.0

# AutoComplete
[![NPM version][npm-version-image]][npm-url]
[![MIT License][license-image]][license-url]
[![CI][CI-image]][CI-url]

Auto Complete Dropdown

## Contents

- [Description](#description)
- [Demo](#demo)
- [Features](#features)
- [Setup](#setup)
- [Browsers](#browsers)
- [Support](#support)
- [License](#license)

## Description

Enables users to quickly find and select from a pre-populated list of values as they type, leveraging searching and filtering.

## Demo

<a href="https://codepen.io/techaravi/full/dyWpepr">Basic Example</a>

## Features

* Lightweight: 4 kB of JavaScript
* Searchable dropdown
* Callbacks

## Setup

Auto Complete Dropdown can be refere from CDN:

```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://autocomplete.pages.dev/autocomplete-bundle.min.css">
<script src="https://autocomplete.pages.dev/autocomplete-bundle.min.js"></script>
```

The Auto Complete Dropdown can then be initialized on the following way:

```js
$("#autocomplete").AutoComplete();
```

## Browsers

The autocomplete plugin is regularly tested with the latest browser versions and
supports the following minimal versions:

- Google Chrome
- Mozilla Firefox
- Microsoft Internet Explorer

## Support

This project is actively maintained, but there is no official support channel.  
If you have a question that another developer might help you with, please post
in Issues in GitHub.

## License

Released under the [MIT license](https://opensource.org/licenses/MIT).


### Version 1.0.0 beta - 2021/07/13

* First release

[npm-url]: https://www.npmjs.com/package/@nammaplugin/autocomplete
[npm-version-image]: https://badge.fury.io/js/%40nammaplugin%2Fautocomplete.svg
[license-image]: https://img.shields.io/github/license/techaravi/AutoComplete
[license-url]: LICENSE
[CI-image]:https://github.com/techaravi/AutoComplete/actions/workflows/node.js.yml/badge.svg
[CI-url]:https://github.com/techaravi/AutoComplete/actions/workflows/node.js.yml
npm package: @namngo/client
Description: Javascript client framework for aergo
Author: aergo team and contributors
Latest version: 2.1.7

# @herajs/client

[![npm](https://img.shields.io/npm/v/@herajs/client.svg)](https://www.npmjs.com/package/@herajs/client) [![readthedocs](https://readthedocs.org/projects/herajs/badge/)](https://herajs.readthedocs.io/)

- [Documentation](https://herajs.readthedocs.io/)
- [Changelog](./CHANGELOG.md)

This package includes the API client and common classes and utils.

This package supports both Node.js and Web platforms. Please refer to the documentation how to select the platform.

## Quick start

```console
npm install @herajs/client
```

You can import the module both as CommonJS (require) and ES module (import).

```javascript
import AergoClient from '@herajs/client';
let aergo = new AergoClient();
aergo.blockchain().then(result => {
    console.log('Current state', result);
});
```

Note that this by default imports the Node.js version which is not compatible with browsers. If you target web browsers, either `import AergoClient from '@herajs/client/dist/herajs.js';` or create an alias in your bundler configuration. Many bundlers like Webpack automatically pick the browser version, so you don't need to configure anything.

You can also directly import the pre-built bundle in HTML using `<script src="herajs/dist/herajs.min.js"></script>` and use the global `herajs` variable.

## Contribute

### Setup

Clone this repository and run

```console
npm install
```

### Scripts

Run tests (requires a local Aergo node running in `--testmode`, listening on port `7845`).

```console
npm run test
```

Regenerate GRPC type definitions

```console
npm run grpc
```

Development build with auto-update

```console
npm run dev
```

Build all targets for distribution

```console
npm run build
```
npm package: @namnguyen.repl.it/nn-react
Description: A useful model for ReactJS
Author: namnguyen.repl.it@gmail.com
Latest version: 1.1.3

/**

import { ReduxPersistProvider } from '@namnguyen.repl.it/nn-model';
import storage from 'redux-persist/lib/storage';
import authReducer from './authReducer';
import userReducer from './userReducer';

function App() {
  return (
    <ReduxPersistProvider
      reducers={{ authReducer, userReducer }}
      persistConfig={{
        key: 'root',
        storage,
        whitelist: ['authReducer'],
      }}
      PersistGateProps={{ loading: <div>Loading...</div> }}
    >
      <Main />
    </ReduxPersistProvider>
  );
}

*/
npm package: @namnguyen.repl.it/nn-scheduler
Description: A scheduler module for NodeJS
Author: namnguyen.repl.it@gmail.com
Latest version: 2.0.0


## Example usage with timeout handling in actions
class MyAction {
    static longRunningAction() {
        return async () => {
            try {
                //console.log('Long running action started');
                await new Promise((resolve, reject) => {
                    const timeout = setTimeout(() => reject(new Error('Action timed out')), 90 * 1000);
                    setTimeout(() => {
                        clearTimeout(timeout);
                        resolve();
                    }, 120 * 1000);
                });
                //console.log('Long running action completed');
            } catch (error) {
                console.error(`Long running action failed: ${error}`);
                throw error;
            }
        };
    }

    static failingAction() {
        return async () => {
            try {
                //console.log('Failing action started');
                await new Promise((_, reject) => setTimeout(() => reject(new Error('Action failed')), 1000));
                //console.log('Failing action completed');
            } catch (error) {
                console.error(`Failing action failed: ${error}`);
                throw error;
            }
        };
    }
}

const scheduler = new Scheduler({
    logHandler: (msg) => //console.log(msg)
});

scheduler.schedule([
    { time: '07:15', action: MyAction.longRunningAction(), weekDays: ['*'] },
    { time: '09:15', action: MyAction.failingAction(), weekDays: [6, 1, 2, 3] },
]);

scheduler.interval([
    { interval: 60 * 1000, action: MyAction.longRunningAction(), weekDays: ['*'] },
    { interval: 60 * 1000, action: MyAction.failingAction(), weekDays: [2, 3, 4] },
]);


Using PM2 to manage tasks:
pm2 start scheduler.js --name scheduler
pm2 list
pm2 logs scheduler
pm2 stop scheduler
pm2 restart scheduler
pm2 delete scheduler