open-index/open-npm huggingface dataset:
npm package: @marianmeres/topo-merge
Description: [![JSR](https://jsr.io/badges/@marianmeres/topo-merge)](https://jsr.io/@marianmeres/topo-merge) [![npm](https://img.shields.io/npm/v/@marianmeres/topo-merge)](https://www.npmjs.com/package/@marianmeres/topo-merge) [![license](https://img.shields.io/github
Author: Marian Meres
Latest version: 1.1.2

# @marianmeres/topo-merge

[![JSR](https://jsr.io/badges/@marianmeres/topo-merge)](https://jsr.io/@marianmeres/topo-merge)
[![npm](https://img.shields.io/npm/v/@marianmeres/topo-merge)](https://www.npmjs.com/package/@marianmeres/topo-merge)
[![license](https://img.shields.io/github/license/marianmeres/topo-merge)](https://github.com/marianmeres/topo-merge/blob/master/LICENSE)

Multiple inheritance for POJOs via topological sort and deep merge.

## Installation

```sh
deno add jsr:@marianmeres/topo-merge
```

```sh
npm i @marianmeres/topo-merge
```

## Quick Example

```js
import { topoMerge } from "@marianmeres/topo-merge";

const result = topoMerge({
    a: { foo: "bar" },
    b: { __extends: "a", baz: "bat" },
    c: { __extends: "b", hey: "ho" },
    d: { __extends: "c", lets: "go", foo: "foo" },
    e: { __extends: ["b", "c"] }, // multiple inheritance
});

// Result:
// a: { foo: "bar" }
// b: { foo: "bar", baz: "bat" }
// c: { foo: "bar", baz: "bat", hey: "ho" }
// d: { foo: "foo", baz: "bat", hey: "ho", lets: "go" }
// e: { foo: "bar", baz: "bat", hey: "ho" }
```

## API

### `topoMerge(schema, mergeOptions?, mergeOmitIdProp?)`

Main function that resolves inheritance and merges objects.

```ts
function topoMerge(
    schema: Record<string, WithExtends> | [string, WithExtends][],
    mergeOptions?: DeepMergeOptions,
    mergeOmitIdProp?: boolean // default: true
): Record<string, Record<string, any>>
```

- `schema` - Object or entries array where keys become node IDs
- `mergeOptions` - Options for [`deepMerge`](https://jsr.io/@std/collections/doc/~/deepMerge). Default: `{ arrays: "replace" }`
- `mergeOmitIdProp` - Whether to exclude the `id` property from results. Default: `true`

### `topoSort(nodes)`

Lower-level utility for topological sorting. Most users should use `topoMerge` instead.

## Merge Behavior

- **Child overrides parent** - Properties defined on a node override inherited ones
- **Arrays are replaced** - By default, arrays replace rather than concatenate (configurable via `mergeOptions.arrays`)
- **Deep merge** - Nested objects are recursively merged
- **Explicit `undefined`** - Set a property to `undefined` to remove an inherited value

## Full API Documentation

See [API.md](./API.md) for complete API reference including all interfaces, error handling, and detailed examples.
npm package: @marianmeres/tree
Description: [![NPM version](https://img.shields.io/npm/v/@marianmeres/tree)](https://www.npmjs.com/package/@marianmeres/tree) [![JSR version](https://jsr.io/badges/@marianmeres/tree)](https://jsr.io/@marianmeres/tree) [![License: MIT](https://img.shields.io/badge/Lic
Author: Marian Meres
Latest version: 2.2.5

# @marianmeres/tree

[![NPM version](https://img.shields.io/npm/v/@marianmeres/tree)](https://www.npmjs.com/package/@marianmeres/tree)
[![JSR version](https://jsr.io/badges/@marianmeres/tree)](https://jsr.io/@marianmeres/tree)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Generic [tree](https://en.wikipedia.org/wiki/Tree_(data_structure)) data structure with
traversal, lookup, and node manipulation operations.

## Installation

```sh
deno add jsr:@marianmeres/tree
```

```sh
npm install @marianmeres/tree
```

## Usage

```typescript
import { Tree, TreeNode } from '@marianmeres/tree';

// Create a tree and add nodes
const tree = new Tree<string>();
const root = tree.appendChild('root');
const child1 = root.appendChild('child1');
const child2 = root.appendChild('child2');
child1.appendChild('grandchild1');
child1.appendChild('grandchild2');

// Tree structure visualization
console.log(tree.toString());
// root
//     child1
//         grandchild1
//         grandchild2
//     child2

// Traversal (pre-order, post-order, level-order available)
for (const node of tree.preOrderTraversal()) {
    console.log(node?.value);
}

// Search
const found = tree.find(child1.id);        // by ID
const matches = tree.findAllBy('child1');  // by value

// Manipulation
tree.insert(child2.id, 'newChild');  // insert under child2
tree.move(child1.id, child2.id);     // move child1 under child2
tree.remove(child2.id);              // remove subtree

// Serialization
const json = tree.dump();
const restored = Tree.factory<string>(json);

// Readonly mode (all mutations throw)
const readonlyTree = Tree.factory<string>(json, true);
```

## API

See [API.md](./API.md) for complete API documentation.

## License

[MIT](LICENSE)
npm package: @marianmeres/ttl-queue
Description: Add things to [queue](<https://en.wikipedia.org/wiki/Queue_(abstract_data_type)>) and have them dequeue sequentially (FIFO) based on their defined expiration (ttl). Read head of the queue as a [store](https://github.com/marianmeres/store) value.
Author: Marian Meres
Latest version: 1.0.2

# @marianmeres/ttl-queue

Add things to [queue](<https://en.wikipedia.org/wiki/Queue_(abstract_data_type)>) and have them dequeue sequentially (FIFO) based on their defined expiration (ttl). Read head of the queue as a [store](https://github.com/marianmeres/store) value.

## Install

```shell
$ npm i @marianmeres/ttl-queue
```

## Example usage

```typescript
import { createTtlQueueStore } from '@marianmeres/ttl-queue';

// Using plain strings here just as an example (the enqueued value can be anything).
const q = createTtlQueueStore<string>(defaultTtl?);

// fictional example
const unsub = q.subscribe((head) => screen.show(head));

q.enqueue('one', 1_000);
q.enqueue('two', 2_000);
q.enqueue('three', 3_000);
```

In this example the fictional screen module above will show
"one" for 1 second, _then_ "two" for 2 seconds and _then_ "three" for 3 seconds.

After dequeue of "three" the store value (the head) will be undefined until another `q.enqueue(...)` comes.
npm package: @marianmeres/unchunk
Description: Utility for reconstructing chunks into messages.
Author: Marian Meres
Latest version: 1.0.7

# @marianmeres/unchunk

Utility for reconstructing chunks into messages.

## Use case

A server is streaming **multiple** messages (eg `csv` rows, `json` objects...) via `Transfer-Encoding: 'chunked'`...

While the client's [`reader.read`](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams) helps us glue the low level transport chunks, we still need to restore the higher level messages ASAP while the chunks are still incoming. This is where this tool comes in handy.

## Delimiter

Each message (not chunk) must have a _delimiter_ appended at the end for this to work. And of course, both sides (client and server) must use the same _delimiter_.

You can use any _delimiter_ (eg `,`, `\n`, `\r\n`, `\n\n`, `💩`, ...) if you are sure that it does not conflict with the message. By default, this utility uses the single [ASCII Record Separator](https://en.wikipedia.org/wiki/C0_and_C1_control_codes#Field_separators) char `\x1E`, which should be safe for the majority of use cases.

## Usage

Installation:

```bash
npm i @marianmeres/unchunk
```

Signature:

```typescript
createUnchunk(
    onMessage: (message: string) => void,
    messageDelimiter: string = createUnchunk.DELIMITER
): (chunk: string) => void;
```

Illustration example:

```javascript
import { createUnchunk } from '@marianmeres/unchunk';

const messages = [];

// let's create the worker function with a custom "\n\n" delimiter
const unchunk = createUnchunk((message) => {
	// in the real world, we would probably be updating the UI right now...
	messages.push(message);
}, '\n\n');

// Note that the delimiter is split into multiple chunks here for the real
// world illustration. Also note, that in the real world, the chunks
// are streaming in and are not available in advance - which makes this
// example kind of stupid where one could just simply use:
// const messages = chunks.join('').split(delimiter)
const chunks = ['1', '2\n', '\n3', '4', '\n', '\n56\n\n'];

// actual work
chunks.forEach(unchunk);

// we have successfully reconstructed 3 messages
assert(messages.join() === '12,34,56');
```
npm package: @marianobura/vue-sheet-modal
Description: Componentes Vue para modal centrado y bottom sheet con drag y customización
Author: Mariano Buranits
Latest version: 1.0.13

## Props disponibles

### BaseModal

| Prop                | Tipo    | Default       | Descripción                                |
| ------------------- | ------- | ------------- | ----------------------------------------- |
| `modelValue`        | Boolean | —             | Controla si el modal está abierto          |
| `closeOnOverlay`    | Boolean | `true`        | Permite cerrar el modal clickeando fuera   |
| `overlayOpacityStart` | Number  | `0.5`         | Opacidad inicial del fondo                  |
| `overlayColor`      | String  | `'0, 0, 0'`   | Color RGB del fondo en formato `'R, G, B'` |
| `containerBgColor`  | String  | `#ffffff`     | Color de fondo del contenedor               |
| `roundedClass`      | String  | —  | Clase Tailwind para bordes redondeados      |
| `maxHeight`         | String  | `80vh`        | Altura máxima del modal                      |

---

### BaseBottomSheet

| Prop                | Tipo    | Default                        | Descripción                                    |
| ------------------- | ------- | ----------------------------- | --------------------------------------------- |
| `modelValue`        | Boolean | —                             | Controla si el bottom sheet está abierto      |
| `closeOnOverlay`    | Boolean | `true`                        | Permite cerrar clickeando fuera                |
| `overlayOpacityStart` | Number  | `0.5`                         | Opacidad inicial del fondo                      |
| `overlayColor`      | String  | `'0, 0, 0'`                   | Color RGB del fondo en formato `'R, G, B'`     |
| `containerBgColor`  | String  | `#ffffff`                     | Color de fondo del contenedor                   |
| `roundedClass`      | String  | —               | Clase Tailwind para bordes redondeados (arriba)|
| `maxHeight`         | String  | `80vh`                        | Altura máxima del bottom sheet                  |
| `dragHandleClass`   | String  | `h-1.5 w-12 rounded-full bg-neutral-500` | Clase Tailwind para la barra de arrastre |
| `dragPadding`       | String  | `py-2`                        | Clase Tailwind para el padding de la barra de arrastre |
npm package: @marianods/perf-observer-sdk
Description: SDK de observabilidad de performance para navegador (Web Vitals, navigation, errores, long tasks).
Latest version: 0.1.0

# @marianods/perf-observer-sdk

SDK para el navegador: Web Vitals, navigation timing, resources, errores JS, long tasks y cambios de ruta (`history`).

## Instalación

```bash
npm install @marianods/perf-observer-sdk
pnpm add @marianods/perf-observer-sdk
yarn add @marianods/perf-observer-sdk
```

**Dependencias de runtime:** `web-vitals` y `zod`.

### Desde este monorepo (workspace)

```bash
pnpm add @marianods/perf-observer-sdk@workspace:*
```

### Desde la carpeta local (sin registry)

```json
{
  "dependencies": {
    "@marianods/perf-observer-sdk": "file:../ruta/al/repo/packages/sdk"
  }
}
```

Luego en el repo del SDK: `pnpm run build`.

## Uso

```typescript
import { initPerfObserver } from "@marianods/perf-observer-sdk";

const stop = initPerfObserver({
  endpoint: "https://tu-api.com/api/v1/events",
  appId: "mi-app",
  sampleRate: 1,
  batchSize: 10,
  flushIntervalMs: 5000,
  debug: false,
});
```

Next.js (App Router): inicializá en un componente cliente dentro de `useEffect` y devolvé la función de cleanup.

## Publicar en npm

```bash
npm login
cd packages/sdk
npm run build
npm publish --access public
```

## Build del paquete

```bash
pnpm run build
```

Genera `dist/` (ESM, CJS y tipos). `prepublishOnly` ejecuta `tsup` al publicar.
npm package: @marianoguerra/json-human
Description: Convert JSON to human readable HTML
Author: Mariano Guerra
Latest version: 1.0.3

json.human.js: Json Formatting for Human Beings
===============================================

A small library to convert a JSON object into a human readable HTML
representation that is easy to style for different purposes.

Who?
----

Mariano Guerra

Why?
----

At `Event Fabric <http://event-fabric.com/>`_ we need to display JSON to people
from all technical levels without being to technical but also without losing
information about the underlying JSON object.

How?
----

you can see js/demo.js in this repo for an example or use it live at the
`project page <http://marianoguerra.github.io/json.human.js>`_

::

    var node = JsonHuman.format(input);
    output.appendChild(node);


Additional options parameter can be supplied

::

    var input = {
          "url" : [
                "www.google.com",
                "www.google.com",
                {
                  "x" : "x-direction",
                  "y" : "y-direction",
                  "url" : "www.google.com"
                }
          ]
    };

    var node = JsonHuman.format(input, {
        // Show or hide Array-Indices in the output
        showArrayIndex: true,

        // Hyperlinks Option
        // Enable <a> tag in the output html based on object keys
        // Supports only strings and arrays
        hyperlinks : {
            enable : true,
            keys: ['url'],          // Keys which will be output as links
            target : '_blank'       // 'target' attribute of a
        },

        // Options for displaying bool
        bool : {
            // Show text? And what text for true & false?
            showText : true,
            text : {
                true : "Yes",
                false : "No"
            },

            // Show image? And which images (urls)?
            showImage : true,
            img : {
                true : 'css/true.png',
                false : 'css/false.png'
            }
        }
    });

To install it, if you're using `Bower <https://github.com/bower/bower>`_ you
can just run::

    bower install json-human --save


Alternatives
------------

* prettyprint.js: https://github.com/padolsey/prettyPrint.js

License?
--------

`MIT <http://opensource.org/licenses/MIT>`_