open-index/open-npm huggingface dataset:
npm package: @open-tap/client
Description: TAP Client SDK - Browser and Node.js client for TAP availability and bookings
Author: simonorzel26
Latest version: 0.2.0

# @tap/client

Browser and Node.js SDK for consuming TAP (Time Allocation Protocol) APIs.

## Installation

```bash
npm install @tap/client
# or
bun add @tap/client
```

## Usage

```typescript
import { 
  AvailabilityClient,
  AvailabilityManager,
  HoldClient 
} from '@tap/client';

// Create availability client
const client = new AvailabilityClient({
  baseUrl: 'https://api.example.com',
});

// Fetch availability
const { slots } = await client.getAvailability({
  tenantId: 'tenant_123',
  resourceId: 'resource_456',
  from: Date.now(),
  to: Date.now() + 86400000,
});

// Use the manager for caching and real-time updates
const manager = new AvailabilityManager({
  baseUrl: 'https://api.example.com',
  tenantId: 'tenant_123',
  resourceId: 'resource_456',
});

await manager.connect();
manager.subscribe((slots) => {
  console.log('Availability updated:', slots);
});
```

## What's Included

- **AvailabilityClient**: HTTP client for availability queries
- **AvailabilityManager**: Manages caching and WebSocket subscriptions
- **HoldClient**: WebSocket client for placing and managing holds
- **Timezone Utilities**: Convert slots between timezones

## License

MIT
npm package: @open-tap/core
Description: TAP Core - Time Allocation Protocol business logic and availability calculation
Author: simonorzel26
Latest version: 0.2.0

# @tap/core

Business logic for the TAP (Time Allocation Protocol) - availability calculation, hold management, and booking workflows.

## Installation

```bash
npm install @tap/core @tap/protocol zod
# or
bun add @tap/core @tap/protocol zod
```

## Usage

```typescript
import { 
  calculateAvailability,
  createHoldManager,
  createBookingManager,
  TapError
} from '@tap/core';

// Calculate availability from offers, holds, and bookings
const slots = calculateAvailability({
  offers,
  holds,
  bookings,
  from: Date.now(),
  to: Date.now() + 86400000, // 24 hours
  slotMinutes: 60,
  timezone: 'America/New_York'
});

// Handle errors
try {
  // ... operations
} catch (error) {
  if (error instanceof TapError) {
    console.log(error.code); // 'TAP_SLOT_UNAVAILABLE'
  }
}
```

## What's Included

- **Availability Calculator**: Computes open slots from offers minus holds/bookings
- **Hold Manager**: Place, release, and expire holds with concurrency control
- **Booking Manager**: Confirm and cancel bookings
- **Interval Utilities**: Merge, subtract, and expand time intervals
- **Error Types**: Typed TAP errors with HTTP status codes

## License

MIT
npm package: @open-tap/protocol
Description: TAP - Time Allocation Protocol schemas, types, and constants
Author: simonorzel26
Latest version: 0.2.0

# @tap/protocol

Zod schemas, TypeScript types, and constants for the TAP (Time Allocation Protocol).

## Installation

```bash
npm install @tap/protocol zod
# or
bun add @tap/protocol zod
```

## Usage

```typescript
import { 
  AvailabilityPostRequestBodySchema,
  BookPostRequestBodySchema,
  type TenantId,
  type ResourceId,
  type SlotId,
  API_ROUTES 
} from '@tap/protocol';

// Validate request bodies
const result = AvailabilityPostRequestBodySchema.safeParse(requestBody);

// Use branded types for type safety
const tenantId: TenantId = '01AN4Z07BY79KA1307SR9X4MV3' as TenantId;

// Access API route constants
console.log(API_ROUTES.AVAILABILITY); // '/availability'
```

## What's Included

- **Schemas**: Zod schemas for all TAP HTTP and WebSocket messages
- **Types**: TypeScript types inferred from schemas
- **Constants**: API routes, error codes
- **Branded Types**: `TenantId`, `ResourceId`, `SlotId`, `HoldId`, `BookingId`

## OpenAPI

```typescript
import { openApiDocument } from '@tap/protocol/openapi';
```

## License

MIT
npm package: @open-tech-world/create-es-lib
Description: Node.js CLI tool for creating modern ECMAScript libraries.
Author: Thanga Ganapathy
Latest version: 0.11.2

