open-index/open-npm huggingface dataset:
npm package: @laihoe/demoparser2
Description: The bindings live here. Go here for discussion: https://github.com/LaihoE/demoparser
Latest version: 0.41.1

The bindings live here. Go here for discussion: https://github.com/LaihoE/demoparser


1. update demoparser: ```git submodule foreach git pull origin main```
2. bump package.json version
3. napi rename
4. git push
npm package: @laihoe/demoparser2-android-arm-eabi
Description: This is the **armv7-linux-androideabi** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-android-arm-eabi`

This is the **armv7-linux-androideabi** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-darwin-x64
Description: This is the **x86_64-apple-darwin** binary for `@laihoe/demoparser2`
Latest version: 0.23.0

# `@laihoe/demoparser2-darwin-x64`

This is the **x86_64-apple-darwin** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-linux-arm-gnueabihf
Description: This is the **armv7-unknown-linux-gnueabihf** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-linux-arm-gnueabihf`

This is the **armv7-unknown-linux-gnueabihf** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-linux-arm64-gnu
Description: This is the **aarch64-unknown-linux-gnu** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-linux-arm64-gnu`

This is the **aarch64-unknown-linux-gnu** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-linux-arm64-musl
Description: This is the **aarch64-unknown-linux-musl** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-linux-arm64-musl`

This is the **aarch64-unknown-linux-musl** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-linux-x64-gnu
Description: This is the **x86_64-unknown-linux-gnu** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-linux-x64-musl
Description: This is the **x86_64-unknown-linux-musl** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-linux-x64-musl`

This is the **x86_64-unknown-linux-musl** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-win32-arm64-msvc
Description: This is the **aarch64-pc-windows-msvc** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-win32-arm64-msvc`

This is the **aarch64-pc-windows-msvc** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-win32-ia32-msvc
Description: This is the **i686-pc-windows-msvc** binary for `@laihoe/demoparser2`
Latest version: 0.36.0

# `@laihoe/demoparser2-win32-ia32-msvc`

This is the **i686-pc-windows-msvc** binary for `@laihoe/demoparser2`
npm package: @laihoe/demoparser2-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `@laihoe/demoparser2`
Latest version: 0.41.1

# `@laihoe/demoparser2-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@laihoe/demoparser2`
npm package: @laihung/mh-ui-library
Description: MH UI library for NPM or Github Packages
Author: Lo Lai Hung
Latest version: 0.0.1

# mh-ui-library# 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
npm package: @laijuthomas/angular-spinner
Description: A simple spinner module for Angular.
Author: Laiju Thomas
Latest version: 1.2.0



# Angular Spinner
A spinner component and directive for Angular 2-12+

## Getting Started

### Installation

Install via [npm][npm] package manager 

```bash
npm install @laijuthomas/angular-spinner --save
```

### Usage

Import `angular-spinner` module

```js
import { HttpClientModule} from '@angular/common/http';
import { AngularSpinnerModule } from '@laijuthomas/angular-spinner';

@NgModule({
  imports: [ HttpClientModule, AngularSpinnerModule ]
})
```

Then in HTML

```html
<angular-spinner></angular-spinner>
```

### Inputs
| Input  | Type | Default | Required | Description |
| ------------- | ------------- | ------------- | ------------- | ------------- |
| size | `string` | `medium` | no | Set custom sizes like xxsmall, xsmall, small, medium, large, xlarge, xxlarge |
| status | `string` | `active` | no | Set custom status like active, disabled, primary, info, success, warning, danger |
| message | `string` | `-` | no | Custom message to show along with the loader |

To use as directive pass a boolean variable to the directive

```html
<div [angularSpinner]="loading"></div>
```

### Inputs
| Input  | Type | Default | Required | Description |
| ------------- | ------------- | ------------- | ------------- | ------------- |
| spinnerSize | `string` | `medium` | no | Set custom sizes like xxsmall, xsmall, small, medium, large, xlarge, xxlarge |
| spinnerStatus | `string` | `active` | no | Set custom status like active, disabled, primary, info, success, warning, danger |
| spinnerMessage | `string` | `-` | no | Custom message to show along with the loader |

