open-index/open-npm huggingface dataset:
npm package: @shriharim006/tiny-package
Description: Removes all spaces from a string
Latest version: 2.0.0

# @shrihari006/tiny-package

[![npm (scoped)](https://img.shields.io/npm/v/@shriharim006/tiny-package)](https://www.npmjs.com/package/@shriharim006/tiny-package)
[![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/tiny-package)](https://www.npmjs.com/package/@shriharim006/tiny-package)

Removes all spaces from a string.

## Install

```
$ npm install @bamblehorse/tiny
```

## Usage

```js
const tiny = require("@shrihari006/tiny");
tiny("So much space!");
//=> "Somuchspace!"
tiny(1337);
//=> Uncaught TypeError: Tiny wants a string!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1
```
npm package: @shrikebot/eslint-config
Description: Shared ESLint flat config, Prettier, and EditorConfig for ShrikeBot projects
Author: ShrikeBot
Latest version: 1.0.0

# 🪶 @shrikebot/eslint-config

Opinionated ESLint flat config, Prettier, and EditorConfig for TypeScript projects. No formatting rules in ESLint — Prettier owns that. Every rule earns its place by catching real bugs or eliminating confusing patterns.

## Quick Start

```bash
npm install -D @shrikebot/eslint-config eslint typescript-eslint prettier
```

**`eslint.config.js`**

```js
import shrikeConfig from "@shrikebot/eslint-config";

export default shrikeConfig();
```

**`.prettierrc`**

```json
"@shrikebot/eslint-config/prettier"
```

**`.editorconfig`** — copy once:

```bash
cp node_modules/@shrikebot/eslint-config/.editorconfig .editorconfig
```

Done.

## Overrides

```js
import shrikeConfig from "@shrikebot/eslint-config";

export default shrikeConfig({
    rules: {
        "no-console": "warn", // stricter for libraries
    },
});
```

## What's In The Box

### ESLint — 50+ rules, zero formatting

| Category | Examples | Why |
|----------|----------|-----|
| **TypeScript** | `no-shadow`, `no-unused-vars`, `consistent-type-imports`, `no-use-before-define` | TS-aware versions of base rules |
| **Correctness** | `eqeqeq`, `curly`, `prefer-const`, `array-callback-return`, `no-self-compare`, `no-constant-binary-expression`, `no-promise-executor-return` | Catches real bugs |
| **Security** | `no-eval`, `no-implied-eval`, `no-new-func`, `no-extend-native` | Blocks dangerous patterns |
| **Dead code** | `no-useless-return`, `no-useless-call`, `no-extra-bind`, `no-lone-blocks` | Keeps things clean |
| **Clarity** | `no-nested-ternary`, `no-lonely-if`, `yoda`, `one-var`, `no-eq-null` | Code should be readable |

Formatting (indent, quotes, semicolons, spacing) is **not** in ESLint. That's Prettier's job.

### Prettier

| Setting | Value |
|---------|-------|
| Indent | 4 spaces |
| Quotes | Double |
| Semicolons | Always |
| Trailing commas | All |
| Print width | 120 |

### EditorConfig

LF line endings · 4-space indent · trim trailing whitespace · final newline · UTF-8

## Philosophy

- **Every rule prevents a real problem.** No aesthetic preferences disguised as lint rules.
- **Prettier formats. ESLint catches bugs.** Clean separation, no conflicts.
- **Overridable.** Your project, your call. The defaults are strong opinions held loosely.

## License

MIT
npm package: @shrimp-kit/core
Description: > Shared types, Zod schemas, logger, and utilities for the shrimp-kit ecosystem.
Latest version: 0.1.0

# @shrimp-kit/core

> Shared types, Zod schemas, logger, and utilities for the shrimp-kit ecosystem.

This is the foundation package — all other shrimp-kit packages depend on it.

## Install

```bash
bun add @shrimp-kit/core
```

## What's Inside

### Types

Complete TypeScript type definitions for the entire ecosystem:

- **Schedule types** — `ScheduleType`, `ScheduleConfig`, `TaskDefinition`, `TaskState`
- **Memory types** — `MemoryEntry`, `MemoryIndex`, `MemoryType`, `Importance`
- **Bridge types** — `BridgeConfig`, `TelegramMessage`, `NotifyQueueItem`
- **Monitor types** — `HealthStatus`, `HealthCheckResult`, `InspectionReport`
- **Companion types** — `CompanionPersona`, `EmotionTrigger`, `VoiceConfig`, `ImageGenConfig`
- **Pipeline types** — `TTSRequest`, `TTSResult`, `ImageGenRequest`, `ImageGenResult`

### Zod Schemas

Runtime validation for all major config structures:

```typescript
import {
  scheduleFileSchema,
  memoryEntrySchema,
  companionPersonaSchema,
  bridgeConfigSchema,
} from "@shrimp-kit/core";

// Validate schedule file
const result = scheduleFileSchema.safeParse(rawData);
if (result.success) {
  const schedule = result.data; // Fully typed!
}
```

### Logger

Structured logger with child logger support:

```typescript
import { Logger } from "@shrimp-kit/core";

const logger = new Logger({ name: "my-app", level: "info" });
logger.info("Server started", { port: 3000 });

// Child loggers inherit parent config
const dbLogger = logger.child("database");
dbLogger.warn("Connection slow", { latencyMs: 500 });
// → [my-app:database] WARN Connection slow { latencyMs: 500 }
```

### Utilities

File, time, and text utilities used throughout the ecosystem:

```typescript
import {
  readJson,
  writeJson,
  fileExists,
  isNightTime,
  isoNow,
  tokenize,
  jaccardSimilarity,
  generateId,
  expandHome,
  parseTimeString,
} from "@shrimp-kit/core";

// File operations
const data = await readJson<MyType>("./config.json");
await writeJson("./state.json", myState);

// Time operations
const night = isNightTime(new Date(), ["00:00", "08:00"]); // true/false
const now = isoNow(); // "2026-03-08T12:00:00.000Z"

// Text similarity (used by memory dedup)
const tokens1 = tokenize("the quick brown fox");
const tokens2 = tokenize("the fast brown fox");
const similarity = jaccardSimilarity(tokens1, tokens2); // 0.6
```

### Constants

```typescript
import { MEMORY_TTL, IMPORTANCE_MULTIPLIER } from "@shrimp-kit/core";

// Default TTL per memory type (days)
MEMORY_TTL.context;    // 14
MEMORY_TTL.preference; // 30
MEMORY_TTL.progress;   // 7

// Importance multiplier for TTL
IMPORTANCE_MULTIPLIER[5]; // 2.0 (high importance = 2x TTL)
IMPORTANCE_MULTIPLIER[1]; // 0.5 (low importance = 0.5x TTL)
```

## API Reference

See the exported types and functions in [`src/index.ts`](./src/index.ts).
npm package: @shrimpcoder/ts-fetcher
Description: A TypeScript-based fetcher library
Author: shrimpcoder
Latest version: 0.1.0

# Fetcher

`Fetcher` is a utility class for making HTTP requests with various data formats (text, JSON, Blob, FormData, ArrayBuffer). It provides a unified interface for handling requests and responses, ensuring consistency and reusability across your codebase.

## Features

- **GET Requests**: Fetch data from a URL.
- **POST Requests**: Send text, JSON, Blob, FormData, and ArrayBuffer data to a URL.
- **Error Handling**: Throws `HTTPError` for HTTP errors and `ZodError` for schema validation errors.
- **Response Parsing**: Automatically parses responses based on content type.
- **URL Builder**: Provides an object-oriented interface for building URLs.
- **Query Builder**: Provides an object-oriented interface for building query parameters.

## Installation

```bash
npm install @shrimpcoder/ts-fetcher
```

## Integration with Zod

`Fetcher` supports integration with Zod. You can use Zod schemas to validate responses.

> [!Note]
> You are not required to use Zod schemas.  
> If no Zod schema is specified, the response will be returned as `unknown`.

```bash
npm install zod
```

```typescript
import { Fetcher } from 'ts-fetcher';
import { URLBuilder } from 'ts-fetcher';
import { z } from 'zod';

const urlBuilder = new URLBuilder({ baseUrl: 'https://api.example.com' });
const schema = z.object({ name: z.string() });

await Fetcher.get(urlBuilder, schema); // {name: string}
await Fetcher.get(urlBuilder); // unknown
```

## Usage

For detailed usage, please refer to [here](https://shrimpcoder.github.io/ts-fetcher/).

## License

This project is licensed under the MIT License.
npm package: @shrimpcoder/ts-result
Description: A TypeScript-based Result library
Author: shrimpcoder
Latest version: 0.1.3

# TS Result

This library is a TypeScript library inspired by Rust's `Result` type, designed to represent the success or failure of an operation. It provides two classes, `Ok` and `Err`, to handle the results of operations concisely.

## Installation

```bash
npm install @shrimpcoder/ts-result
```

## Usage

```ts
import { Result } from '@shrimpcoder/ts-result';

const result = Result.run(() => {
  return 100;
});

console.log(result.unwrap());
```

For more details, see [here](https://shrimpcoder.github.io/ts-result/index.html).

## License

This project is licensed under the MIT License.
npm package: @shrimpster00/upload-server
Description: A simple HTTP file upload server
Author: shrimpster00
Latest version: 1.0.1

# @shrimpster00/http-server

A command-line utility for serving static directories. Supports HTTP and HTTPS.

It's easy to use!

    $ npx @shrimpster00/http-server

## Usage:

    Usage: upload-server [options] [folder]
    
    
    Options:
      -V, --version         Output the version number
      -p, --port <port>     Port number (default: 3000)
      -H, --host <host>     Server host (default: "localhost")
      -S, --tls             Enable TLS/HTTPS
      -C, --cert <cert>     Server certificate file
      -K, --key <key>       Private key file
      -h, --help            Display help and exit
npm package: @shrimpswap/eslint-config-shrimp
Description: Eslint config for ShrimpSwap
Author: pedersonShrimp
Latest version: 1.0.0

# eslint-config-shrimp

Shrimp Eslint config with:

- Airbnb config
- Typescript
- Prettier

## Usage

```
npx install-peerdeps --dev @shrimpswap-libs/eslint-config-shrimp
```

Add `"extends": "@shrimpswap-libs/eslint-config-shrimp"` to your eslint config file.
npm package: @shrimpswap/uikit
Description: Set of UI components for ShrimpSwap projects
Latest version: 1.2.41

# 🦐 ShrimpSwap UIkit

[![Version](https://img.shields.io/npm/v/@shrimpswap/uikit)](https://www.npmjs.com/package/@shrimpswap/uikit) [![Size](https://img.shields.io/bundlephobia/min/@shrimpswap/uikit)](https://www.npmjs.com/package/@shrimpswap/uikit)

ShrimpSwap UIkit is a set of React components and hooks used to build pages on ShrimpSwap's apps.

It also contains a theme file for dark and light mode.

## Install

`yarn add @shrimpswap/uikit`

## npm

https://www.npmjs.com/package/@shrimpswap/uikit

## Setup

### Theme

Before using ShrimpSwap UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@shrimpswap/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@shrimpswap/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://shrimpswap.github.io/shrimpswap-uikit/)
npm package: @shrimpwtf/mcp-akiflow
Description: MCP server for Akiflow task management
Author: shrimpwtf
Latest version: 0.1.2

# Akiflow MCP Server

MCP server for Akiflow task management.

## Features

- Get tasks, events, calendars with filters
- Create and update tasks
- Schedule/unschedule tasks on calendar
- Mark tasks done
- List projects and tags
- Auto-refreshing authentication

## Setup

### 1. Get Your Refresh Token

1. Open Akiflow web app (web.akiflow.com)
2. Open DevTools: `Cmd+Option+I` (Mac) or `Ctrl+Shift+I` (Windows/Linux)
3. Go to **Network** tab
4. Refresh the page or wait for a `refreshToken` request
5. Copy the `refresh_token` value from the request/response

### 2. Configure MCP

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "akiflow": {
      "command": "npx",
      "args": ["-y", "@shrimpwtf/mcp-akiflow@latest"],
      "env": {
        "AKIFLOW_REFRESH_TOKEN": "your_refresh_token_here"
      }
    }
  }
}
```

## Available Tools

### Tasks

#### `get-tasks`
List tasks with optional filters.
- `done` (boolean): Filter by completion status (default: false)
- `status` (string): `1`=Inbox, `2`=Planned, `4`=Snoozed, `7`=Someday, `10`=Scheduled
- `limit` (number): Max tasks to return

#### `add-task`
Create a new task.
- `title` (string, required): Task title
- `description` (string): Task description
- `date` (string): Plan date (`YYYY-MM-DD`)
- `datetime` (string): Plan datetime (ISO 8601)
- `due_date` (string): Deadline (`YYYY-MM-DD`)
- `duration` (number): Duration in minutes
- `priority` (string): `-1`=goal, `1`=high, `2`=medium, `3`=low
- `status` (string): `1`=Inbox, `2`=Planned, `7`=Someday, `10`=Scheduled
- `listId` (string): Project UUID
- `tags_ids` (array): Tag UUIDs

#### `edit-task`
Update an existing task.
- `id` (string, required): Task UUID
- All fields from `add-task` (optional, nullable to clear values)

#### `mark-done`
Mark a task as completed.
- `id` (string, required): Task UUID

#### `schedule-task`
Schedule a task on the calendar.
- `id` (string, required): Task UUID
- `date` (string, required): Date (`YYYY-MM-DD`)
- `datetime` (string): Specific time (ISO 8601)
- `duration` (number): Duration in minutes (default: 30)

#### `unschedule-task`
Remove a task from the calendar.
- `id` (string, required): Task UUID
- `to_inbox` (boolean): Move to inbox (default: true)

### Calendar

#### `get-events`
Get calendar events.
- `limit` (number): Max events to return
- `calendar_id` (string): Filter by calendar ID

#### `get-calendars`
Get all calendars with metadata.

### Organization

#### `get-projects`
List all projects and folders.

#### `get-tags`
List all tags.

## API Details

### Task Status
- `1`: Inbox
- `2`: Planned
- `4`: Snoozed
- `7`: Someday
- `10`: Scheduled

### Task Priority
- `-1`: Goal
- `1`: High
- `2`: Medium
- `3`: Low
- `null`: None

### Date Formats
- Date: `YYYY-MM-DD`
- Datetime: ISO 8601 (`2026-01-26T10:00:00.000Z`)

## Security

- Refresh token is sensitive - treat like a password
- Never commit tokens to git
- Access tokens auto-refresh on 401

## License

MIT
npm package: @shrinedev/loopback-gate-keycloak
Description: Keycloak LoopBack Controller Gate. 
Author: Douglas Drouillard
Latest version: 0.2.5

# `loopback-gate-keycloak`

> TODO: description

## Usage

```
const loopbackGateKeycloak = require('loopback-gate-keycloak');

// TODO: DEMONSTRATE API
```
npm package: @shrinedev/middleware-runner
Description: Run middleware without express. The lib runs middleware and returns a promise. Its intended use case is using express middleware in LoopBack.
Author: Douglas Drouillard
Latest version: 0.0.4

# `middleware-runner`

This package is heavily derived from [this awesome article](https://www.bennadel.com/blog/3260-manually-invoking-express-js-middleware-functions.htm) by Ben Nadel. 


## Usage

```
const middlewareRunner = require('middleware-runner');

// TODO: DEMONSTRATE API
```
npm package: @shrinkray-tools/eslint-plugin
Description: ESLint rules for performance-first development, built to catch common frontend slowdowns before they reach production.
Author: Den Odell
Latest version: 0.1.0

# @shrinkray-tools/eslint-plugin

ESLint rules for performance-first development, built to catch common frontend slowdowns before they reach production.

Part of the [ShrinkRay Tools](https://github.com/shrinkray-tools) suite, open source tools to help you keep web performance fast by default.

## What It Does

This plugin adds performance-focused ESLint rules to catch:

- Oversized imports (like `moment`, `aws-sdk`, or full `lodash`)
- Future: render-blocking patterns, large inline styles, client-only hydration

## Installation

```bash
npm install --save-dev @shrinkray-tools/eslint-plugin
```

---

## Usage

Add it to your ESLint config:

### Manual Rule Setup

```json
{
  "plugins": ["@shrinkray-tools"],
  "rules": {
    "@shrinkray-tools/no-large-imports": "warn"
  }
}
```

### Recommended Config

Use the built-in `recommended` preset to enable safe default rules:

```json
{
  "extends": ["plugin:@shrinkray-tools/recommended"]
}
```

---

## Rules

### `no-large-imports`

Warns when known large libraries are imported directly. Helps teams avoid bundle bloat by catching heavy or legacy dependencies early.

#### Warned Libraries

| Library     | Approx Size |
|-------------|--------------|
| `moment`    | ~300 KB      |
| `lodash`    | ~200 KB      |
| `date-fns`  | ~180 KB      |
| `chart.js`  | ~300 KB      |
| `aws-sdk`   | ~500 KB      |
| `three`     | ~450 KB      |

> These are rough estimates of uncompressed ESM/UMD import costs and may vary by usage.

---

## Coming Soon

- `no-hydration-only-components`
- `no-render-blocking-fonts`
- `warn-large-inline-style`

---

## Local Development

If you're working on this plugin locally:

```bash
npm install
npm run test
```

To test the plugin inside another repo locally:

```bash
npm link
cd your-project
npm link @shrinkray-tools/eslint-plugin
```

---

## Related Projects

- [ShrinkRay Analyzer](https://github.com/shrinkray-tools/shrinkray-analyzer) – script and resource analysis via headless browser
- [ShrinkRay CLI](https://github.com/shrinkray-tools/shrinkray-cli) – coming soon

---

## License

MIT License © [Den Odell](https://github.com/denodell)
npm package: @shrinkray-tools/speed-banner
Description: Drop-in LCP and INP banner for development using web-vitals.
Author: ShrinkRay Tools
Latest version: 0.1.0

# @shrinkray-tools/speed-banner

🔍 Lightweight development banner to visualize LCP and INP in real time — powered by [web-vitals](https://github.com/GoogleChrome/web-vitals).

## Install

```bash
npm install @shrinkray-tools/speed-banner
```

## Usage

### Vanilla JS

```js
import { mountSpeedBanner } from '@shrinkray-tools/speed-banner';

mountSpeedBanner();
```

A small overlay will appear in the corner showing real-time LCP and INP values.

### React Component

```jsx
import { SpeedBanner } from '@shrinkray-tools/speed-banner/react';

function App() {
  return (
    <>
      <SpeedBanner />
      {/* your app code */}
    </>
  );
}
```

## Options

- `containerId` (default: `"shrinkray-speed-banner"`): DOM ID used for the banner container.

---

Only runs in development (`NODE_ENV !== 'production'`). No config needed.
npm package: @shrinkwork/next-image
Description: Prebuilt shrink.work loader and React component for Next.js Image.
Latest version: 0.1.0

# @shrinkwork/next-image

Prebuilt shrink.work helpers for Next.js so you can drop in an `<Image>` component that automatically routes through the shrink.work image proxy.

## Install

```bash
npm install @shrinkwork/next-image
```

The package declares `next`, `react`, and `react-dom` as peer dependencies. Your Next.js project already ships with them.

## Quick start

```tsx
import { ShrinkworkImage } from "@shrinkwork/next-image";

export default function Hero() {
  return (
    <ShrinkworkImage
      src="https://cdn.example.com/hero.jpg"
      alt="Product screenshot"
      width={1600}
      height={900}
      priority
      shrinkwork={{ apiKey: process.env.NEXT_PUBLIC_SHRINKWORK_KEY }}
    />
  );
}
```

### Configure defaults
- `baseUrl` – custom proxy URL if you self-host (`https://img.shrink.work/image` by default).
- `apiKey` – shrink.work API key. You can also set `NEXT_PUBLIC_SHRINKWORK_KEY` in your env and leave this unset.
- `fit`, `quality`, `params` – optional overrides for transform behavior.

```tsx
const shrinkwork = {
  fit: "inside" as const,
  params: { format: "webp" },
};

<ShrinkworkImage src={...} width={1200} height={800} shrinkwork={shrinkwork} />;
```

## Custom loader only
Already have your own `<Image>` wrapper? Use `createShrinkworkLoader` to get a drop-in loader function:

```ts
import { createShrinkworkLoader } from "@shrinkwork/next-image";

const shrinkworkLoader = createShrinkworkLoader({ apiKey: process.env.NEXT_PUBLIC_SHRINKWORK_KEY });

<Image loader={shrinkworkLoader} src="https://cdn.example.com/photo.jpg" width={1200} height={800} alt="" />;
```

## Formatting URLs outside Next.js
Need a URL for CMSes or other frameworks? Call `formatShrinkworkUrl`:

```ts
import { formatShrinkworkUrl } from "@shrinkwork/next-image";

const url = formatShrinkworkUrl({
  src: "https://cdn.example.com/avatar.jpg",
  width: 512,
  height: 512,
  apiKey: process.env.SHRINKWORK_KEY,
});
```

## Publishing
The package builds via `npm run build`. When ready, bump the version, run the build, and publish from this folder:

```bash
npm run build -w npm-packages/next-image
npm publish --access public
```
npm package: @shrinkwork/node-client
Description: Lightweight Node.js client for building shrink.work URLs and fetching optimized images server-side.
Latest version: 0.1.0

# @shrinkwork/node-client

Server-side helper for generating shrink.work URLs and fetching optimized assets from Node.js scripts, workers, or serverless functions.

## Install
```bash
npm install @shrinkwork/node-client
```

## Quick start
```ts
import { ShrinkworkClient } from "@shrinkwork/node-client";

const client = new ShrinkworkClient({ apiKey: process.env.SHRINKWORK_KEY! });

const url = client.buildUrl({
  src: "https://cdn.example.com/hero.jpg",
  width: 1600,
  height: 900,
  format: "webp",
});

const image = await client.fetchImage({ src: "https://cdn.example.com/avatar.png", width: 512, height: 512 });
console.log(image.contentType, image.etag, image.fromCache);
```

## Standalone helpers
```ts
import { buildShrinkworkUrl } from "@shrinkwork/node-client";

const url = buildShrinkworkUrl({
  src: "https://cdn.example.com/photo.jpg",
  width: 1024,
  apiKey: process.env.SHRINKWORK_KEY,
});
```
Use the URL anywhere (CMS, `<img>`, or another CDN layer).

## Options
- `baseUrl` – point to self-hosted shrink.work if needed.
- `apiKey` – workspace API key (keep it server-side).
- `fetchTimeoutMs` – abort slow origin fetches (default 10s).

## Build & publish
```bash
npm run build -w npm-packages/node-client
npm publish --access public
```
npm package: @shrinkwork/react-image
Description: Drop-in React component + helpers for rendering shrink.work images outside Next.js.
Latest version: 0.1.0

# @shrinkwork/react-image

Render shrink.work-optimized images in any React app (CRA, Vite, Remix, etc.) without hand-coding query strings.

## Install
```bash
npm install @shrinkwork/react-image
```
Peer dependency: `react` 17+.

## Usage
```tsx
import { ShrinkworkImage } from "@shrinkwork/react-image";

export function Hero() {
  return (
    <ShrinkworkImage
      src="https://cdn.example.com/hero.jpg"
      alt="Product screenshot"
      width={1600}
      height={900}
      apiKey={import.meta.env.VITE_SHRINKWORK_KEY}
      fit="cover"
      quality={80}
    />
  );
}
```
The component renders a standard `<img>` tag with the shrink.work URL and preserves any additional props you pass (className, loading, decoding, etc.).

Need just the URL? Use `buildShrinkworkUrl` or `getShrinkworkSrc` and plug it into your own components.

```ts
import { buildShrinkworkUrl } from "@shrinkwork/react-image";

const url = buildShrinkworkUrl({
  src: "https://cdn.example.com/avatar.png",
  width: 512,
  height: 512,
  apiKey: process.env.SHRINKWORK_KEY,
});
```

## Options
- `baseUrl` – override the proxy base if you self-host shrink.work.
- `apiKey` – workspace API key (lock it down by domain when used client-side).
- `fit`, `format`, `quality`, `params` – forwarded directly to shrink.work query params.

## Build & publish
```bash
npm run build -w npm-packages/react-image
npm publish --access public
```
npm package: @shrinkwork/vue-image
Description: Vue 3 component and composables for shrink.work optimized images.
Latest version: 0.1.0

# @shrinkwork/vue-image

Vue 3 helpers for rendering shrink.work optimized images without juggling query params.

## Install
```bash
npm install @shrinkwork/vue-image
```
Peer dependency: `vue@^3.3.0`.

## Component usage
```vue
<script setup lang="ts">
import { ShrinkworkImage } from "@shrinkwork/vue-image";
</script>

<template>
  <ShrinkworkImage
    src="https://cdn.example.com/hero.jpg"
    :width="1600"
    :height="900"
    alt="Product screenshot"
    fit="cover"
    :quality="80"
    :api-key="import.meta.env.VITE_SHRINKWORK_KEY"
  />
</template>
```

## Composition helper
Need the URL only? Use `buildShrinkworkUrl` or the `useShrinkworkSrc` composable.

```ts
import { useShrinkworkSrc } from "@shrinkwork/vue-image";

const src = useShrinkworkSrc({
  src: "https://cdn.example.com/avatar.png",
  width: 512,
  height: 512,
  apiKey: import.meta.env.VITE_SHRINKWORK_KEY,
});
```
`src.value` always reflects the computed shrink.work URL.

## Options
- `baseUrl` (default `https://img.shrink.work/image`)
- `apiKey`
- `fit`, `format`, `quality`, `params`

## Build & publish
```bash
npm run build -w npm-packages/vue-image
npm publish --access public
```
npm package: @shripad1993/type-generator
Description: Angular library for automatically generating TypeScript types from project source code
Author: shripad1993
Latest version: 1.0.0

# TypeScript Type Generator

An Angular library for automatically generating TypeScript types from your project's source code. This library analyzes your codebase and generates type definitions for variables, objects, classes, and interfaces.

## Installation

```bash
npm install type-generator
```

## Usage

1. Import the TypeGeneratorModule in your Angular application:

```typescript
import { TypeGeneratorModule } from 'type-generator';

@NgModule({
  imports: [
    TypeGeneratorModule
  ]
})
export class AppModule { }
```

2. Inject and use the TypeGeneratorService:

```typescript
import { TypeGeneratorService } from 'type-generator';

@Component({
  // ...
})
export class AppComponent {
  constructor(private typeGenerator: TypeGeneratorService) {
    // Generate types from specific files or patterns
    const types = this.typeGenerator.generateTypes([
      'src/**/*.ts',
      '!src/**/*.spec.ts'
    ]);

    // Save the generated types to a file
    this.typeGenerator.saveTypes(types, 'generated-types.ts');
  }
}
```

## Features

- Automatically generates TypeScript types from your source code
- Supports variables, objects, classes, and interfaces
- Uses AST analysis for accurate type inference
- Integrates seamlessly with Angular projects
- Configurable file patterns and output

## API Reference

### TypeGeneratorService

#### generateTypes(sourcePaths: string[]): string
Analyzes the specified source files and generates TypeScript type definitions.
- `sourcePaths`: Array of file paths or glob patterns to analyze
- Returns: Generated type definitions as a string

#### saveTypes(types: string, outputPath: string): void
Saves the generated types to a file.
- `types`: Generated type definitions
- `outputPath`: Path where the types should be saved

## Development

1. Clone the repository
2. Install dependencies: `npm install`
3. Build the library: `npm run build`
4. Run tests: `npm test`

## License

MIT
npm package: @shriramethiraj/spacex-web-components
Description: SpaceX Web components
Latest version: 1.0.2

![Built With Stencil](https://img.shields.io/badge/-Built%20With%20Stencil-16161d.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI%2BCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI%2BCgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU%2BCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MjQuNywzNzMuOWMwLDM3LjYtNTUuMSw2OC42LTkyLjcsNjguNkgxODAuNGMtMzcuOSwwLTkyLjctMzAuNy05Mi43LTY4LjZ2LTMuNmgzMzYuOVYzNzMuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTQyNC43LDI5Mi4xSDE4MC40Yy0zNy42LDAtOTIuNy0zMS05Mi43LTY4LjZ2LTMuNkgzMzJjMzcuNiwwLDkyLjcsMzEsOTIuNyw2OC42VjI5Mi4xeiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDI0LjcsMTQxLjdIODcuN3YtMy42YzAtMzcuNiw1NC44LTY4LjYsOTIuNy02OC42SDMzMmMzNy45LDAsOTIuNywzMC43LDkyLjcsNjguNlYxNDEuN3oiLz4KPC9zdmc%2BCg%3D%3D&colorA=16161d&style=flat-square)

# Spacex components

Components for spacex project to showcase web components


## Getting Started

To start building a new web component using Stencil, clone this repo to a new directory:

run:

```bash
npm install
npm start
```

To build the component for production, run:

```bash
npm run build
```

To run the unit tests for the components, run:

```bash
npm test
```