open-index/open-npm huggingface dataset:
npm package: @quickflo/quickforms
Description: Framework-agnostic core for QuickForms - JSON Schema form generator
Latest version: 1.21.0

# @quickforms/core

Framework-agnostic core for QuickForms - JSON Schema form generator.

## Features

- **ComponentRegistry**: Generic registry system for component registration with tester priority
- **SchemaUtils**: JSON Schema utilities (validation via Ajv, default values, path traversal)
- **Testers**: Predicate functions for schema type detection
- **TypeScript**: Full type definitions for JSON Schema and core interfaces

## Installation

```bash
pnpm add @quickforms/core
```

## Usage

### Component Registry

```typescript
import { ComponentRegistry, rankWith, isStringType } from '@quickforms/core';

const registry = new ComponentRegistry();

// Register a component with a tester
registry.register(
  'string-input',
  MyStringInputComponent,
  (schema) => rankWith(1, isStringType(schema))
);

// Get the best matching component
const component = registry.getComponent({ type: 'string' });
```

### Schema Utilities

```typescript
import { SchemaUtils } from '@quickforms/core';

const utils = new SchemaUtils();

// Validate data
const result = utils.validate(schema, data);
if (!result.valid) {
  console.error(result.errors);
}

// Get default values
const defaults = utils.getDefaultValue(schema);

// Get schema at path
const fieldSchema = utils.getSchemaAtPath(schema, 'user.address.street');

// Check if field is required
const isRequired = utils.isRequired(schema, 'user.name');
```

### Testers

```typescript
import { 
  rankWith, 
  isStringType, 
  isEmailFormat,
  and 
} from '@quickforms/core';

// Simple tester
const stringTester = (schema) => rankWith(1, isStringType(schema));

// Format-specific tester (higher priority)
const emailTester = (schema) => rankWith(2, isEmailFormat(schema));

// Combine testers
const requiredEmailTester = (schema) => 
  rankWith(3, and(isEmailFormat, isRequired)(schema));
```

## License

MIT
npm package: @quickgl/lvgl-style-loader
Description: convert css to lvgl style struct
Author: lee
Latest version: 0.1.0

# `lvgl-style-loader`

transform css to lvgl style struct. lvgl style is similar to css. only a subset of css is supported.

## Usage

```
const lvglStyleLoader = require('lvgl-style-loader');
```


## implement styles

### Size and position
- [x] width
- [x] min_width
- [x] max_width
- [x] height
- [x] min_height
- [x] max_height
- [x] x
- [x] y
- [ ] align
- [x] transform_width
- [x] transform_height
- [x] translate_x
- [x] translate_y
- [ ] transform_zoom
- [ ] transform_angle

### Padding
- [x] pad_top
- [x] pad_bottom
- [x] pad_left
- [x] pad_right
- [ ] pad_row
- [ ] pad_column

### Background
- [x] bg_color
- [ ] bg_opa
- [ ] bg_grad_color
- [ ] bg_grad_dir
- [ ] bg_main_stop
- [ ] bg_grad_stop
- [ ] bg_img_src
- [ ] bg_img_opa
- [ ] bg_img_recolor
- [ ] bg_img_recolor_opa
- [ ] bg_img_tiled

### Border
- [x] border_color
- [ ] border_opa
- [ ] border_width
- [ ] border_side
- [ ] border_post

### Outline
- [ ] outline_width
- [ ] outline_color
- [ ] outline_opa
- [ ] outline_pad

### Shadow
- [ ] shadow_width
- [ ] shadow_ofs_x
- [ ] shadow_ofs_y
- [ ] shadow_spread
- [ ] shadow_color
- [ ] shadow_opa

### Image
- [ ] img_opa
- [ ] img_recolor
- [ ] img_recolor_opa

### Line
- [x] line_width
- [ ] line_dash_width
- [ ] line_dash_gap
- [ ] line_rounded
- [x] line_color
- [ ] line_opa

### Arc
- [ ] arc_width
- [ ] arc_rounded
- [ ] arc_color
- [ ] arc_opa
- [ ] arc_img_src

### Text
- [ ] text_color
- [ ] text_opa
- [ ] text_font
- [ ] text_letter_space
- [ ] text_line_space
- [ ] text_decor
- [ ] text_align

### Miscellaneous
- [ ] radius
- [ ] clip_corner
- [ ] opa
- [ ] color_filter_dsc
- [ ] color_filter_opa
- [ ] anim_time
- [ ] anim_speed
- [ ] transition
- [ ] blend_mode
- [ ] layout
- [ ] base_dir
npm package: @quickgl/runtime
Description: quickgl runtime
Author: lee
Latest version: 0.1.0

# `runtime`

javascript runtime for react lvgl.

## Support LVGL widgets

### core widgets
- [x] obj
- [ ] Arc
- [ ] Bar
- [ ] Button
- [ ] Button matrix
- [ ] Canvas
- [ ] Checkbox
- [ ] Drop-down list
- [ ] Image
- [x] Label
- [ ] Line
- [ ] Roller
- [ ] Slider
- [ ] Switch
- [ ] Table
- [ ] Text area

