open-index/open-npm huggingface dataset:
npm package: @prmichaelsen/fix-image-orientation
Description: Accepts a Blob of an image file as an argument and returns the dataURL with orientation applied and exif removed.
Author: Koji Murata
Latest version: 1.0.4

<h1 align="center">@prmichaelsen/fix-image-orientation</h1>

<div align="center">
<a href="https://www.npmjs.com/package/@prmichaelsen/fix-image-orientation"><img src="https://img.shields.io/npm/v/@prmichaelsen/fix-image-orientation.svg" alt="npm"></a>
<a href="https://github.com/prmichaelsen/fix-image-orientation/actions/workflows/build-and-test.yml"><img src="https://github.com/prmichaelsen/fix-image-orientation/actions/workflows/build-and-test.yml/badge.svg" alt="Build and test"></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/github/license/prmichaelsen/fix-image-orientation.svg?style=flat" alt="license"></a>
</div>

<h4 align="center">
  Accepts a Blob of an image file as an argument and returns the dataURL with orientation applied and exif removed.
</h4>

## Features

- Zero Dependency
- Lightweight

## Usage

```html
<input id="file" type="file" />
<img id="preview" />

<script>
  const preview = document.getElementById("preview");
  const input = document.getElementById("file");

  input.addEventListener("change", (event) => {
    const file = event.target.files[0];

    imageFileToOrientationFixedDataURL(file).then((url) => {
      preview.src = url; // data:image/png;base64,iVBORw0K...
    });
  });
</script>
```

## Supported Format

- jpeg
- png

If an unsupported format is received, it returns dataURL without processing.

## Installation

```
npm install --save @prmichaelsen/fix-image-orientation
```
npm package: @prmichaelsen/goodneighbor-core
Description: Platform-agnostic business logic library for Good Neighbor community platform
Author: Patrick Michaelsen
Latest version: 0.4.1

# Good Neighbor Core

Core library for Good Neighbor platform