## What's included

Within the download you'll find the following directories and files. You'll see something like this:

```
angular-spinner/
└── projects/
    ├── angular-spinner/
    └── angular-spinner-app/
```
`angular-spinner/` - library

`angular-spinner-app/` - demo application

## Creators

**Laiju Thomas**

* <https://github.com/laijuthomas>
npm package: @laika-labs/cli
Description: Command-Line Interface for Laika
Latest version: 0.1.0

# Installation

To download and install the Laika CLI run the following command:

```
npm install -g @laika-labs/cli
```

This will provide you with the globally accessible `laika` command.

# Beaker

## Sync

In the beaker project directory where you want to sync, run the following command:

```
laika beaker sync <contract-name>
```
npm package: @laikacms/assets
Description: Assets interface for Laika CMS - binary files, images, and media management.
Author: Sem Postma
Latest version: 0.1.1

# @laikacms/assets

[![npm](https://img.shields.io/npm/v/@laikacms/assets)](https://www.npmjs.com/package/@laikacms/assets)
[![npm](https://img.shields.io/npm/dm/@laikacms/assets)](https://www.npmjs.com/package/@laikacms/assets)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/assets)](https://bundlephobia.com/result?p=@laikacms/assets)

Asset/media management for Laika CMS.

## Installation

```bash
pnpm add @laikacms/assets
```

## Usage

```typescript
import { Asset, AssetCreate, AssetsRepository } from '@laikacms/assets';
```

## Entities

- `Asset` - Binary file with metadata
- `AssetMetadata` - File metadata (size, mime type, etc.)
- `AssetUrl` - Signed URL for asset access

## Repository Interface

```typescript
abstract class AssetsRepository {
  abstract getAsset(key: string): ResultStream<Asset>;
  abstract createAsset(create: AssetCreate): ResultStream<Asset>;
  abstract getUrls(assets: Asset[]): ResultStream<AssetUrl[]>;
  // ...
}
```

## Implementations

- `@laikacms/assets-r2` - Cloudflare R2
npm package: @laikacms/core
Description: Core application services & orchestration for Laika CMS.
Author: Sem Postma
Latest version: 0.1.1

# @laikacms/core

[![npm](https://img.shields.io/npm/v/@laikacms/core)](https://www.npmjs.com/package/@laikacms/core)
[![npm](https://img.shields.io/npm/dm/@laikacms/core)](https://www.npmjs.com/package/@laikacms/core)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/core)](https://bundlephobia.com/result?p=@laikacms/core)

Core types, errors, and utilities for Laika CMS.

## Installation

```bash
pnpm add @laikacms/core
```

## Usage

```typescript
import { InvalidData, LaikaError, LaikaResult, NotFoundError } from '@laikacms/core';
```

## Error Types

- `NotFoundError` - Resource not found
- `InvalidData` - Invalid input data
- `InternalError` - Internal server error
- `UnauthorizedError` - Authentication required
- `ForbiddenError` - Access denied

## Result Type

```typescript
type LaikaResult<T> = Result<T, LaikaError>;
```

Compatible with Effect's Result type internally, but exposed via Standard Schema for
interoperability with Zod, Valibot, etc.
npm package: @laikacms/decap-cms-backend-laika
Description: Laika CMS backend for Decap CMS with dependency injection for storage and documents repositories
Author: Sem Postma
Latest version: 0.1.1

# @laikacms/decap-cms-backend-laika

[![npm](https://img.shields.io/npm/v/@laikacms/decap-cms-backend-laika)](https://www.npmjs.com/package/@laikacms/decap-cms-backend-laika)
[![npm](https://img.shields.io/npm/dm/@laikacms/decap-cms-backend-laika)](https://www.npmjs.com/package/@laikacms/decap-cms-backend-laika)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/decap-cms-backend-laika)](https://bundlephobia.com/result?p=@laikacms/decap-cms-backend-laika)

Custom Decap CMS backend for Laika CMS.

## Installation

```bash
pnpm add @laikacms/decap-cms-backend-laika decap-cms-app
```

## Usage

```typescript
import createLaikaBackend from '@laikacms/decap-cms-backend-laika';
import CMS from 'decap-cms-app';

const LaikaBackend = createLaikaBackend({
  documentsApiBaseUrl: '/api/documents',
  assetsApiBaseUrl: '/api/assets',
});

CMS.registerBackend('laika', LaikaBackend);
CMS.init();
```

## Config

```yaml
backend:
  name: laika
  base_url: https://api.example.com
  api_root: /api
```

## Features

- Editorial workflow (draft/review/publish)
- Media library integration
- i18n support (multiple folders)
- Custom repository injection
npm package: @laikacms/decap-oauth2
Description: Fetch-based OAuth2 authentication library with PKCE, passkey, and TOTP support
Author: Sem Postma
Latest version: 0.1.2

# @laikacms/decap-oauth2

[![npm](https://img.shields.io/npm/v/@laikacms/decap-oauth2)](https://www.npmjs.com/package/@laikacms/decap-oauth2)
[![npm](https://img.shields.io/npm/dm/@laikacms/decap-oauth2)](https://www.npmjs.com/package/@laikacms/decap-oauth2)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/decap-oauth2)](https://bundlephobia.com/result?p=@laikacms/decap-oauth2)

OAuth2 authentication server for Decap CMS with PKCE support.

## Features

- OAuth2 with PKCE (Proof Key for Code Exchange)
- GitHub, GitLab, and Bitbucket provider support
- Quantum-safe cryptographic considerations
- Cloudflare Workers compatible

## Installation

```bash
pnpm add @laikacms/decap-oauth2
```

## Usage

```typescript
import { createOAuth2Server } from '@laikacms/decap-oauth2';

const server = createOAuth2Server({
  providers: {
    github: {
      clientId: process.env.GITHUB_CLIENT_ID,
      clientSecret: process.env.GITHUB_CLIENT_SECRET,
    },
  },
});

export default server;
```

## Security Considerations

This package implements security measures with future quantum computing threats in mind:

- Uses hybrid encryption approaches where applicable
- Implements secure key derivation functions
- Follows NIST post-quantum cryptography guidelines

## Disclaimer

> [!WARNING] **This package is provided "as is" without warranty of any kind.**
>
> While reasonable effort has been made to implement secure authentication flows, you are
> responsible for reviewing the implementation, ensuring it meets your security requirements,
> conducting your own security audits, and keeping dependencies up to date.
>
> The maintainers are **not liable** for any security incidents arising from the use of this
> package. See the [LICENSE](../../../LICENSE) for full terms.
>
> Do not use this package in production without understanding its limitations and conducting
> appropriate security reviews.

## License

MIT
npm package: @laikacms/documents
Description: Documents interface for Laika CMS.
Author: Sem Postma
Latest version: 0.1.1

# @laikacms/documents

[![npm](https://img.shields.io/npm/v/@laikacms/documents)](https://www.npmjs.com/package/@laikacms/documents)
[![npm](https://img.shields.io/npm/dm/@laikacms/documents)](https://www.npmjs.com/package/@laikacms/documents)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/documents)](https://bundlephobia.com/result?p=@laikacms/documents)

Document management with editorial workflow support.

## Installation

```bash
pnpm add @laikacms/documents
```

## Usage

```typescript
import { Document, DocumentsRepository, Unpublished } from '@laikacms/documents';
```

## Entities

- `Document` - Published document
- `Unpublished` - Draft/pending document
- `Revision` - Document revision history

## Editorial Workflow

```
Draft → Pending Review → Pending Publish → Published
```

## Repository Interface

```typescript
abstract class DocumentsRepository {
  abstract getDocument(key: string): ResultStream<Document>;
  abstract createDocument(create: DocumentCreate): ResultStream<Document>;
  abstract getUnpublished(key: string): ResultStream<Unpublished>;
  abstract publish(key: string): ResultStream<Document>;
  // ...
}
```

## Implementations

- `@laikacms/documents-drizzle` - SQL via Drizzle ORM
- `@laikacms/documents-contentbase` - ContentBase storage
npm package: @laikacms/file-sanitizer
Description: Privacy-focused file metadata sanitizer for streaming contexts
Author: Sem Postma
Latest version: 0.1.1

# @laikacms/file-sanitizer

[![npm](https://img.shields.io/npm/v/@laikacms/file-sanitizer)](https://www.npmjs.com/package/@laikacms/file-sanitizer)
[![npm](https://img.shields.io/npm/dm/@laikacms/file-sanitizer)](https://www.npmjs.com/package/@laikacms/file-sanitizer)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/file-sanitizer)](https://bundlephobia.com/result?p=@laikacms/file-sanitizer)

Best-effort file sanitization for uploaded content.

## Features

- Image sanitization (JPEG, PNG, GIF, WebP, TIFF)
- PDF scanning for embedded JavaScript
- MP4 container validation
- MIME type verification

## Installation

```bash
pnpm add @laikacms/file-sanitizer
```

## Usage

```typescript
import { detectFileType, sanitizeFile } from '@laikacms/file-sanitizer';

const file = await request.blob();
const result = await sanitizeFile(file);

if (result.safe) {
  // File passed basic sanitization
  const sanitized = result.data;
}
```

## Supported Formats

| Format | Sanitization                         |
| ------ | ------------------------------------ |
| JPEG   | EXIF stripping, structure validation |
| PNG    | Chunk validation                     |
| GIF    | Structure validation                 |
| WebP   | Container validation                 |
| TIFF   | Tag validation                       |
| PDF    | JavaScript detection                 |
| MP4    | Container structure validation       |

## Disclaimer

> [!CAUTION] **This package provides BEST-EFFORT sanitization only.**
>
> This is **not** a comprehensive security solution. It is designed to catch common accidents (e.g.,
> files with wrong extensions), detect basic malicious patterns, and strip potentially dangerous
> metadata.
>
> It will **NOT** stop determined attackers, detect sophisticated malware, guarantee file safety, or
> replace proper antivirus scanning.
>
> **Do not rely on this package as your sole defense against malicious uploads.**

### Recommended Additional Measures

1. **Isolated Storage** - Store uploads in sandboxed environments
2. **Antivirus Scanning** - Use dedicated malware detection services
3. **Access Restrictions** - Limit file access permissions
4. **CDN Delivery** - Serve files through secure CDNs with proper headers
5. **Content-Type Headers** - Always set correct `Content-Type` and
   `X-Content-Type-Options: nosniff`

### Liability

The maintainers are **not responsible** for any security incidents resulting from malicious file
uploads. This package is provided "as is" without warranty. See the [LICENSE](../../../LICENSE) for
full terms.

## License

MIT
npm package: @laikacms/storage
Description: Storage interface for Laika CMS.
Author: Sem Postma
Latest version: 0.1.2

# @laikacms/storage

[![npm](https://img.shields.io/npm/v/@laikacms/storage)](https://www.npmjs.com/package/@laikacms/storage)
[![npm](https://img.shields.io/npm/dm/@laikacms/storage)](https://www.npmjs.com/package/@laikacms/storage)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/storage)](https://bundlephobia.com/result?p=@laikacms/storage)

Core storage abstractions for Laika CMS.

## Installation

```bash
pnpm add @laikacms/storage
```

## Usage

```typescript
import { Atom, StorageObject, StorageRepository } from '@laikacms/storage';
```

## Entities

- `StorageObject` - A stored object with key and content
- `Atom` - Generic storage item (object or folder)
- `Folder` - A container for atoms
- `Pagination` - Pagination parameters

## Repository Interface

```typescript
abstract class StorageRepository {
  abstract getObject(key: Key): ResultStream<StorageObject>;
  abstract createObject(create: StorageObjectCreate): ResultStream<StorageObject>;
  abstract updateObject(update: StorageObjectUpdate): ResultStream<StorageObject>;
  abstract listAtoms(folderKey: Key, options: ListAtomsOptions): ResultStream<readonly Atom[]>;
  // ...
}
```

## Implementations

- `@laikacms/storage-r2` - Cloudflare R2
- `@laikacms/storage-fs` - Local filesystem
- `@laikacms/storage-drizzle` - SQL via Drizzle ORM
npm package: @laikacms/storage-api
Description: Hono-based JSON:API server for Laika CMS storage domain.
Author: Sem Postma
Latest version: 0.1.2

# @laikacms/storage-api

[![npm](https://img.shields.io/npm/v/@laikacms/storage-api)](https://www.npmjs.com/package/@laikacms/storage-api)
[![npm](https://img.shields.io/npm/dm/@laikacms/storage-api)](https://www.npmjs.com/package/@laikacms/storage-api)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@laikacms/storage-api)](https://bundlephobia.com/result?p=@laikacms/storage-api)

JSON:API server for storage operations.

## Installation

```bash
pnpm add @laikacms/storage-api
```

## Usage

```typescript
import { buildJsonApi } from '@laikacms/storage-api';

const api = buildJsonApi({ repo: myStorageRepo });

// Use with any runtime
export default { fetch: api.fetch };
```

## Endpoints

| Method | Path                       | Description    |
| ------ | -------------------------- | -------------- |
| GET    | `/atoms/{folder}`          | List atoms     |
| GET    | `/atom-summaries/{folder}` | List summaries |
| POST   | `/objects`                 | Create object  |
| PATCH  | `/objects/{key}`           | Update object  |
| POST   | `/operations`              | Atomic batch   |

## Options

```typescript
interface StorageApiOptions {
  repo: StorageRepository;
  basePath?: string;
  onError?(error: unknown): void;
  logger?: Pick<Console, 'error' | 'warn' | 'info' | 'debug'>;
}
```
npm package: @laikaprotocol/astro-farms-uikit
Description: Set of UI components for astro
Latest version: 0.0.2

# Astro UIkit

Astro UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @laikatospace/astro-farms-uikit`

## Setup

### Theme

Before using Astro UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@laikatospace/astro-farms-uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@laikatospace/astro-farms-uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.
npm package: @lailao10x/lao-address
Description: This package is used to query all address data in Laos
Author: LaiLaoLab
Latest version: 0.0.3

## Lao Address
 
Package lao-address ເປັນ Package ຕົວຫນື່ງທີ່ຈະຊ່ວຍໃຫ້ນັກພັດທະນາລະບົບຊອບແວໃນປະເທດ ສາມາດດືງຂໍ້ມູນບ້ານ ເມືອງ ແລະ ແຂວງທັງຫມົດໃນປະເທດລາວຢ່າງງ່າຍດາຍ.
ໃນຕົວ Package ນີ້, ນອກຈາກຈະເປັນການດືງຂໍ້ມູນໃນຮູບແບບພາສາລາວ ມັນຍັງມີປະກອບດ້ວຍຂໍ້ມູນຊື່ບ້ານ ເມືອງ ແຂວງ ໃນຮູບແບບພາສາອັງກິດອີກດ້ວຍ.


## Installation

```js
# using npm
npm install @lailao10x/lao-address

# using yarn
yarn add @lailao10x/lao-address
```

## Usage

```js
# using require
const laoAddress = require('@lailao10x/lao-address');

# using import
import laoAddress from '@lailao10x/lao-address';
```

## Examples

### ຕົວຢ່າງທີ 1

ຕົວຢ່າງການດືງຂໍ້ມູນຂໍ້ແຂວງທັງໝົດ;

```js
const laoAddress = require("@lailao10x/lao-address");

let options = {
  province: "all",
};

let provinces = laoAddress(options);

console.log(provinces); // ສະແດງບັນດາແຂວງທັນຫມົດໃນປະເທດລາວ

// [
//   { pid: '1', pn: 'ນະຄອນຫລວງວຽງຈັນ', pn_en: 'Vientiane capital' },
//   { pid: '2', pn: 'ຜົ້ງສາລີ', pn_en: 'Phongsali' },
//   { pid: '3', pn: 'ຫລວງນ້ຳທາ', pn_en: 'Louang Namtha' },
//   { pid: '4', pn: 'ອຸດົມໄຊ', pn_en: 'Oudomxai' },
// ...
// ...
```

### ຕົວຢ່າງທີ 2

ຕົວຢ່າງການດືງຂໍ້ມູນຂໍ້ແຂວງໃດຫນື່ງ ເຊັ່ນ ແຂວງ ອຸດົມໄຊ;

```js
const laoAddress = require("@lailao10x/lao-address");

let options = {
  province: 4,
};

let provinces = laoAddress(options);

console.log(provinces); // { pid: '4', pn: 'ອຸດົມໄຊ', pn_en: 'Oudomxai' }
```


## ຄວາມແຕກຕ່າງລະຫວ່າງການດືງຂໍ້ມູນທັງຫມົດ ແລະ ເຈາະຈົງ

ຖ້າຫາກດືງຂໍ້ມູນທັງຫມົດ ເຮົາຈະໄດ້ຮັບຂໍ້ມູນໃນຮູບແບບຂອງ Array.
ຖ້າຫາກດືງຂໍ້ມູນແບບເຈາະຈົງ ເຮົາຈະໄດ້ຮັບຂໍ້ມູນໃນຮູບແບບຂອງ Object.

## Options

| Options                                                | Meaning                                     |
| ------------------------------------------------------ | ------------------------------------------- |
| `{ province: 'all' }`                                  | ສະແດງຊື່ແຂວງທັງຫມົດ                         |
| `{ province: 'all', district: 'all' }`                 | ສະແດງຊື່ເມືອງທັງຫມົດໃນທຸກໆແຂວງ              |
| `{ province: 'all', district: 'all' }`                 | ສະແດງຊື່ເມືອງທັງຫມົດໃນທຸກໆແຂວງ              |
| `{ province: 'all', district: 'all', village: 'all' }` | ສະແດງຊື່ບ້ານທັງຫມົດໃນທຸກໆເມືອງ ແລະ ທຸກໆແຂວງ |
| `{ province: '05', district: 'all' }`                  | ສະແດງຊື່ເມືອງທັງຫມົດຂອງແຂວງລະຫັດທີ 05       |
| `{ province: '05', district: '501' }`                  | ສະແດງຊື່ເມືອງທີ່ມີລະຫັດທີ 501               |
| `{ province: '05', village: 'all' }`                   | ສະແດງຊື່ບ້ານທັງຫມົດດຂອງແຂວງລະຫັດທີ 05       |
| `{ village: 'all' }`                                   | ສະແດງຊື່ບ້ານທັງຫມົດ                         |

ນອກຈາກນີ້ ຍັງມີຫລາຍໆ options ໃຫ້ນັກພັດທະນາຫລາຍໆຄົນສາມາດດືງເອົາຂໍ້ມູນທີ່ຕ້ອງການໄດ້.

### Keys

ຈາກການສັງເກດ Options ແລ້ວ, ຖ້າຫາກ options ມີບ້ານ `village: 'all' ` ສະແດງວ່າ ການດືງຄັ້ງນັ້ນຈະຖືເອົາຂໍ້ມູນບ້ານເປັນຫລັກ, ກໍຄືລະບົບຈະສົ່ງພຽງແຕ່ຂໍ້ມູນບ້ານກັບມາ.

### ລຳດັບຄວາມສຳຄັນຂອງ Options

`village` > `district` > `province`
npm package: @lailao10x/lao-currency
Description: Lao currency format
Author: lailaolab
Latest version: 0.0.13

## lao-currency

Convert normal number to currency format.  
ປ່ຽນຕົວເລກຈາກທຳມະດາໃຫ້ເປັນຮູບແບບເງີນຕາເຊັ່ນ: ກີບ, ໂດລາ ແລະ ອື່ນໆ

## Installation

```js
# using npm
npm install @lailao10x/lao-currency

# using yarn
yarn add @lailao10x/lao-currency
```

## Usage

```js
# ES5
const laoCurrency = require('@lailao10x/lao-currency');

# ES6
import laoCurrency from '@lailao10x/lao-currency';
```

## Example

```js
const getLaoCurrency = laoCurrency(100000).format();
console.log(getLaoCurrency);
// result: 100,000
```

```js
const getLaoCurrency = laoCurrency(100000).format("S LAK");
console.log(getLaoCurrency);
// result: ₭100,000
```

```js
const getLaoCurrency = laoCurrency(100000).format("LAK S");
console.log(getLaoCurrency);
// result: 100,000₭
```

## Code and meanings are as follows:

| Code  | Meaning       |
| ----- | ------------- |
| `LAK` | Lao kip       |
| `USD` | US Dollar     |
| `THB` | Thai Baht     |
| `S`   | Symbol ₭ or $ |
npm package: @lailao10x/laotime
Description: Lao time format
Author: LaiLaoLab
Latest version: 0.0.19

## laotime

Convert date time to lao language format.  
ປ່ຽນເວລາເປັນ format ພາສາລາວ.

## Installation

```js
# using npm
npm install @lailao10x/laotime

# using yarn
yarn add @lailao10x/laotime
```

## Usage

```js
# using require
const laotime = require('@lailao10x/laotime');

# using import
import laotime from '@lailao10x/laotime';
```

## Example

```js
const getLaotime = laotime("2021-08-24 08:01");
console.log(getLaotime); // 24 ສິງຫາ 2021

or;

const getLaotime = laotime("2021-08-24 08:03", "D M Y, H:MN:S");
console.log(getLaotime); // 24 ສິງຫາ 2021, 08:03:00

or;

const getLaotime = laotime("2021-08-24", "D M Y, H:MN:S");
console.log(getLaotime); // 24 ສິງຫາ 2021, 08:03:00

or;

const getLaotime = laotime(new Date(), "D/M/Y, H:MN:S");
console.log(getLaotime); // 24/ສິງຫາ/2021, 08:03:00

or;

const getLaotime = laotime(new Date().getTime(), "D M Y, H:MN:S");
console.log(getLaotime); // 24 ສິງຫາ 2021, 08:03:00

or;

const getLaotime = laotime(new Date(), "W");
console.log(getLaotime); // ພະຫັດ

or;

const getLaotime = laotime();
console.log(getLaotime); // ສະແດງວັນເວລາປະຈຸບັນ
```

## Tokens and meanings are as follows:

| Token                                   | Meaning  |
| --------------------------------------- | -------- |
| `D` or `date` or `DATE`                 | Date     |
| `M` or `month` or `MONTH`               | Month    |
| `Y` or `year` or `YEAR`                 | Year     |
| `H` or `hour` or `HOUR`                 | Hour     |
| `MN`or `minute` or `MINUTE`             | Minute   |
| `S` or `second` or `SECOND`             | Second   |
| `W` or `week_day` or `day`or `WEEK_DAY` | Week day |

## Messaegs

ຖ້າຫາກວັນເວລາທີ່ປ້ອນເຂົ້ານັ້ນບໍ່ຖືກຕ້ອງ laotime ຈະສົ່ງຄ່າກັບ `Invalid Data`