open-index/open-npm huggingface dataset:
npm package: @oanhung/reverse-sentence
Description: Reverses a sentence.
Latest version: 1.1.1

# reverse-sentence

Reverses the words of a sentence.
## Install
```sh
npm install @npmusername/reverse-sentence
```

## API
```js
require("reverse-sentence") => Function
reverse(sentence) => String
```

## Example
```js
const reverseSentence = require("reverse-sentence");
const sentence = "Hello Beth!";
const reversed = reverseSentence(sentence);
console.log(reversed) // Beth! Hello
```

## License
MIT
npm package: @oaphub/file-uploader-mcp
Description: MCP server for ploading files to OAP storage
Latest version: 0.2.0

# File Uploader MCP Server
Upload local files to OAP (OpenAgentPlatform) remote storage.  

## Usage
Mainly used in combination with MCP that accepts URL for files.  
For example: Use image edit MCP on a local image.

```mermaid
sequenceDiagram
    participant User
    participant LLM
    participant FileUploader
    participant ImageEditMCP

    User->>LLM: Edit this imege {LOCAL_PATH}
    LLM->>FileUploader: Upload local file
    FileUploader->>LLM: Storage URL
    LLM->>ImageEditMCP: Edit this image {URL}
    ImageEditMCP->>LLM: Edited image
    LLM->>User: Here is the result
```

## Installation
```json
{
  "mcpServers": {
    "file-uploader": {
      "command": "npx",
      "args": ["@oaphub/file-uploader-mcp"]
    }
  }
}
```

## Configuration

Set these environment variables before running:

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `OAP_CLIENT_KEY` | No | - | Your OAP client key for longer expiration time. (> 1h)|
| `OAP_STORAGE_BASE_URL` | No | `https://storage.oaphub.ai` | Base URL of the storage API |

