open-index/open-npm huggingface dataset:
npm package: @jdrf/dxf-converter-ui-prototype
Description: This prototype was build to experiment and test out our ideas for uploading, manipulating, and exporting changes to [DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF) files. This prototype runs completely in the browser. Future versions will be accompanied 
Latest version: 1.0.0

# DXF Converter Prototype

This prototype was build to experiment and test out our ideas for uploading, manipulating, and exporting changes to [DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF) files. This prototype runs completely in the browser. Future versions will be accompanied by a deployable server.

## Demo
See this [example](https://jdrfelectromag.github.io/dxf-converter-ui-prototype/). 

**Note:** If you've viewed this previously and the demo code has changed, you may need to hard-refresh your browser as the resource names may have changed. 

## Usage
You can view the online demo above. If you want to run this locally, you can clone this repo and simply open `/docs/index.html` in your browser. Note that this was only tested in Firefox and Chrome. Safari will _not_ work at this time. IE and Edge probably will not work either.

### Running Locally
Run `npm install` or `yarn` to install dependencies. 

Run `npm start` or `yarn start` to run the app locally at `http://localhost:3000`.

### Running Tests
To run tests in watch mode, run `npm run test` or `yarn test`. To run the full suite of checks, run `npm run verify` or `yarn verify`.
npm package: @jdrfhq/spirit
Description: Design System for JDRF
Latest version: 1.5.0

# Spirit Design System - Library

## Install global dependencies
To run this project locally:
* [Install Node](https://nodejs.org/en/) version 8 or higher (Download and install)
* Uninstall any globally installed version of gulp `npm uninstall gulp -g` - you can run this from the command line anywhere
* Install gulp-cli globally `npm install gulp-cli -g` - you can run this from the command line anywhere

## Install project dependencies
* Clone this repository: `git clone git@github.com:JDRF/spirit.git` OR `git clone https://github.com/JDRF/spirit.git`
* Navigate to the `library` directory `cd /path/to/where/you/cloned/spirit/library`
* From `/library` run `npm install`

## Running the local environment
* From `/library` run `gulp`

### Browsersync options
A browser window should pop open with the main page of the `/library` project running. The local environment runs on [Browsersync](https://www.browsersync.io) and offers configuration options on a separate port from the environment. If the local environment launches at: `http://localhost:3000`, then the Browsersync config will be available at `http://localhost:3001`

## Stopping the local environment
Press `ctrl + C` at the same time from the command line to stop the local environment. Run `gulp` to start it up again. 

## Creating a new component
With the environment stopped, run `gulp generate:new-component` and follow the prompts to generate basic template files for building a new component's markup, styles, javascript, and sink page.

## Additional Resources
* Component markup and test pages are built using [Nunjucks templates](https://mozilla.github.io/nunjucks/templating.html)
* Styles are built with [SCSS](https://sass-lang.com)
* The build environment is called [ESDS-Build](https://github.com/EightShapes/esds-build#project-structure). There is some light documentation available at that project's README that outlines what each top-level directory is for.
npm package: @jdrunken/eslint
Description: eslint for React
Author: jDrunken
Latest version: 0.2.3

# @jdrunken/eslint

## install

```
npm install @jdrunken/eslint --save-dev
```

## using

- add your package.json
  ``` json
  ...
  "eslint": {
    "extends": [
      "./node_modules/@jdrunken/eslint/eslint.js"
    ]
  }
  ...
  ```


## `.eslintignore`

If you want ignore files, add `.eslintignore` file in your package.json

for example,

```
*.test.js
```

For more information: https://eslint.org/docs/user-guide/configuring.html#disabling-rules-with-inline-comments
npm package: @jdrunken/stylelint
Description: lint for style codes
Author: jDrunken
Latest version: 0.2.1

# @jdrunken/stylelint


## dependancy
[stylelint-config-recommended](https://github.com/stylelint/stylelint-config-recommended),   
[stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard)


## install

```
npm install @jdrunken/stylelint stylelint --save-dev
```


## how to use

take one follow after this.

- run this script in ternimal
  ``` bash
  npx json -I -f package.json -e 'this.stylelint = { "extends" = "./node_modules/glacier-stylelint/stylelintrc.yml"'
  ```

- add your package.json
  ``` json
  ...
  "stylelint": {
    "extends": [
      "./node_modules/@jdrunken/stylelint/stylelintrc.yml"
    ]
  }
  ...
  ```
npm package: @jds-jnj/react-captcha
Description: JDS react captcha is a user-friendly react captcha component.
Author: Aman Jena
Latest version: 1.0.7

# Jds React Captcha
## Simplest captcha component.

JDS react captcha is a user-friendly react captcha component.

## Features

- Simple and easy to use.

## Image

![captchaExample](https://github.com/Aexki/AexBot/assets/50047387/9f63d706-dc50-4b65-bad2-09b63d2b7103)

## Installation

JDS React Captcha requires [ReactJS](https://react.dev/) v17+ to run.

Install the dependencies and devDependencies and start the server.

```sh
npm i @jds-jnj/react-captcha
```

## Usage

You can use the hook using:

```sh
import React, { useRef, useState } from 'react'
import { Captcha } from "@jds-jnj/react-captcha";

const JDSCaptcha = () => {
    const captchaRef = useRef<Captcha>(null);
    const [captchaValidated, setCaptchaValidated] = useState(false);

    const redraw = () => {
        captchaRef.current?.redraw();
    }
    
    return (
        <Captcha ref={captchaRef} length={6} validate={setCaptchaValidated} width />
    );
}
```


## Props

JDS React Captcha has 3 props:

 - length - It signifies the captcha length. The captcha has the minimum length of 2 and a maximum length of 8. (Defaults to 4).
 - validate - It takes a function that recieves the validation status parameter. It is used to set the captcha status in a variable.
 - width - It signifies the captcha width. (Defaults to 250).


## Functions

JDS React Captcha has 2 functions and can be used with the help of captcha reference:

 - redraw - It redraws the canvas with a new captcha without resetting the input.
 - reset - It resets the canvas with a new captcha adn resets the input field as well.

## License

MIT

**Free Software, Hell Yeah!**
npm package: @jds-jnj/react-esign
Description: JDS react esign is a user-friendly react esign component.
Author: Aman Jena
Latest version: 1.0.1

# Jds React ESign
## Simplest esign component.

JDS react esign is a user-friendly react esign component.

## Features

- Simple and easy to use.

## Image

![esignExample](https://github.com/Aexki/AexBot/assets/50047387/716ea2b0-5ae9-4697-ba43-ac1ae9851df7)

## Installation

JDS React Esign requires [ReactJS](https://react.dev/) v17+ to run.

Install the dependencies and devDependencies and start the server.

```sh
npm i @jds-jnj/react-esign
```

## Usage

You can use the hook using:

```sh
import React, { useState } from 'react'
import { CredentialVerification, CredentialVerificationState } from "@jds-jnj/react-esign";

const JDSESign = () => {
    const [showEsign, setShowEsign] = useState(false);
    
    return (
        <>
            <CredentialVerification
                open={showEsign}
                setOpen={setShowEsign}
                title="Application Protection : Credential Verification"
                subTitle="To continue, please verify your credentials."
                publisher="J&J Data Studio (JDS)"
                confirmationMessage="I understand the Email and Password for electronic approval is equivalent of my handwritten signature and I agree to the Terms and Conditions of the J&J Data Studio (JDS) application."
                data={{ userEmail: "amanjena@email.com", password: "12345678" }}
                options={['As an Approver, I approve this record.', 'As an Approver, I reject this record.']}
                onSubmit={async (item: CredentialVerificationState) => { console.log(item); }}
            />
            <button onClick={() => {
                setShowEsign(true);
            }}>Show Esign</button>
        </>
    );
}
```


## Props

JDS React ESign has the following props:

 - open: It is used to open the component.
 - setOpen: It is used to close the component.
 - title: It specifies the title of the dialog.
 - subTitle: It specifies the subtitle of the dialog.
 - publisher: It specifies the publisher of the dialog.
 - confirmationMessage: It specifies the confirmation message of the dialog.
 - data: It specifies the data of the component.
 - options: It specifies the options of the reason field.
 - onSubmit: It specifies the onSubmit function of the component.

## License

MIT

**Free Software, Hell Yeah!**
npm package: @jdsalasc/solvejs
Description: Zero-dependency JavaScript/TypeScript utility library for production apps: date parsing, string cleanup, list transforms, validators, numbers, regex, constants, objects, and async control.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs)](https://www.npmjs.com/package/@jdsalasc/solvejs)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs)](https://www.npmjs.com/package/@jdsalasc/solvejs)


Zero-dependency JavaScript and TypeScript utility suite for real production pain points.

Includes date, string, list, regex, constants, numbers, validators, object, async, and env utilities.

## When to use this package

Use it when your project needs multiple utility domains and you prefer one import surface over many package-level imports.

## Limitations and Constraints

- Utilities prioritize predictable defaults over framework-specific abstractions.
- Date and number helpers do not replace domain-specific finance/timezone libraries for regulated calculations.
- Import package-level modules directly when you need strict control over bundle boundaries.

## Install

```bash
npm i @jdsalasc/solvejs
```

## Quick example

```ts
import { parseDateStrict, slugify, uniqueBy, toNumber, deepMerge, retry, getEnvBoolean } from "@jdsalasc/solvejs";

parseDateStrict("2026-02-07", "YYYY-MM-DD");
slugify("Build Better JS Apps");
uniqueBy([{ id: "a" }, { id: "a" }], (x) => x.id);
toNumber("1,200");
deepMerge({ app: { env: "dev" } }, { app: { version: 2 } });
await retry(() => fetch("https://example.com/health"), { retries: 2, delayMs: 150 });
getEnvBoolean("ENABLE_CACHE", { ENABLE_CACHE: "true" });
```

Docs cookbook and guides: `https://jdsalasca.github.io/solvejs/`
npm package: @jdsalasc/solvejs-async
Description: Zero-dependency JavaScript/TypeScript async utilities for production: sleep, promise timeout, retry with backoff, and concurrency-limited pMap.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-async

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-async)](https://www.npmjs.com/package/@jdsalasc/solvejs-async)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-async)](https://www.npmjs.com/package/@jdsalasc/solvejs-async)

Zero-dependency async/concurrency utilities for JavaScript and TypeScript.

## Utilities

- `sleep`
- `timeout`
- `retry`
- `pMap`
- `debouncePromise`
- `throttlePromise`
- `createTaskQueue`
- `createRateLimiter`
- `createTokenBucketLimiter`

## When to use this package

Use it when you need predictable retry logic, promise time limits, queues, and rate-limited async execution without heavy helper libraries.

## Limitations and Constraints

- `throttlePromise` drops calls made during the throttle window.
- `debouncePromise` cancels previous pending calls with a rejection.
## Install

```bash
npm i @jdsalasc/solvejs-async
```

## Quick example

```ts
import { createTaskQueue, createRateLimiter, createTokenBucketLimiter, retry, timeout, pMap } from "@jdsalasc/solvejs-async";

const data = await retry(
  () => timeout(fetch("https://api.example.com/items").then((r) => r.json()), 3000),
  { retries: 2, delayMs: 200, backoffFactor: 2 }
);

const ids = await pMap(data.items, async (item) => item.id, { concurrency: 4 });
const queue = createTaskQueue({ concurrency: 2 });
const limiter = createRateLimiter({ maxCalls: 5, windowMs: 1000 });
const burstLimiter = createTokenBucketLimiter({ capacity: 10, refillTokens: 2, refillIntervalMs: 1000 });
await queue.add(() => limiter(() => fetch("https://api.example.com/reindex")));
await burstLimiter(() => fetch("https://api.example.com/heavy-sync"), 3);
```

## Endpoint tier token costs (token-bucket)

```ts
import { createTokenBucketLimiter } from "@jdsalasc/solvejs-async";

const limiter = createTokenBucketLimiter({ capacity: 20, refillTokens: 10, refillIntervalMs: 1000 });
const endpointCost = {
  "/health": 1,
  "/search": 2,
  "/invoice/preview": 3,
  "/invoice/finalize": 6,
  "/batch/settlement": 10
} as const;

await limiter(() => fetch("https://api.example.com/health"), endpointCost["/health"]);
await limiter(() => fetch("https://api.example.com/batch/settlement"), endpointCost["/batch/settlement"]);
```
npm package: @jdsalasc/solvejs-constants
Description: Zero-dependency JavaScript/TypeScript constants for production: time and file-size units, HTTP methods/headers, delimiters, and boolean string parsing.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-constants

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-constants)](https://www.npmjs.com/package/@jdsalasc/solvejs-constants)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-constants)](https://www.npmjs.com/package/@jdsalasc/solvejs-constants)


Zero-dependency constants and parsing helpers for JavaScript and TypeScript.

## Utilities

- `TIME`
- `FILE_SIZE_BYTES`
- `HTTP_METHODS`
- `COMMON_HTTP_HEADERS`
- `parseBooleanString`

## When to use this package

Use it when you want shared constant values and predictable string-to-boolean parsing across services and frontend apps.

## Limitations and Constraints

- Constants are generic defaults and may not match every org-specific protocol convention.
- `parseBooleanString` targets common true/false string forms, not localization dictionaries.

## Install

```bash
npm i @jdsalasc/solvejs-constants
```

## Quick example

```ts
import { TIME, FILE_SIZE_BYTES, parseBooleanString } from "@jdsalasc/solvejs-constants";

const ttl = 15 * TIME.MINUTE;
const maxUpload = 10 * FILE_SIZE_BYTES.MB;
parseBooleanString("true"); // true
```
npm package: @jdsalasc/solvejs-date
Description: Zero-dependency JavaScript/TypeScript date utilities for production: strict parsing, UTC-safe formatting, unix timestamp conversion, date math, and calendar helpers.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-date

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-date)](https://www.npmjs.com/package/@jdsalasc/solvejs-date)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-date)](https://www.npmjs.com/package/@jdsalasc/solvejs-date)


Zero-dependency date utilities for JavaScript and TypeScript.

## Utilities

- `formatDate`, `toIsoDate`
- `parseDateStrict`, `parseIsoDate`, `parseUnixTimestamp`
- `addDays`, `diffInDays`
- `startOfDay`, `endOfDay`
- `isLeapYear`, `daysInMonth`

## When to use this package

Use it when you need predictable date parsing/formatting, UTC-safe operations, and common date math without adding heavy dependencies.

## Limitations and Constraints

- Formatting tokens are intentionally limited to a small practical set.
- Helpers operate in UTC-safe mode and avoid locale-calendar formatting features.
- For advanced timezone rules per region, integrate a dedicated timezone library.

## Install

```bash
npm i @jdsalasc/solvejs-date
```

## Quick example

```ts
import { parseDateStrict, addDays, toIsoDate } from "@jdsalasc/solvejs-date";

const d = parseDateStrict("2026-02-07", "YYYY-MM-DD");
const next = addDays(d!, 3);
toIsoDate(next); // "2026-02-10"
```

## DST/Timezone matrix quick check

```ts
import { diffInDays, parseIsoDate } from "@jdsalasc/solvejs-date";

const usStart = parseIsoDate("2026-03-08T06:59:59.000Z");
const usEnd = parseIsoDate("2026-03-09T06:59:59.000Z");
const euStart = parseIsoDate("2026-03-29T00:59:59.000Z");
const euEnd = parseIsoDate("2026-03-30T00:59:59.000Z");

if (usStart && usEnd) diffInDays(usEnd, usStart); // 1
if (euStart && euEnd) diffInDays(euEnd, euStart); // 1
```
npm package: @jdsalasc/solvejs-env
Description: Zero-dependency JavaScript/TypeScript environment variable utilities for production: typed parsing, enum checks, and required key validation.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-env

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-env)](https://www.npmjs.com/package/@jdsalasc/solvejs-env)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-env)](https://www.npmjs.com/package/@jdsalasc/solvejs-env)

Zero-dependency environment variable parsing and validation utilities for JavaScript and TypeScript.

## Utilities

- `getEnvString`
- `getEnvNumber`
- `getEnvBoolean`
- `getEnvEnum`
- `getEnvArray`
- `getEnvJson`
- `getEnvUrl`
- `getEnvDsn`
- `validateRequiredEnv`

## When to use this package

Use it when you need safe startup checks for API/backend apps with typed environment parsing and clear failure messages.

## Install

```bash
npm i @jdsalasc/solvejs-env
```

## Quick example

```ts
import {
  getEnvArray,
  getEnvBoolean,
  getEnvDsn,
  getEnvEnum,
  getEnvJson,
  getEnvNumber,
  getEnvString,
  getEnvUrl,
  validateRequiredEnv
} from "@jdsalasc/solvejs-env";

const missing = validateRequiredEnv(["DATABASE_DSN", "JWT_SECRET"]);
if (missing.length > 0) {
  throw new Error(`Missing env keys: ${missing.join(", ")}`);
}

const nodeEnv = getEnvEnum("NODE_ENV", ["development", "test", "production"], process.env, { defaultValue: "development" });
const port = getEnvNumber("PORT", process.env, { defaultValue: 3000, integer: true, min: 1, max: 65535 });
const jwtSecret = getEnvString("JWT_SECRET");
const enableCache = getEnvBoolean("ENABLE_CACHE", process.env, { defaultValue: false });
const corsOrigins = getEnvArray("CORS_ORIGINS", process.env, { defaultValue: ["http://localhost:3000"] });
const featureFlags = getEnvJson("FEATURE_FLAGS", process.env, { defaultValue: { newCheckout: false } });
const apiBaseUrl = getEnvUrl("API_BASE_URL", process.env, { defaultValue: "https://api.example.com", allowedProtocols: ["https"] });
const databaseDsn = getEnvDsn("DATABASE_DSN", process.env, { requireAuth: true });
```
npm package: @jdsalasc/solvejs-list
Description: Zero-dependency JavaScript/TypeScript list utilities for production: uniqueBy, groupBy, keyBy, partition, intersection, difference, chunk, and sortBy.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-list

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-list)](https://www.npmjs.com/package/@jdsalasc/solvejs-list)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-list)](https://www.npmjs.com/package/@jdsalasc/solvejs-list)


Zero-dependency array/list utilities for JavaScript and TypeScript.

## Utilities

- `unique`, `uniqueBy`, `compact`, `chunk`
- `groupBy`, `keyBy`, `partition`
- `intersection`, `difference`
- `sortBy`

## When to use this package

Use it when you repeatedly write list transformation logic and want consistent, tested helpers for grouping, deduplication, and sorting.

## Limitations and Constraints

- Sorting/grouping semantics rely on mapper outputs and do not infer locale-aware collation.
- Large-list performance depends on data shape and key cardinality; benchmark with production-like payloads.

## Install

```bash
npm i @jdsalasc/solvejs-list
```

## Quick example

```ts
import { uniqueBy, groupBy, sortBy } from "@jdsalasc/solvejs-list";

const rows = [{ id: "a", team: "x", score: 2 }, { id: "a", team: "x", score: 2 }, { id: "b", team: "y", score: 1 }];
const uniqueRows = uniqueBy(rows, (r) => r.id);
const byTeam = groupBy(uniqueRows, (r) => r.team);
sortBy(byTeam.x, (r) => r.score, "desc");
```

## Scale note

For high-volume pipelines (`10k`/`100k` rows), run `npm run benchmark` from the monorepo to profile `uniqueBy`, `groupBy`, and `sortBy` with your real data shape.
npm package: @jdsalasc/solvejs-numbers
Description: Zero-dependency JavaScript/TypeScript number utilities for production: parsing, clamp/round, safe division, percent change, median, and currency formatting.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-numbers

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-numbers)](https://www.npmjs.com/package/@jdsalasc/solvejs-numbers)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-numbers)](https://www.npmjs.com/package/@jdsalasc/solvejs-numbers)


Zero-dependency number utilities for JavaScript and TypeScript.

## Utilities

- `clamp`, `roundTo`, `sum`, `average`, `median`
- `percent`, `percentChange`
- `calculateTaxAmount`, `applyDiscount`, `grossMargin`
- `safeDivide`, `isBetween`
- `toCurrency`, `toNumber`, `randomInt`

## When to use this package

Use it when you need safer business math and robust number parsing for forms, analytics, and pricing logic.

## Limitations and Constraints

- Results use IEEE-754 floating-point arithmetic.
- Money workflows should enforce explicit rounding boundaries per domain rules.

## Install

```bash
npm i @jdsalasc/solvejs-numbers
```

## Quick example

```ts
import { toNumber, safeDivide, percentChange, calculateTaxAmount, applyDiscount, grossMargin } from "@jdsalasc/solvejs-numbers";

const revenue = toNumber("12,500");
const ratio = safeDivide(50, 0, 0);
const growth = percentChange(120, 100); // 20
const tax = calculateTaxAmount(199.99, 19); // 38
const discounted = applyDiscount(199.99, 15); // 169.99
const margin = grossMargin(1000, 700); // 30
```

## Precision note

JavaScript numbers are floating-point. For money-sensitive flows, apply explicit rounding steps (for example `roundTo(value, 2)`) at domain boundaries (tax, subtotal, invoice total).
npm package: @jdsalasc/solvejs-objects
Description: Zero-dependency JavaScript/TypeScript object utilities for production: pick, omit, hasOwn, nested get/set by path, and deepMerge for config/state.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-objects

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-objects)](https://www.npmjs.com/package/@jdsalasc/solvejs-objects)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-objects)](https://www.npmjs.com/package/@jdsalasc/solvejs-objects)


Zero-dependency object utilities for JavaScript and TypeScript.

## Utilities

- `pick`, `omit`, `hasOwn`
- `get`, `set`
- `deepMerge`

## When to use this package

Use it when you need consistent object shaping and nested path operations without pulling a larger utility library.

## Limitations and Constraints

- Path helpers currently support dot-separated string paths only.
- `deepMerge` merges plain objects and replaces arrays by design.

## Install

```bash
npm i @jdsalasc/solvejs-objects
```

## Quick example

```ts
import { pick, set, deepMerge } from "@jdsalasc/solvejs-objects";

const user = pick({ id: "u1", name: "Ada", role: "admin" }, ["id", "name"]);
const state = { filters: {} };
set(state, "filters.status", "active");
deepMerge({ app: { flags: { a: true } } }, { app: { flags: { b: true } } });
```
npm package: @jdsalasc/solvejs-regex
Description: Zero-dependency JavaScript/TypeScript regex utilities: built-in production patterns (UUID v4, IPv4, ISO date) plus safe pattern validation and escaping.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-regex

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-regex)](https://www.npmjs.com/package/@jdsalasc/solvejs-regex)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-regex)](https://www.npmjs.com/package/@jdsalasc/solvejs-regex)


Zero-dependency regex utilities and production-ready patterns for JavaScript and TypeScript.

## Utilities

- Built-in patterns: `email`, `phoneE164`, `urlHttp`, `hexColor`, `username`, `uuidV4`, `ipv4`, `isoDate`
- `validateByName`
- `validateWithPattern`
- `escapeRegex`

## When to use this package

Use it when you need common regex checks and safer dynamic regex generation without rewriting pattern boilerplate.

## Limitations and Constraints

- Built-in patterns are pragmatic defaults, not full RFC validators.
- Always validate business-critical formats with domain-specific checks.

## Install

```bash
npm i @jdsalasc/solvejs-regex
```

## Quick example

```ts
import { REGEX_PATTERNS, validateWithPattern, escapeRegex } from "@jdsalasc/solvejs-regex";

validateWithPattern("550e8400-e29b-41d4-a716-446655440000", REGEX_PATTERNS.uuidV4);
new RegExp(`^${escapeRegex("user.name")}$`);
```
npm package: @jdsalasc/solvejs-schema
Description: Zero-dependency JavaScript/TypeScript schema validation with parse/safeParse, coercion, typed inference, and JSON Schema export.
Author: jdsalasc
Latest version: 1.0.0

# @jdsalasc/solvejs-schema

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-schema)](https://www.npmjs.com/package/@jdsalasc/solvejs-schema)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-schema)](https://www.npmjs.com/package/@jdsalasc/solvejs-schema)

Zero-dependency schema validation for JavaScript and TypeScript with typed inference and JSON Schema export.

## Utilities

- `s.string()`, `s.number()`, `s.boolean()`, `s.date()`
- `s.literal()`, `s.array()`, `s.object()`, `s.union()`
- `parse`, `safeParse`
- `optional`
- `s.refine`
- `toJsonSchema`
- `Infer`

## When to use this package

Use it when you need one schema definition for runtime validation, TypeScript types, and JSON Schema generation.

## Limitations and Constraints

- Object parser only returns declared shape keys.
- Optional fields are represented via `optional()` in schema shape.
- JSON Schema export is pragmatic and intentionally scoped.

## Install

```bash
npm i @jdsalasc/solvejs-schema
```

## Quick example

```ts
import { s, type Infer, toJsonSchema } from "@jdsalasc/solvejs-schema";

const userSchema = s.object({
  id: s.string().uuid(),
  age: s.number({ coerce: true }).int().min(18),
  email: s.string({ trim: true }).email(),
  newsletter: s.boolean({ coerce: true }).optional()
});

type User = Infer<typeof userSchema>;

const parsed = userSchema.safeParse({
  id: "550e8400-e29b-41d4-a716-446655440000",
  age: "21",
  email: "user@example.com",
  newsletter: "true"
});

const jsonSchema = toJsonSchema(userSchema);
```
npm package: @jdsalasc/solvejs-string
Description: Zero-dependency JavaScript/TypeScript string utilities for production: slugify, case transforms, HTML stripping, masking, and safe truncation.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-string

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-string)](https://www.npmjs.com/package/@jdsalasc/solvejs-string)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-string)](https://www.npmjs.com/package/@jdsalasc/solvejs-string)


Zero-dependency string utilities for JavaScript and TypeScript.

## Utilities

- `toKebabCase`, `toCamelCase`, `toTitleCase`
- `slugify`
- `stripHtml`
- `mask`
- `truncate`

## When to use this package

Use it when you need clean, reusable string formatting for UI labels, slugs, payload normalization, and safe preview text.

## Limitations and Constraints

- Casing/slugging aims for practical normalization, not full linguistic transliteration.
- HTML stripping uses regex and is intended for lightweight cleanup, not HTML sanitization security guarantees.

## Install

```bash
npm i @jdsalasc/solvejs-string
```

## Quick example

```ts
import { slugify, stripHtml, truncate } from "@jdsalasc/solvejs-string";

const plain = stripHtml("<p>Hello <b>world</b></p>");
const slug = slugify(plain); // "hello-world"
truncate(plain, 5); // "Hello..."
```
npm package: @jdsalasc/solvejs-validators
Description: Zero-dependency JavaScript/TypeScript validators for forms and APIs with structured result codes: phone, postal, username, password, UUID v4, IPv4, and ISO date.
Author: jdsalasc
Latest version: 1.7.1

# @jdsalasc/solvejs-validators

[![npm](https://img.shields.io/npm/v/@jdsalasc/solvejs-validators)](https://www.npmjs.com/package/@jdsalasc/solvejs-validators)
[![node](https://img.shields.io/node/v/@jdsalasc/solvejs-validators)](https://www.npmjs.com/package/@jdsalasc/solvejs-validators)


Zero-dependency validators for JavaScript and TypeScript forms and API payloads.

## Utilities

- Structured validators returning `{ ok, code, message }`
- `validateCellphoneNumber`, `validateEmail`, `validateHttpUrl`
- `validateName`, `validateUsername`, `validateAddressLine`, `validatePostalCode` (country-aware)
- `validateStrongPassword`, `validateCreditCardNumber`
- `validateUuidV4`, `validateIpv4`, `validateIsoDateString`
- Boolean wrappers (`isX`) for quick checks

## When to use this package

Use it when you need reusable validation rules with explicit error codes instead of plain true/false outputs.

## Limitations and Constraints

- Country coverage is explicit and incremental; unsupported countries return structured errors.
- Validators are format-focused and do not verify external authority databases.

## Install

```bash
npm i @jdsalasc/solvejs-validators
```

## Quick example

```ts
import { validateCellphoneNumber, validateUuidV4 } from "@jdsalasc/solvejs-validators";

validateCellphoneNumber("+573001234567", { country: "CO" });
validateUuidV4("550e8400-e29b-41d4-a716-446655440000");
// Postal code examples by country:
// validatePostalCode("110111", { country: "CO" });
// validatePostalCode("28013", { country: "ES" });
// validatePostalCode("K1A 0B1", { country: "CA" });
// validatePostalCode("11000", { country: "UY" });
```