<div align="center">

# @open-tech-world/create-es-lib

[![Linux Build](https://github.com/open-tech-world/create-es-lib/actions/workflows/linux_build.yml/badge.svg)](https://github.com/open-tech-world/create-es-lib/actions/workflows/linux_build.yml) [![macOS Build](https://github.com/open-tech-world/create-es-lib/actions/workflows/macos_build.yml/badge.svg)](https://github.com/open-tech-world/create-es-lib/actions/workflows/macos_build.yml) [![Windows Build](https://github.com/open-tech-world/create-es-lib/actions/workflows/windows_build.yml/badge.svg)](https://github.com/open-tech-world/create-es-lib/actions/workflows/windows_build.yml) [![CodeFactor](https://www.codefactor.io/repository/github/open-tech-world/create-es-lib/badge)](https://www.codefactor.io/repository/github/open-tech-world/create-es-lib) ![npm (scoped)](https://img.shields.io/npm/v/@open-tech-world/create-es-lib?color=blue)

![](demo.gif)

</div>

> Node.js CLI tool for creating modern ECMAScript libraries.

## Features

✔️ Zero-Config to Get Started 🚀

✔️ Completely Customizable

✔️ No Lock-In Framework

✔️ Follows [Semantic Versioning 2.0.0](https://semver.org/)

## Tech Stack

✔️ [ESLint](https://eslint.org/)

✔️ [Git](https://git-scm.com/)

✔️ [Jest](https://jestjs.io/)

✔️ [Prettier](https://prettier.io/)

✔️ [Rollup](https://rollupjs.org/guide/en/)

✔️ [Typescript](https://www.typescriptlang.org/)

## Library Types

🚧 Browser (WIP)

🚧 Node.js CLI (WIP)

✔️ Node.js Module

✔️ React

## Requirements

- Node.js ^12.22.0 || ^14.17.0 || >=16.0.0
- Latest Npm or Yarn

## Install

⚠️ You should not install this package locally or globally, and it is only used to run on the CLI.

## Usage

Using npm
```bash
npx @open-tech-world/create-es-lib@latest my-lib
```
Using Yarn

```bash
yarn create @open-tech-world/es-lib my-lib
```

## Troubleshooting

❌ Error: Cannot create "/usr/local/bin/create-es-lib" due to insufficient permissions.

You can fix the above error by giving `sudo` access to the command line and after a library created, change the library folder owner using `sudo chown -R $USER:$USER my-lib`.

## Getting Started

Post creating a library, follow the on-screen instructions to get started.

## License

Copyright (c) [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](./LICENSE)).
npm package: @open-tech-world/create-react-app
Description: Create react apps with optional build config.
Author: Thanga Ganapathy
Latest version: 0.2.2

# @open-tech-world/create-react-app

> Create react apps with optional build config.

## Features

- Zero config to get started
- Typescript support
- Completely customizable
- Display error overlay in app

## Getting started

Run any one of the following commands to start creating your app.

```sh
# With npx
$ npx @open-tech-world/create-react-app [your-app-name]

# With npm
$ npm init @open-tech-world/react-app [your-app-name]
```

## Scripts

### Start the dev server

It runs the app in development mode. Check the running app at [http://localhost:8080](http://localhost:8080)

```sh
# With npm
$ npm start

# With yarn
$ yarn start
```

### Creates a production build

It builds the app for production deployment.

```sh
# With npm
$ npm run build

# With yarn
$ yarn run build
```
npm package: @open-tech-world/es-cli-styles
Description: Add CLI styles to text.
Author: Thanga Ganapathy
Latest version: 0.3.0
Deprecated: Please use @opentf/cli-styles

<div align="center">

# @open-tech-world/es-cli-styles
[![Build](https://github.com/open-tech-world/es-cli-styles/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/es-cli-styles/actions/workflows/build.yml) [![CodeFactor](https://www.codefactor.io/repository/github/open-tech-world/es-cli-styles/badge)](https://www.codefactor.io/repository/github/open-tech-world/es-cli-styles)
</div>

> Add CLI styles to text.

## Features

✔️ 24-Bit Colors (True Color)

✔️ Nested Styles

## Supported Styles

✔️ Foreground Colors

✔️ Background Colors

✔️ Bold

✔️ Dim

✔️ Italic

✔️ Underline

✔️ Inverse

✔️ Strikethrough

## Installation

Using npm

```shell
npm install @open-tech-world/es-cli-styles
```

Using Yarn

```shell
yarn add @open-tech-world/es-cli-styles
```

## Usage

```ts
import { style } from '@open-tech-world/es-cli-styles';

style('~styleName[.styleName...]{Text}');
```

## Examples

Using foreground color name

```ts
console.log(style('I like 🍊 ~orange{oranges}'))
```
![](assets/orange-color.png)

Using multiple colors

```ts
console.log(style('An ~red{apple} is red but the ~green{leaves} are green, came in a blue ~blue{box}'))
```
![](assets/multiple-colors.png)

Nested colors

```ts
console.log(style('~blue{This is a long blue text with some ~red{red} & ~green{green} color in it}'))
```
![](assets/nested-colors.png)

Composing different styles

```ts
console.log(style('~bold.white.bgGreen{ PASS }'))
```
![](assets/bg-color.png)

Inverse colors

```ts
console.log(style('~inverse.red.bgWhite{ FAILED }'))
```
![](assets/inverse.png)

Faint, decreased intensity, or dim text

```ts
console.log(style('~dim{TEXT}'))
```
![](assets/dim-text.png)

Italic fonts

```ts
console.log(style('~italic.fuchsia.bold.bgWhite{ Beautiful Text }'))
```
![](assets/italic-text.png)

Underlined texts

```ts
console.log(style('Highlighted fruits: ~underline{Apple}, cat, ~underline{Banana}'))
```
![](assets/underline.png)

Strikethrough text

```ts
console.log(style('~strike.red{Deleted file.ext}'))
```
![](assets/strikethrough.png)

Custom functions

```ts
function warning(str) {
  return style(`⚠️  ~bold.black.bgYellow{${str}}`);
}

console.log(warning(' CAUTION '))
```
![](assets/caution.png)


## Style names

- #### Foreground colors
  - blue
  - red
  - green
  - orange
  - navy
  - aqua
  - teal
  - purple
  - fuchsia
  - maroon
  - yellow
  - olive
  - lime
  - black
  - gray
  - silver
  - white


- #### Background colors
  - bgBlue
  - bgRed
  - bgGreen
  - bgOrange
  - bgNavy
  - bgAqua
  - bgTeal
  - bgPurple
  - bgFuchsia
  - bgMaroon
  - bgYellow
  - bgOlive
  - bgLime
  - bgBlack
  - bgGray
  - bgSilver
  - bgWhite

- rgb(red, green, blue)

- bgRgb(red, green, blue)

- #### Modifiers
  - bold  
  - dim  
  - italic  
  - underline  
  - inverse  
  - strike  

## References

https://en.wikipedia.org/wiki/ANSI_escape_code


## License

Copyright (c) 2021, Thanga Ganapathy ([MIT License](./LICENSE)).
npm package: @open-tech-world/es-glob
Description: A glob pattern matching library.
Author: Thanga Ganapathy
Latest version: 0.8.1

<div align="center">

# @open-tech-world/es-glob
[![Build](https://github.com/open-tech-world/es-glob/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/es-glob/actions/workflows/build.yml) [![CodeFactor](https://www.codefactor.io/repository/github/open-tech-world/es-glob/badge)](https://www.codefactor.io/repository/github/open-tech-world/es-glob)
</div>

> A [glob](https://en.wikipedia.org/wiki/Glob_(programming)) pattern matching library.

## Supported glob patterns

#### Basic

✔️ `*` (Wildcard)

✔️ `**` (Globstar)

✔️ `?` (Wildcard)

✔️ `[…]` (Brackets)

✔️ `\\` (Escape Special Characters)

✔️ `!` (Negation)

#### Braces

🚧 `{,}` (Brace Matching)

#### Extended glob

❌ `?(pattern-list)`

❌ `*(pattern-list)`

❌ `+(pattern-list)`

❌ `@(pattern-list)`

❌ `!(pattern-list)`

#### POSIX Character classes

❌ `[:class:]`

#### Others

❌ Regular expression

✔️ `(|)` Logical OR Group

## Installation

Using npm

```shell
npm install @open-tech-world/es-glob
```

Using Yarn

```shell
yarn add @open-tech-world/es-glob
```

## Usage

```ts
import { matchGlob } from '@open-tech-world/es-glob';

matchGlob(str: string, pattern: string): boolean;
```

## Examples

```ts
matchGlob('/a.json', '/*.json') // true

matchGlob('a/b/.x/c/d', '**/.x/**') // true

matchGlob('abc', 'ab?') // true

matchGlob('b', '[a-c]') // true

matchGlob('a', '[!a-c]') // false

matchGlob('b', '[^a-c]') // false

matchGlob('*.txt', '\\*.txt') // true

matchGlob('node_modules', '!node_modules') // false

matchGlob('a', '(a|b)') // true

matchGlob('config.js', '*.(js|json)') // true

matchGlob('tsconfig.json', '*.(js|json)') // true

matchGlob('index.ts', '*.(js|jsx|tsx)') // false
```

#### matchPathGlob

It matches a path in a glob pattern.

```ts
import { matchPathGlob } from '@open-tech-world/es-glob';

matchPathGlob('a', 'a/*') // true
matchPathGlob('a/b', 'a/*') // true
matchPathGlob('a/b/c', 'a/*') // false
```

## References

https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html

https://en.wikipedia.org/wiki/Glob_(programming)

## License

Copyright (c) 2021, [Thanga Ganapathy](https://thanga-ganapathy.github.io) ([MIT License](./LICENSE)).
npm package: @open-tech-world/es-utils
Description: A Collection of ECMAScript Utility Functions.
Author: Thanga Ganapathy
Latest version: 0.13.0
Deprecated: Please use @opentf/utils

<div align="center">

# @open-tech-world/es-utils

[![Build](https://github.com/open-tech-world/es-utils/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/es-utils/actions/workflows/build.yml) [![Netlify Status](https://api.netlify.com/api/v1/badges/46461c00-ef9b-4e68-a60e-390f8d030ed4/deploy-status)](https://app.netlify.com/sites/es-utils/deploys) [![CodeFactor](https://www.codefactor.io/repository/github/open-tech-world/es-utils/badge/main)](https://www.codefactor.io/repository/github/open-tech-world/es-utils/overview/main) ![npm (scoped)](https://img.shields.io/npm/v/@open-tech-world/es-utils?color=blue)

</div>

> A Collection of ECMAScript Utility Functions.

## Documentation

The full documentation available at [https://es-utils.netlify.app](https://es-utils.netlify.app)

## Requirements

- Supported all modern browsers.

- Node.js ^12.22.0 || ^14.17.0 || >=16.0.0

## Installation

Using npm

```sh
npm install @open-tech-world/es-utils
```

Using Yarn

```sh
yarn add @open-tech-world/es-utils
```

## Usage

```ts
import { utilityFn } from '@open-tech-world/es-utils';

// ⚠️ Here, the utilityFn is a placeholder for actual utility function name.
utilityFn();
```

Please read the [documentation](https://es-utils.netlify.app/) for  complete list of available utility functions.

## API

#### Array

 - [arrayDiff](https://es-utils.netlify.app/docs/Array/arrayDiff)

#### Maths

 - [percentage](https://es-utils.netlify.app/docs/Maths/percentage)

 - [percentageOf](https://es-utils.netlify.app/docs/Maths/percentageOf)

#### String

 - [camelCase](https://es-utils.netlify.app/docs/String/camelCase)

 - [capitalize](https://es-utils.netlify.app/docs/String/capitalize)

 - [insertAt](https://es-utils.netlify.app/docs/String/insertAt)

 - [isEmail](https://es-utils.netlify.app/docs/String/isEmail)

 - [pascalCase](https://es-utils.netlify.app/docs/String/pascalCase)

 - [replaceAt](https://es-utils.netlify.app/docs/String/replaceAt)

#### Timers

 - [sleep](https://es-utils.netlify.app/docs/Timers/sleep)

#### Types

 - [inferType](https://es-utils.netlify.app/docs/Types/inferType)

 - [isNumber](https://es-utils.netlify.app/docs/Types/isNumber)

#### Object

 - [getInObj](https://es-utils.netlify.app/docs/Object/getInObj)

 - [setInObj](https://es-utils.netlify.app/docs/Object/setInObj)

## License

Copyright (c) [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](./LICENSE)).
npm package: @open-tech-world/generate-password
Description: Generates cryptographically secured passwords in browsers.
Author: Thanga Ganapathy
Latest version: 1.0.1

# @open-tech-world/generate-password

> Generates cryptographically secured passwords in browsers.

## Install

```bash
$ npm install @open-tech-world/generate-password
-OR-
$ yarn add @open-tech-world/generate-password
```

## Usage

```js
const generatePassword = require('@open-tech-world/generate-password');

// or

import generatePassword from '@open-tech-world/generate-password';

console.log(generatePassword());
// c1pXV$3Q

console.log(generatePassword({ length: 15 }));
// fJhgXJEyiwR8$tv
```

## License

MIT © [Thanga Ganapathy](https://github.com/ganapathy888)
npm package: @open-tech-world/js-utils
Description: A Collection of JavaScript Utility Functions.
Author: Thanga Ganapathy
Latest version: 0.14.0
Deprecated: Please use @opentf/utils

<div align="center">

# @open-tech-world/js-utils

[![Build](https://github.com/open-tech-world/js-utils/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/js-utils/actions/workflows/build.yml)

</div>

> A Collection of JavaScript Utility Functions.


## Installation

Using npm

```sh
npm install @open-tech-world/js-utils
```

Using Yarn

```sh
yarn add @open-tech-world/js-utils
```
## Documentation

[https://js-utils.pages.dev](https://js-utils.pages.dev)


## License

Copyright (c) [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](../../LICENSE)).
npm package: @open-tech-world/node-cli-progress
Description: CLI spinner with task progress result.
Author: Thanga Ganapathy
Latest version: 0.2.1

<div align="center">

# @open-tech-world/node-cli-progress
[![Build](https://github.com/open-tech-world/node-cli-progress/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/node-cli-progress/actions/workflows/build.yml) [![CodeFactor](https://www.codefactor.io/repository/github/open-tech-world/node-cli-progress/badge)](https://www.codefactor.io/repository/github/open-tech-world/node-cli-progress) ![npm (scoped)](https://img.shields.io/npm/v/@open-tech-world/node-cli-progress?color=blue)

![](demo.gif)

</div>

> CLI spinner with task progress result.

## Installation

Using npm

```shell
npm install @open-tech-world/node-cli-progress
```

Using Yarn

```shell
yarn add @open-tech-world/node-cli-progress
```

## Usage

```ts
import { cliProgress } from '@open-tech-world/node-cli-progress';

const progress = new cliProgress();
progress.start();
setTimeout(() => {
  progress.update('Downloading');
}, 1000);
progress.done('Download completed!');
```

## API

**new cliProgress(options?: Partial\<IOptions\>)**

It creates a new instance of the cliProgress. 

options:

| Name | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| stream | NodeJS.WriteStream | process.stderr | The stream to use.


#### Instance methods:

**start(text?: string)**

This method starts the spinner with optional `text`.

The default text is `Loading`.

**update(text: string)**

This method updates the `current text` with the given `text`.

**done(text?: string)**

This method stops the spinner and mark the task as `success` with optional `text`.

**fail(text?: string)**

This method stops the spinner and mark the task as `failed` with optional `text`.

**warn(text?: string)**

This method stops the spinner and mark the task as `warning` with optional `text`.

**info(text?: string)**

This method stops the spinner and mark the task as `info` with optional `text`.

## License

Copyright (c) 2021, [Thanga Ganapathy](https://thanga-ganapathy.github.io) ([MIT License](./LICENSE)).
npm package: @open-tech-world/node-glob
Description: Match files & directories using glob patterns.
Author: Thanga Ganapathy
Latest version: 0.4.0

<div align="center">

# @open-tech-world/node-glob
[![Linux Build](https://github.com/open-tech-world/node-glob/actions/workflows/linux_build.yml/badge.svg)](https://github.com/open-tech-world/node-glob/actions/workflows/linux_build.yml) [![Windows Build](https://github.com/open-tech-world/node-glob/actions/workflows/windows_build.yml/badge.svg)](https://github.com/open-tech-world/node-glob/actions/workflows/windows_build.yml) [![macOS Build](https://github.com/open-tech-world/node-glob/actions/workflows/macos_build.yml/badge.svg)](https://github.com/open-tech-world/node-glob/actions/workflows/macos_build.yml) [![CodeFactor](https://www.codefactor.io/repository/github/open-tech-world/node-glob/badge)](https://www.codefactor.io/repository/github/open-tech-world/node-glob) ![npm](https://img.shields.io/npm/v/@open-tech-world/node-glob?color=blue)
</div>

> Match files & directories using [glob](https://en.wikipedia.org/wiki/Glob_(programming)) patterns.

It uses [@open-tech-worl/es-glob](https://github.com/open-tech-world/es-glob) for matching paths.

See the list of supported glob patterns [here](https://github.com/open-tech-world/es-glob#supported-glob-patterns).

## Features

✔️ Sync Matching API

🚧 Async Matching API

✔️ Supports Multiple Patterns

## Installation

Using npm

```shell
npm install @open-tech-world/node-glob
```

Using Yarn

```shell
yarn add @open-tech-world/node-glob
```

## Usage

```ts
import { globSync } from '@open-tech-world/node-glob';

globSync(patterns: string | string[], 
         options?: Partial<IOptions>): string[];
```

#### Options

| Name | Type | Default | Description |
|------|------|---------|------|
| cwd  | string | process.cwd() | The current working directory in which to search files & folders.|
| dot  | boolean | false | If true, it matches files & directories that begin with a `"."`(dot) character.|
| absolute  | boolean | false | If true, it returns the absolute path.|
| dirs  | boolean | true | If false, it does not include directories.|
| files  | boolean | true | If false, it does not include files.|

## Examples

```shell
my-app/
├─ node_modules/
├─ public/
│  ├─ favicon.ico
│  ├─ index.html
│  ├─ robots.txt
├─ src/
│  ├─ index.css
│  ├─ index.js
├─ .gitignore
├─ package.json
├─ README.md
```
```ts
import { globSync } from '@open-tech-world/node-glob';

globSync(['*']) // ['node_modules', 'public', 'src', 'package.json', 'README.md']

globSync(['*'], { dot: true }) // ['node_modules', 'public', 'src', '.gitignore', 'package.json', 'README.md']

globSync(['*', '!node_modules']) // ['public', 'src', 'package.json', 'README.md']

globSync(['*.json']) // ['package.json']

globSync(['src/index.*']) // ['src/index.css', 'src/index.js']

globSync(['**/index.[a-j]*']) // ['src/index.css', 'src/index.js']

globSync(['public/*.(html|ico)']) // ['public/index.html', 'public/favicon.ico']
```

## License

Copyright (c) 2021, [Thanga Ganapathy](https://thanga-ganapathy.github.io) ([MIT License](./LICENSE)).
npm package: @open-tech-world/parse-env-file
Description: Node.js utility to parse .env files.
Author: Thanga Ganapathy
Latest version: 1.0.2

# @open-tech-world/parse-env-file

> Node.js utility to parse .env files.

Note: Apart from `.env` files, you can pass any valid file with any extension to get parsed. Eg: `.env.staging`, `env.txt`, etc.

## Syntax rules

- It expects each line in a file to be in `VAR=VAL` format.
- Lines beginning with `#` are processed as comments and ignored.
- Blank lines are ignored.
- The quotation marks in `VAL` will not be stripped away.

Input with mixed valid & invalid lines:

```
# Comment 1
ENV=val

# ENV1=val1

// Comment 2
ENV2=val2

// ENV_VAR=Some Value

ENV3= val3

ENV4 =val4

ENV5 = val5

ENV6=Lorem Ipsum is simply dummy \n text of the printing and typesetting industry.

NEW_ENV_VAR_6=10

NEW_ENV_VAR_7=https://example.com

NODE_PATH=/usr/local/lib/node_modules:/home/runner/node_modules

EMPTY=

JSON={"foo": "bar"}

FOO=" some value "

FLAG=true
```

Output:

```js
{
      ENV: 'val',
      ENV2: 'val2',
      '// ENV_VAR': 'Some Value',
      ENV3: 'val3',
      ENV4: 'val4',
      ENV5: 'val5',
      ENV6: `Lorem Ipsum is simply dummy \n text of the printing and typesetting industry.`,
      NEW_ENV_VAR_6: '10',
      NEW_ENV_VAR_7: 'https://example.com',
      NODE_PATH: '/usr/local/lib/node_modules:/home/runner/node_modules',
      EMPTY: '',
      JSON: '{"foo": "bar"}',
      FOO: '" some value "',
      FLAG: 'true',
}
```

## Install

```bash
# With npm
$ npm install @open-tech-world/parse-env-file

# With yarn
$ yarn add @open-tech-world/parse-env-file
```

## Usage

```js
const parseEnvFile = require('@open-tech-world/parse-env-file');

// or

import parseEnvFile from '@open-tech-world/parse-env-file';

const envVars = await parseEnvFile('.env'); // Returns Promise<Object>
```

## License

MIT © [Thanga Ganapathy](https://github.com/ganapathy888)
npm package: @open-tech-world/react-examples-sandbox
Description: The CSB sandpack wrapper, which is only to be used for React examples in the org lib docs.
Author: Thanga Ganapathy
Latest version: 0.2.0
Deprecated: Please use @opentf/react-sandbox

<div align="center">

# React Examples Sandbox

⚡ by [Open Tech World](https://open-tech-world.pages.dev/)

</div>


> The CSB sandpack wrapper, which is only to be used for React examples in the org lib docs.

## Installation

```bash
# With npm
$ npm install @open-tech-world/react-examples-sandbox

# With yarn
$ yarn add @open-tech-world/react-examples-sandbox
```


## License

Copyright (c) [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](./LICENSE)).
npm package: @open-tech-world/react-form
Description: Build Forms & Manage Their State in React.
Author: Thanga Ganapathy
Latest version: 0.15.0
Deprecated: Please use @opentf/react-form

<div align="center">

# React Form
⚡ by [Open Tech World](https://open-tech-world.pages.dev/)

[![Build](https://github.com/open-tech-world/react-form/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/react-form/actions/workflows/build.yml)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@open-tech-world/react-form/latest?label=Min%2BGZip)](https://bundlephobia.com/package/@open-tech-world/react-form)

</div>

> Build Forms & Manage Their State in React.

## Features

- Simple APIs to use

- It supports nested & array fields

- It supports form validation

- TypeScript support

- Render optimized

## Installation

```bash
# With npm
$ npm install @open-tech-world/react-form

# With yarn
$ yarn add @open-tech-world/react-form
```

## Usage

```jsx
import { Form, Field } from '@open-tech-world/react-form';

export default function App() {
  return (
    <Form
      onSubmit={(values) => {
        console.log(values);
      }}
    >
      <Field name="field1" />
      
      {/* Other fields... */}
      
      <button type="submit">Submit</button>
    </Form>
  );
}
```

## Documentation

Please read the complete documentation at: [https://react-form.pages.dev/](https://react-form.pages.dev/)

## License

Copyright (c) [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](../../LICENSE)).
npm package: @open-tech-world/react-state
Description: A shared state management library for React.
Author: Thanga Ganapathy
Latest version: 0.10.0
Deprecated: Please use @opentf/react-state

<div align="center">

# React State

⚡ by [Open Tech World](https://open-tech-world.pages.dev/)

[![Build](https://github.com/open-tech-world/react-state/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/react-state/actions/workflows/build.yml)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@open-tech-world/react-state/latest?label=Min%2BGZip)](https://bundlephobia.com/package/@open-tech-world/react-state)

</div>

> A shared state management library for React.

## Features

- Simple API
- No context providers
- Components are re-rendered only when the selector value changes
- It can shallow diff custom selector objects
- It supports async actions
- TypeScript support

## Installation

Using npm

```shell
npm install @open-tech-world/react-state
```

Using Yarn

```shell
yarn add @open-tech-world/react-state
```

## Usage

```jsx
import { createState } from '@open-tech-world/react-state';

const useAppState = createState({});

function App() {
  const [state, setState] = useAppState((s) => s, { set: true });
  console.log(state);

  return (
    <>
      <button onClick={() => setState((s) => ({ obj: value }))}>
        Change State
      </button>
    </>
  );
}
```

## Usage (TypeScript)

```tsx
import { createState } from '@open-tech-world/react-state';

interface AppState {
  obj1: type1;
  obj2: type2;
}

const appState: AppState = { obj1: value, obj2: value };

const useAppState = createState(appState);

function App() {
  const [state, setState] = useAppState((s) => s, { set: true });
  console.log(state);

  return (
    <>
      <button onClick={() => setState((s) => ({ obj1: newValue }))}>
        Change State
      </button>
    </>
  );
}
```

## Documentation

Please read the complete documentation at: [https://react-app-state.pages.dev/](https://react-app-state.pages.dev/)

## License

Copyright (c) 2021, [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](../../LICENSE)).
npm package: @open-tech-world/route-matcher
Description: A route pattern matcher using regular expressions.
Author: Thanga Ganapathy
Latest version: 0.1.0

<div align="center">

# Route Matcher

⚡ by [Open Tech World](https://open-tech-world.pages.dev/)

[![Build](https://github.com/open-tech-world/route-matcher/actions/workflows/build.yml/badge.svg)](https://github.com/open-tech-world/route-matcher/actions/workflows/build.yml)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@open-tech-world/route-matcher/latest?label=Min%2BGZip)](https://bundlephobia.com/package/@open-tech-world/route-matcher)

</div>

> A route pattern matcher using regular expressions.

## Features

- Simple API</li>
- Strict parsing (<a href="https://route-matcher.pages.dev/docs/Parser%20Rules">See parser rules</a>)
  </li>
- Supports named & unnamed parameters</li>
- Supports custom regular experssions</li>
- Parameters can be repeated or optional</li>

## Live Tester

[https://route-matcher.pages.dev/tester](https://route-matcher.pages.dev/tester)

## Installation

```bash
# With npm
$ npm install @open-tech-world/route-matcher

# With yarn
$ yarn add @open-tech-world/route-matcher
```

## Usage

```ts
import { routeMatcher } from "@open-tech-world/route-matcher";

routeMatcher(route: string, path: string): RouteSegment[] | null;

// Eg: routeMatcher("/path/:param", "/path/value");
```

## Documentation

Please read the complete documentation at: [https://route-matcher.pages.dev/](https://route-matcher.pages.dev/)

## License

Copyright (c) [Thanga Ganapathy](https://github.com/Thanga-Ganapathy) ([MIT License](../../LICENSE)).
npm package: @open-tender/hooks
Description: A hook library for use with Open Tender apps
Author: JC Harrington
Latest version: 1.1.0

# @open-tender/hooks

A hook library for use with the Open Tender open source libraries and apps.

This library is only relevant for restaurant brands that are customers of Open Tender. To learn more about establishing an Open Tender account, [please visit our website](https://www.opentender.io/).

## Installation

Install via yarn:

```
yarn add @open-tender/hooks
```

Or via npm:

```
npm install --save @open-tender/hooks
```
npm package: @open-tender/js
Description: Various utility functions for building an Open Tender app
Author: JC Harrington
Latest version: 2.4.0

# @open-tender/js

Various helper functions for use with the Open Tender open source apps:

- [open-tender-web](https://github.com/open-tender/open-tender-web)
- [open-tender-pos](https://github.com/open-tender/open-tender-pos)
- [open-tender-kds](https://github.com/open-tender/open-tender-kds)

This library is only relevant for restaurant brands that are customers of Open Tender. To learn more about establishing an Open Tender account, [please visit our website](https://www.opentender.io/).

## Installation

Install via yarn:

```
yarn add @open-tender/js
```

Or via npm:

```
npm install --save @open-tender/js
```

## Purpose

This library provides most of the core logic and various helper functions used across the Open Tender apps listed above, including things like:

- constants
- formatting (currencies, phone numbers, etc.)
- datetime manipulations (lots of them)
- calculating prices and calories
- cart management & validation logic
- order serialization
- checkout logic

The goal is to handle all of the boring, tedius, and/or complex logic involved in managing an Open Tender commerce experience so you can focus on the more exciting parts of builing the user experience.

## Usage

The best way to get to know this library is to start working with one of the Open Tender open source apps listed above - it's used so extensively that it will be hard to miss it!

## Issues

If you find a bug or have a question, please file an issue on [our issue tracker on GitHub](https://github.com/open-tender/open-tender-js/issues).

## License

[MIT](https://github.com/open-tender/open-tender-js/blob/master/LICENSE.md)

## About

Built and maintained by [Open Tender](https://www.opentender.io/).
npm package: @open-tender/kiosk
Description: A library of container components for usage with Open Tender Kiosk.
Author: JC Harrington
Latest version: 0.0.4

# React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

- Configure the top-level `parserOptions` property like this:

```js
export default {
  // other rules...
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module',
    project: ['./tsconfig.json', './tsconfig.node.json'],
    tsconfigRootDir: __dirname,
  },
}
```

- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list