### Aquire OAP Client Key
- Go to [oaphub.ai](https://oaphub.ai/)
- Click Sign Up and create your account
- Obtain your Client Key from [oaphub.ai/u/clientkeys](https://oaphub.ai/u/clientkeys)

## Tool: `upload_file`

Uploads a file to storage and returns a URL.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `file_path` | string | Yes | Path to the file to upload |
| `expire_after` | number | No | Seconds until file expires (minimum: 60, default: 60) |

### Response

Returns a JSON object with the uploaded file URL:

```json
{
  "url": "https://storage.oaphub.ai/v/xxxxxxxx/xxxxx.md"
}
```


## Local Development

To test the MCP server locally before publishing
```bash
npm run build
```

```json
{
  "mcpServers": {
    "file-uploader": {
      "command": "node",
      "args": ["/path/to/file-uploader/dist/index.js"]
    }
  }
}
```

## Publishing

This package uses automated publishing via GitHub Actions. To release:
- Create and push a git tag:
   ```bash
   git tag v0.1.0
   git push origin v0.1.0
   ```

The GitHub Action will automatically build and publish to npm.
npm package: @oarc/gpp-access
Description: Utilities around the Open AR Cloud GeoPoseProtocol
Author: Michael Vogt and Gabor Soros
Latest version: 0.2.1

Simple client library for the Open AR Cloud GeoPoseProtocol for visual positioning.

### New with version 0.2.0:
- BREAKING: upgrade to GeoPoseProtocol v2

### New with version 0.1.0:
- conversion from JavaScript to TypeScript

### New with version 0.0.3:
- update to new GeoPose format

### Simple usage
```
    import { sendRequest, validateRequest, GeoPoseRequest, type GeoposeResponseType } from '@oarc/gpp-access';
    import { ImageOrientation, IMAGEFORMAT, CameraParam, CAMERAMODEL } from '@oarc/gpp-access';

    /*
    // Input
    image: string, // base64 encoded JPG image
    width: number,
    height: number,
    cameraIntrinsics: { fx: number; fy: number; cx: number; cy: number; }
    */

    let cameraParams = new CameraParam();
    cameraParams.model = CAMERAMODEL.PINHOLE;
    cameraParams.modelParams = [cameraIntrinsics.fx, cameraIntrinsics.fx, cameraIntrinsics.cx, cameraIntrinsics.cy];

    const geoPoseRequest = new GeoPoseRequest(uuidv4())
        .addCameraData(IMAGEFORMAT.JPG, [width, height], image.split(',')[1], 0, new ImageOrientation(false, 0), cameraParams)
        .addLocationData(latAngle, lonAngle, 0, 0, 0, 0, 0)

    sendRequest(`${serviceUrl}`, JSON.stringify(geoPoseRequest))
        .then(data => {
            // handle GeoPoseResponse
        })
```

### More information about the GeoPoseProtocol can be found here:
[https://github.com/OpenArCloud/oscp-geopose-protocol](https://github.com/OpenArCloud/oscp-geopose-protocol)
npm package: @oardi/css-utils
Description: Powerful set of semantic css classes with support for breakpoints, directions and spacings
Author: Ardian Shala
Latest version: 0.40.2

# CSS Utils

Powerful set of CSS Utility classes for Colors, Typography, Spacings, Flex and CSS Grid.

<!-- [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/oardi-css-utils/) -->

## Showcase

- Browse the Showcase [here](https://css-utils.oardi.com/)
- Stackblitz Demo [here](https://stackblitz.com/edit/oardi-css-utils/)

## Setup

### Install npm package

```
npm i @oardi/css-utils
```

### Import SCSS files

Import the theme with all utility classes and their responsive classes as well as predefined components.

```scss
@use '@oardi/css-utilss/scss/index.scss';
```

### Use Utility classes

```html
<div class="text-center">some text</div>
```

This will render a centered text:

<div class="text-center">
	some text centered
</div>

### Use predefined component classes

```html
<button class="btn btn-solid btn-primary">some button text</button>
```

will render as:

<button class="btn btn-solid btn-primary">some button text</button>

### Maintainer

Developed and maintained by [Ardian Shala](https://github.com/oardi)

### Credits and Inspiration

The main Frameworks which inspired me to create this set of CSS Utility Classes:

- [Twitter Bootstrap](https://getbootstrap.com/)
- [TailwindCSS](https://tailwindcss.com/)
- [FontAwesome](https://fontawesome.com/)
- [Nuxt](https://nuxt.com/)
npm package: @oardi/ts-utils
Description: utility services, types
Author: Ardian Shala
Latest version: 0.0.46

# @oardi/ts-utils

Powerful set of Typescript Utility Methods, Helpers, Interfaces, Services and Types.

## Showcase

- Browse the Showcase [here](https://ts-utils.oardi.com/)

## Setup

### Install npm package

```
npm i @oardi/ts-utils
```

### Maintainer

Developed and maintained by [Ardian Shala](https://github.com/oardi)
npm package: @oarepo/invenio-oarepo-ui-vue
Description: Base Vue UI Components for OA Repository
Author: Miroslav Bauer
Latest version: 1.9.3

# Invenio OARepo UI Vue

[![NPM version][npm-svg]][npm]

   [npm]: https://www.npmjs.com/package/@oarepo/invenio-oarepo-ui-vue
   [npm-svg]: https://img.shields.io/npm/v/@oarepo/invenio-oarepo-ui-vue.svg?style=flat

Base Vue UI Components for OpenAccess Repository

**Warning**: the 1.x branch of this repository is obsolete, please
consider upgrading to (backward incompatible) 2.x releases.
npm package: @oarepo/invenio-vue
Description: Vue 3 library for handling invenio REST
Author: Mirek Simek
Latest version: 1.0.0-a11

# @oarepo/invenio-vue

## Installation

```bash
    yarn add @oarepo/vue-query-synchronizer
    yarn add @oarepo/invenio-vue
```

If you use quasar, you might want to add facets library:

```bash
    yarn add @oarepo/quasar-es-facets
```

In the main script:

```javascript
import {createApp} from 'vue'
import App from './App.vue'
import VueQuerySynchronizer from "@oarepo/vue-query-synchronizer";
import InvenioApi from '@oarepo/invenio-vue'
import router from './router'
import axios from 'axios'

// if quasar
import {Quasar} from 'quasar'
import quasarUserOptions from './quasar-user-options'
import QuasarESFacets from '@oarepo/quasar-es-facets'

axios.defaults.headers = {
    'Cache-Control': 'no-cache',
    'Pragma': 'no-cache',
    'Expires': '0',
};

createApp(App)
    .use(router)
    .use(VueQuerySynchronizer, {router})
    .use(InvenioApi)

    // if quasar
    .use(Quasar, quasarUserOptions)
    .use(QuasarESFacets)

    // and mount
    .mount('#app')
```

## Common usage - API passed as props to your component

### Collection and record viewers

Wrap your components when you add them into routes:

```javascript
import {collection, record} from '@oarepo/invenio-vue'

export const routes = [
    record({
        name: 'record-viewer-editor',
        path: '/:recordId',
        component: Record
    }),

    collection({
        name: 'record-list',
        path: '/',
        component: Collection,
    })
] 
```

This will inject a wrapper component (invisible in DOM tree) that fetches the collection/record, shows the loading
status and possible errors, on success pass records and facets to your component and reacts to facet selection,
pagination and search as emitted by your component.

A sample implementation of  [Collection](src/components/Collection.vue) is in the demo.

For a record viewer see [Record](src/components/Record.vue)

## Composable API

TODO