### extra widgets
- [ ] Animation Image
- [ ] Calendar
- [ ] Chart
- [ ] Color Wheel
- [ ] Image Button
- [ ] Keyboard
- [ ] LED
- [ ] List
- [ ] Menu
- [ ] Meter
- [ ] Message box
- [ ] Span
- [ ] Spinbox
- [ ] Spinner
- [ ] Tabview
- [ ] TileView
- [ ] Window
npm package: @quickglance/metalsmith-extend-metadata
Description: A Metalsmith plugin
Author: quickglance
Latest version: 0.1.0

# metalsmith-extend-metadata

  A [Metalsmith](http://www.metalsmith.io/) plugin to extend source files metadata with data from json files.

## Installation

  $ npm install @quickglance/metalsmith-extend-metadata

## Usage

## License

  MIT
npm package: @quickglance/metalsmith-folder-config
Description: metalsmith folder configuration plugin
Author: quickglance
Latest version: 0.1.1

[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/e4b2qvwolgxr7c6j?svg=true)](https://ci.appveyor.com/project/leandrowilliam/metalsmith-folder-config)

# metalsmith-folder-config

  A [Metalsmith](http://www.metalsmith.io/) plugin to apply global metadata to every file inside a folder that are at the same level.

## Installation

  $ npm install @quickglance/metalsmith-folder-config

## Usage

  Pass `options` to the folder-config plugin and pass it to metalsmith with the `use` method:

```js
var folderConfig = require('metalsmith-folder-config');

metalsmith.use(folderConfig({
    configFileName: 'config.json' // default: folder-config.json
}));
```

### In some folder:

  * layout
  * build
  * src
    * folder 1
      * folder.config.json
      * markdownfile.md
      * markdownfile.md
      * markdownfile.md
    * folder 2
      * folder.config.json
      * markdownfile.md
      * markdownfile.md
      * markdownfile.md

## License

  MIT
npm package: @quickglance/metalsmith-liquid
Description: metalsmith liquid plugin
Author: quickglance
Latest version: 0.1.1

# metalsmith-liquid

  A [Metalsmith](http://www.metalsmith.io/) plugin to render [Liquid](http://liquidmarkup.org/).

## Installation

  $ npm install @quickglance/metalsmith-liquid

## Usage

  Pass `options` to the liquid plugin and pass it to metalsmith with the `use` method:

```js
var liquid = require('metalsmith-liquid');

metalsmith.use(liquid({
    filters: {
        example: function (input) {
            return '<div>' + input + '</div>';
        },
        other: function () {
            return '<h1>Other Example</h1>';
        }
    }
}));
```

### Registration of tags 

Not supported in this version

### In .md files

```md
---
name: Liquid
---
{{name | example}}
```

### Results in this html

```html
<div>Liquid</div>
```

## License

  MIT
npm package: @quicklogio/node
Description: Official Node.js/TypeScript SDK for Quicklog.io
Author: Quicklog
Latest version: 0.1.1

# @quicklogio/node

Official Node.js/TypeScript SDK for Quicklog.

## Installation

```bash
npm install @quicklogio/node
```

## Quick Start

```typescript
import { Quicklog } from '@quicklogio/node';

const quicklog = new Quicklog({
  apiKey: 'ql_live_xxx'
});

// Track an event
await quicklog.track({
  channel: 'user-signups',
  event: 'user.signed-up',
  userId: 'user_123',
  description: 'John Doe (john@example.com) signed up for the Pro plan',
  metadata: {
    plan: 'pro',
    source: 'landing-page'
  }
});

// Identify a user
await quicklog.identify({
  userId: 'user_123',
  name: 'John Doe',
  email: 'john@example.com',
  metadata: {
    plan: 'pro',
    company: 'Acme Inc'
  }
});
```

## Configuration

```typescript
const quicklog = new Quicklog({
  apiKey: 'ql_live_xxx',       // Required
  baseUrl: 'https://api.quicklog.io', // Optional
  timeout: 10000,              // Optional, request timeout in ms
  retries: 2,                  // Optional, retry count for 429/5xx errors
  debug: false                 // Optional, log debug info
});
```

## API

### `track(event)`

Track a single event.

```typescript
await quicklog.track({
  channel: 'payments',         // Required: lowercase, numbers, hyphens
  event: 'payment.completed',  // Required: letters, numbers, dots, underscores, hyphens
  description: 'Payment of $99', // Optional: max 5000 chars
  userId: 'user_123',          // Optional: max 255 chars
  metadata: { amount: 99 }     // Optional: max 10KB, max depth 5
});
```

### `identify(user)`

Identify or update a user.

```typescript
await quicklog.identify({
  userId: 'user_123',          // Required: max 255 chars
  name: 'John Doe',            // Optional: max 255 chars
  email: 'john@example.com',   // Optional: max 255 chars
  metadata: { plan: 'pro' }    // Optional: max 10KB, max depth 5
});
```

## Error Handling

```typescript
import { Quicklog, QuicklogError } from '@quicklogio/node';

try {
  await quicklog.track({ channel: 'test', event: 'test.event' });
} catch (error) {
  if (error instanceof QuicklogError) {
    console.error(`Quicklog error: ${error.message}`, {
      statusCode: error.statusCode,
      retryable: error.retryable
    });
  }
}
```

**Retry behavior:**
- 400/401 errors are not retried
- 429 (rate limit) and 5xx errors are retried with exponential backoff

## Requirements

- Node.js 16+ (Node 18+ recommended for native fetch)

## License

MIT