open-index/open-npm huggingface dataset:
npm package: @impactly/mcp-server
Description: MCP server for Impactly — manage tasks, projects, and comments from Claude Code
Latest version: 0.2.1

# @impactly/mcp-server

MCP server for [Impactly](https://getimpactly.com) — manage tasks, projects, and comments directly from Claude Code.

## Setup

### 1. Get an API key

Create an API agent in your Impactly workspace under **Team > API Agents**. Copy the API key (starts with `imp_`).

### 2. Configure Claude Code

Add to your `.mcp.json` (project-level) or `~/.claude/.mcp.json` (global):

```json
{
  "mcpServers": {
    "impactly": {
      "command": "npx",
      "args": ["-y", "@impactly/mcp-server"],
      "env": {
        "IMPACTLY_API_URL": "https://your-project.supabase.co/functions/v1/api/v1",
        "IMPACTLY_API_KEY": "imp_your_key_here"
      }
    }
  }
}
```

### 3. Restart Claude Code

The Impactly tools will be available in your next session.

## Tools

| Tool | Description |
|------|-------------|
| `create_task` | Create a task with title, description, project, priority |
| `list_tasks` | List tasks filtered by status, project, priority, assignee, due date |
| `get_task` | Get full task details by ID |
| `update_task` | Update title, status, priority, assignee, description |
| `complete_task` | Mark a task complete (with optional comment) |
| `search_tasks` | Full-text search across tasks |
| `list_projects` | List available projects |
| `add_comment` | Add a comment to a task |
| `list_comments` | List comments on a task |
| `get_activity_summary` | Activity summary — tasks created/completed in a time window |
| `sync_todos` | Generate a TODOS.md from Impactly task state |
| `manage_dependencies` | Add or remove blocker/dependent relationships |
| `list_dependencies` | List blockers and dependents for a task |

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `IMPACTLY_API_URL` | Yes | Your Impactly API endpoint |
| `IMPACTLY_API_KEY` | Yes | API key from your Impactly workspace |

## License

MIT
npm package: @impactobservatory/mapboxgl-draw-rectangle-drag
Description: A Mapbox GL Draw plugin to create a rectangle via click & drag
Author: Jesús Botella
Latest version: 1.0.2-a

# Mapbox GL Draw Rectangle Drag
A Mapbox GL Draw plugin to create a rectangle via click &amp; drag.

Based on [`thegisdev/mapbox-gl-draw-rectangle-mode`](https://github.com/thegisdev/mapbox-gl-draw-rectangle-mode) plugin code and [`CartoDB/mapboxgl-draw-rectangle-drag`](https://github.com/CartoDB/mapboxgl-draw-rectangle-drag)

This fork of the repository adds the ability to either drag or click to create a rectangle, as well as a default to return to `drawConfig.defaultMode` (default to `simple_select`, but we use [`static`](mapbox/mapbox-gl-draw-static-mode))

## How to install
You can install this plugin using npm.

### Using npm
We deliver ESM compatible code through our npm module, so that you can import it in your project and compile it without issues.
```shell
npm i @impactobservatory/mapboxgl-draw-rectangle-drag --save
```
The module exports a default binding to the module, so you can import it like:
```js
import mapboxGLDrawRectangleDrag from '@impactobservatory/mapboxgl-draw-rectangle-drag';
```

## Usage
You need to follow these steps in order to enable the control in your Draw instance.

### Add mode to Mapbox GL Draw
Once the module/script is imported, you need to include the new mode within Mapbox GL's predefined modes.

To do so, you need to include `modes` property in your Mapbox GL Draw configuration options.
```js
var MapboxGLDraw = new MapboxDraw({
  modes: {
    ...MapboxDraw.modes,
    'draw_rectangle_drag': mapboxGLDrawRectangleDrag
  }
});
```

### How to enable rectangle drag mode
To enable the rectangle drag mode, you need to execute [`changeMode`](https://github.com/mapbox/mapbox-gl-draw/blob/master/docs/API.md#changemodemode-string-options-object-draw) method on your Mapbox GL Draw instance.
```js
drawInstance.changeMode('draw_rectangle_drag');
```

Unfortunately, custom modes cannot add custom controls to Mapbox GL Draw plugins. So, if you want to have a custom button to enable the control you need to create one by yourself. You can take some ideas from [this CodePen](https://codepen.io/roblabs/pen/zJjPzX).

### How to get your feature
To do so, an event listener is needed. You need to listen to `draw.create` event on your map instance to get the definition of the feature that has just been created.

```js
map.on('draw.create', function (event) {
  console.log(e.features);
});
```

You can read more about it in [Draw documentation](https://github.com/mapbox/mapbox-gl-draw/blob/master/docs/API.md#drawcreate).
npm package: @impactor/cache
Description: a cache system, supporting any cache location
Author: Sherif Eldeeb
Latest version: 5.0.0

A cache system.

### Example

```ts
let data = await cache(
  // list of cache files to validate
  // the first valid cache file in order will be considered
  ["./report-today.json", "./report-yesterday.json"],
  // an optional data source to fetch the fresh cache data in case of no valid cache file is found
  () => fetch("https://my-server.com/getReport"),
  {
    // the maximum time period before considering a file as expired.
    maxAge: 1000,
    // a fallback to be used in case of the dataSource function failed to refresh the cache.
    // in this case, it accepts a recently expired cache
    maxStale: 2000,
    // a callback that is called to read the cache value
    // it may read from file system, memory, database, or any other source.
    // in real-life usage, you may need to iterate over all entries to find the first cache hit.
    read: (entries) => readFile(`./cache/${entries[0]}`),
    // a callback that is called if all cache sources are expired,
    // and the dataSource retrieved the fresh data successfully.
    write: (entry, data) => writeFile(`./cache/${entry}`, JSON.stringify(data)),
  },
);
```

If you plan to save the cached data in file-system, check out [cacheFS()](https://www.npmjs.com/package/@impactor/nodejs)
npm package: @impactor/dom
Description: browser's DOM interpolation tools
Author: Sherif Eldeeb
Latest version: 5.0.0

Browser's DOM interpolation tools

```ts
// dynamically loads a script and returns a promise
await load("http://example.com/script.js");

// provide attributes
load("http://example.com/script.js", { clientId: 123 });

// load a CSS file
load("http://example.com/style.css");
```
npm package: @impactor/express
Description: express utils and middlewares
Author: Sherif Eldeeb
Latest version: 3.0.4

express utils and middleware

# Middleware

- `auth`: check if the request is made by an authorized person
- `cache`: checks if the request is cached by any controller and return the cached data
- `exec`: execute any code, such as logging the request info
- `files-parser`: parse file uploads.
- `host`: create a host mapping, i.e. change req.originalUrl based on the hostname
- `redirect`: redirect the request to another url.
- `transformer`: modify the response just before it is sent, i.e. before `req.send(value)`

# Errors

- `HttpError`: an error with HTTP status code.
npm package: @impactor/gcloud-storage
Description: google cloud storage
Author: Sherif Eldeeb
Latest version: 3.0.4

Google cloud storage

### Example

```ts
let gcs = new Storage({ bucket: "myBucket" });

gcs.upload("./image.jpg");
gcs.download("image.jpg");
gcs.downloadAll();
gcs.write("file.txt", "hello world!");
gcs.exists("image.jpg");
```
npm package: @impactor/geo
Description: geographic data: countries, cities, time zones, ...
Author: Sherif Eldeeb
Latest version: 4.0.0

Geographic data: countries, cities, time zones, ...

# resources:

https://github.com/dr5hn/countries-states-cities-database

**old resources:** (no longer used)
https://gist.github.com/incredimike/1469814
https://github.com/annexare/Countries
https://github.com/lutangar/cities.json
https://www.geonames.org/datasources/

todo: add continent, religions, location:{Latitude,Longitude} ...
this data is comply to other files such as ./languages.ts, ./continents.ts

raw data is saved into src/raw-data, use transform() to convert to the final format
todo: convert numeric id into UUID, id values must be fixed over updates

1- map countries codes into generated UUID and save to uuids/countries.json
2- every update check if a record is stored in uuids, if not generate a new one and ad to uuids file
npm package: @impactor/graphics
Description: create and modify images via sharp
Author: Sherif Eldeeb
Latest version: 3.0.4

create and edit images via sharp

### Examples

```ts
// resize an image
edit("./image.jpg", { size: [100, 150] });

// resize an image, keeping aspect ratio
edit("./image.jpg", { size: [100] });

// convert a png image into jpg
edit("./image.png", { format: "jpg" });
```
npm package: @impactor/nestjs
Description: utils for NestJs
Author: Sherif Eldeeb
Latest version: 2.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

utils for NestJs

# Decorators

## Prop

a param decorator that extracts a field from the request
and validates it using pipes
and add the suitable Swagger's docs.

### Examples

```ts

// extract `userId` from params
@Get(':userId')
 findUserById(@Prop('userId') userId: string){ ... }

// extract the id from the query string
 @Get()
 filterByTenant(@Prop('tenantId', 'query') tenantId: string){ ... }

//  extract the product id from the request's body
  @Post()
  createOrder(@Prop('productId','body') productId: string){ ... }

// manipulate the swagger's docs: make the id optional
 @Get('id')
 find(@Prop('id', 'params', { required: false }) id?: string){ ... }

```

# Exception Filters

- RCP: convert Error to RpcException
- WS: convert Error to WsException
- TypeORM

# Features

- `BasicModule`
- `createMicroservice()`: create a microservice
npm package: @impactor/ngx-cards-mat
Description: renders an object into a content using `material design`, built on top of `ngx-content-core`
Author: Sherif Eldeeb
Latest version: 3.0.5

Renders an object into a content using `material design`, built on top of [@impactor/ngx-content-core](https://www.npmjs.com/package/@impactor/ngx-content-core)

```html
<ngx-content-card [data]="data" />
```

```ts
@Component(...)
export class MyComponent  {
    data = {
        title: "Angular",
        content: "I love Angular",
        cover: "photo.jpg",
        author: {
            name: "author name",
            image: "author.jpg",
            link: "https://github.com/author"
        },
        link: "https://my-site.com/angular",
        // add a button to easily copy the card content into the clipboard
        copyButton: true,
        createdAt: "1-1-2000",
        updatedAt: "1-1-2001"
    }
}
```
npm package: @impactor/ngx-formly
Description: utils and custom pipes for formly
Author: Sherif Eldeeb
Latest version: 2.0.4

utils and custom pipes for formly

also, see

- [PrimeNG](https://www.npmjs.com/package/@impactor/ngx-formly-primeng)
- [Material design](https://www.npmjs.com/package/@impactor/ngx-formly-mat)

# Fields

- Quill
- Tiptap

# Pipes

- formly pipe

# Presets

- password
- password confirm

# Validators

- error-message
- fields-match
npm package: @impactor/ngx-formly-mat
Description: material design components for formly fields
Author: Sherif Eldeeb
Latest version: 2.0.5

material design components for formly fields

- Auto Complete
- Chips
- Date picker
- file uploader
- Stepper

see [@impactor/ngx-formly](https://www.npmjs.com/package/@impactor/ngx-formly)
npm package: @impactor/ngx-formly-primeng
Description: PrimeNg components for formly fields
Author: Sherif Eldeeb
Latest version: 2.0.5

PrimeNg components for formly fields

- Auto Complete
- Quill editor

see [@impactor/ngx-formly](https://www.npmjs.com/package/@impactor/ngx-formly)
npm package: @impactor/ngx-lazy-load
Description: lazy load images or any element has 'srs' or 'srcset' attribute
Author: Sherif Eldeeb
Latest version: 4.0.0

lazy load images or any element has 'srs' or 'srcset' attribute

```html
<img data-src="https://example.com/photos/bird.jpg" />
```

The image is loaded only when the element is about to be displayed in the screen.
resulting in maximizing the speed of your app, and saving in your bandwidth.
also, it helps you get the maximum score in platforms that measure your app's speed.

Use placeholder image.
A placeholder is a very light image that is displayed temporarily until the original image loaded.

```html
<img data-src="https://example.com/photos/bird.jpg" src="placeholder.jpg" />
```

Load the best suited image based on the device's screen size using `data-srcset`

```html
<img data-srcset="https://example.com/photos/bird-small.jpg 1x, https://example.com/photos/bird-big.jpg 2x" src="placeholder.jpg" />
```
npm package: @impactor/ngx-utils
Description: tools for Angular
Author: Sherif Eldeeb
Latest version: 3.0.5

tools for Angular

# Components

## Copy

A small button to copy some content into the clipboard.

```html
<copy [icon]="copy" [getData]="onCopy()"> </copy>
```

```ts
onCopy(){
 // todo: get the content of an HTMLElement
 return "data to be copied to the clipboard"
}
```

## Dynamic dialog

dynamically inject a component into the dialog

```ts
// open a dialog and insert `MyComponent` into it.
this.dialog.open(DynamicDialogComponent, {
  data: {
    component: MyComponent,
    inputs: {},
  },
});
```

# Directives

## Attributes

add arbitrary attributes to any element.

```html
<my-component [ngxAttributes]="{valid: true}" />
```

This passes the specified attributes directly to the element generated by `<my-component>`, even if it doesn't define these attributes.

# Pipes

- `html2text`: convert HTML to plain text. useful for summaries or article cards, or places that don't support html like chat bots.
- `hypernate`: automatically activate plain hyperlinks in the content.
- `keepHTML`: bypasses Angular sanitization and keeps the HTML content as is.
- `length`: limit the length of the content.
- `nl2br`: convert break lines of plain text formats into HTML `<br />` elements.
- `slug`: convert a text into a URL-friendly slug.

### Example

```html
<my-component [summary]="content | length: 200 | html2text" />
```

# Services

## dynamically load components

dynamically load a component and insert it into the specified placeholder.

```ts
@Component(...)
class MyComponent{

 constructor(private loadComponentsService: LoadComponentsService){}

 loadAd(){
    // dynamically load the Ads component.
    this.loadComponentsService.load(AdsComponent, placeholder);
 }
}
```

## Dynamically Load an element

dynamically load elements such as JS scripts, CSS files, ...

```ts
@Component(...)
class MyComponent{

 constructor(private loadService: NgxLoadService){}

 loadAd(){
    this.loadService.load("https://example.com/script.js");
 }
}
```

## Meta tags generator

power up the SEO of your website by generate meta tags.
It also automatically generate `og` tags, twitter cards, and Google crawler tags.

```ts
@Component(...)
class MyComponent{

 constructor(private metaService: MetaService){}

 ngOnInit(){
    this.metaService.addTags({
        title: "Why SEO is important? | my-site.com",
        image: "https://my-site.com/site-logo.webp",
        ...
    })
 }
}
```

## platform

Check if the current component is running in the server or browser

```ts
@Component(...)
class MyComponent{

 constructor(private platform: PlatformService){}

 ngOnInit(){
    if(this.platform.isServer()){
        console.log("We are in the server side")
    }

    console.log(this.platform.getPlatform()) // server or browser
 }

}
```
npm package: @impactor/nx-manager
Description: NX generators and executors
Author: Sherif Eldeeb
Latest version: 4.0.0

# nx-manager

An NX plugin that contain tools for managing NX workspaces and contain generators and executors.

## Building

add the executor `@impactor/nx-manager:universal-builder` to the build target, then run `nx build nx-manager` to build the library.

# Executors

## universal-builder

- automatically detects the project type based on the existing configuration files, then selects the best building tools or run a custom command or npm script, such as Angular, NestJS, TypeScript, esbuild, webpack, or tsc
- provide hooks to be run before or after the execution
npm package: @impactor/tiptap-editor
Description: a block-based notion-style editor built on top of proseMirror and TipTap
Author: Sherif Eldeeb
Latest version: 4.0.0

A block-based [https://notion.so] style editor

built on top of [proseMirror](https://prosemirror.net) and [TipTap](https://tiptap.dev)

tiptap a wrapper around proseMirror as defined in [@tiptap/core](https://www.npmjs.com/package/@tiptap/core) package

inspired by [BlockNotes](https://www.blocknotejs.org) (see [demos](https://www.blocknotejs.org/examples/basic/block-objects)) and [Noval](https://github.com/steven-tey/novel) for React

# Features

- slash commands `/cmd`
- cmd button "+"
- inline toolbar (similar to medium and Linkedin articles)
- markdown
- subpages i.e. create a page and link it to the current page
- other components such as quizzes, flashcards

![alt text](assets/noval.png)
npm package: @impactor/typeorm
Description: TypeORM utils
Author: Sherif Eldeeb
Latest version: 3.0.0

utils for [TypeORM](https://typeorm.io)

# Dynamically create a database

```ts
createDB(
  dbName: string = 'db*',
  options?: Partial<DataSourceOptions>,
//  list of db extensions to be added
  extensions: string[],
)
```

the `*` is replaced with a random identifier, useful when creating random databases in e2e tests.

# Delete a database

```ts
deleteDB(dbName: string)
```
npm package: @impak-finance/vanilla-intl-tel-input
Description: A vanilla version of the jQuery plugin for entering international telephone numbers
Author: Impak Finance
Latest version: 1.0.6
Deprecated: this package has been deprecated

## vanilla-intl-tel-input

**Currently in development, DO NOT USE IT IN PRODUCTION YET**

**Vanilla-intl-tel-input** is a vanilla Javascript version of the [intl-tel-input jQuery plugin](https://github.com/jackocnr/intl-tel-input) for entering and validating international telephone numbers.
It provides the same API, but without the need of jQuery!
npm package: @impala/package-a
Description: Describe package-a here
Latest version: 2.0.1

# package-a

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]

Describe package-a here.

[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo

[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package

[coveralls-badge]: https://img.shields.io/coveralls/user/repo/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/user/repo
npm package: @impala/package-b
Description: Describe package-b here
Latest version: 2.0.1

# package-b

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]

Describe package-b here.

[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo

[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package

[coveralls-badge]: https://img.shields.io/coveralls/user/repo/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/user/repo
npm package: @impala/package-c
Description: Describe package-c here
Latest version: 2.0.1

# package-c

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]

Describe package-c here.

[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo

[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package

[coveralls-badge]: https://img.shields.io/coveralls/user/repo/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/user/repo