> Built with [Agent Context Protocol](https://github.com/prmichaelsen/agent-context-protocol)

## Quick Start

[Add installation and usage instructions here]

## Features

- Feature 1
- Feature 2
- Feature 3

## Development

This project uses the Agent Context Protocol for development:

- `@acp.init` - Initialize agent context
- `@acp.plan` - Plan milestones and tasks
- `@acp.proceed` - Continue with next task
- `@acp.status` - Check project status

See [AGENT.md](./AGENT.md) for complete ACP documentation.

## Project Structure

```
goodneighbor-core/
├── AGENT.md              # ACP methodology
├── agent/                # ACP directory
│   ├── design/          # Design documents
│   ├── milestones/      # Project milestones
│   ├── tasks/           # Task breakdown
│   ├── patterns/        # Architectural patterns
│   └── progress.yaml    # Progress tracking
└── (your project files)
```

## Getting Started

1. Initialize context: `@acp.init`
2. Plan your project: `@acp.plan`
3. Start building: `@acp.proceed`

## License

MIT

## Author

Patrick Michaelsen
npm package: @prmichaelsen/goodneighbor-mcp
Description: Multi-tenant MCP server for Good Neighbor community platform
Author: Patrick Michaelsen
Latest version: 0.1.1

# goodneighbor-mcp

Multi-tenant MCP server for Good Neighbor community platform

> Built with [Agent Context Protocol](https://github.com/prmichaelsen/agent-context-protocol)

## Quick Start

```bash
# Standalone (stdio transport)
FIREBASE_PROJECT_ID=xxx ALGOLIA_APPLICATION_ID=xxx npm start

# With mcp-auth (OAuth, SSE transport)
npm run start:auth
```

## Features

- MCP server wrapping `@prmichaelsen/goodneighbor-core` services
- Multi-tenant via `mcp-auth` OAuth/JWT integration
- Server factory pattern for per-user isolation
- Tools for content, profiles, feeds, discovery, and search

## Development

This project uses the Agent Context Protocol for development:

- `@acp.init` - Initialize agent context
- `@acp.plan` - Plan milestones and tasks
- `@acp.proceed` - Continue with next task
- `@acp.status` - Check project status

See [AGENT.md](./AGENT.md) for complete ACP documentation.

## Project Structure

```
goodneighbor-mcp/
├── AGENT.md              # ACP methodology
├── agent/                # ACP directory
│   ├── design/          # Design documents
│   ├── milestones/      # Project milestones
│   ├── tasks/           # Task breakdown
│   ├── patterns/        # Architectural patterns
│   └── progress.yaml    # Progress tracking
├── src/
│   ├── server.ts        # Stdio transport server
│   ├── server-factory.ts # Server factory for mcp-auth
│   ├── config.ts        # Environment configuration
│   └── tools/           # MCP tool handlers
└── package.json
```

## Getting Started

1. Initialize context: `@acp.init`
2. Plan your project: `@acp.plan`
3. Start building: `@acp.proceed`

## License

MIT

## Author

Patrick Michaelsen
npm package: @prmichaelsen/nx-remotecache-gcs
Description: Remote caching for @nrwl/nx using Google Cloud Storage
Latest version: 1.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# nx-remotecache-gcs

A task runner for [@nrwl/nx](https://nx.dev/react) that uses a Google Cloud Storage bucket as a remote cache, so all team members and CI servers can share a single cache. The concept and benefits of [computation caching](https://nx.dev/angular/guides/computation-caching) are explained in the NX documentation.

## setup

```
npm install --save-dev nx-remotecache-gcs
```

create a Google Cloud Storage bucket. Since this is only a cache, there is no need for a dual- or multi-region bucket, so choose a  single [location](https://cloud.google.com/storage/docs/locations) near you.

```
gsutil mb -p [PROJECT_ID] -l [BUCKET_LOCATION] -b on gs://[BUCKET_NAME]/
```

setup a [lifecycle rule](https://cloud.google.com/storage/docs/managing-lifecycles) for your storage bucket to automatically delete old files. If you want to use our suggested auto-delete-after-30-days rule, you can simply use the json that is included:

```
gsutil lifecycle set node_modules/nx-remotecache-gcs/lifecycle.json gs://[BUCKET_NAME]
```

by default all viewers, editors and owners of your Google Cloud project can read and/or write to the bucket. You could also [restrict who can read and write](https://cloud.google.com/storage/docs/access-control/using-iam-permissions) the bucket to only allow certain users or (build server) service accounts.

finally, add `tasksRunnerOptions` in your `nx.json` file

```json
{
    "projects": {
        ...
    },
    "tasksRunnerOptions": {
        "default": {
            "runner": "nx-remotecache-gcs",
            "options": {
                "bucket": "gs://NAME-OF-YOUR-STORAGE-BUCKET",
                "cacheableOperations": [
                    "build",
                    "test",
                    "lint",
                    "e2e"
                ]
            }
        }
    }
}

```

run a build and see if files end up in your cache storage bucket:

```
nx run-many --target=build --all
```
npm package: @prmichaelsen/react-ux-hooks
Description: Hooks to measure DOM rects during resize, track viewport size, & disable iOS Safari auto-input zoom.
Author: Patrick Michaelsen
Latest version: 0.0.0

## react-ux-hooks

Hooks to measure DOM rects during resize, track viewport size, & disable iOS Safari auto-input zoom.

### API & Examples

Track component size on resize:

```tsx
// declaration
declare function useDimensions(deps: any[], trackWindowResize?: boolean): {
    ref: null;
    dimensions: null;
} | {
    ref: (node: any) => void;
    dimensions: DOMRect;
};

// usage
export const Component = () => {
  const { ref, dimensions } = useDimensions([], true);
  return (
    <div ref={ref} style={{width: '50%'}}>
      Component Width: {dimensions.width}px
    </div>
  );
}
```


Track viewport size:

```tsx
// declaration
export declare function useViewportSize(): {
    width: number;
    height: number;
};

// usage
export const Component = () => {
  const { width } = useViewportSize();
  return (
    <div>
      Viewport Width: {width}px
    </div>
  );
}
```

Disable auto-input zoom:

```tsx
// declaration
declare const useDisableAutoInputZoom: (disable: boolean) => void;

// usage
export const Component = () => {
  useDisableAutoInputZoom(false);
  return (
    <input style={{fontSize: '10px'}}/>
  );
}
```

## FAQ
### Why package these hooks together?

Why not?
npm package: @prmichaelsen/tempalte
Description: Create type safe re-usable template strings.
Author: Patrick Michaelsen
Latest version: 1.0.3

[![CI](https://github.com/prmichaelsen/tempalte/actions/workflows/main.yml/badge.svg)](https://github.com/prmichaelsen/tempalte/actions/workflows/main.yml)

## Tempalte [sic]

Create type safe re-usable template strings.

```typescript
  const salute = tempalte<{
    salutation: string,
    entity: string,
  }>()(
    "${salutation} ${entity}!"
  ),

  expect(salute({
    salutation: 'Hello',
    entity: 'Word',
  }).toBe('Hello World!');
```