open-index/open-npm huggingface dataset:
npm package: @satlayer/cosmwasm-optimizer
Description: A command-line tool that simplifies the process of optimizing CosmWasm smart contracts for deployment. This tool wraps the official CosmWasm optimizer Docker image, providing an easy-to-use interface for building production-ready WebAssembly (Wasm) binari
Latest version: 2.4.0

# SatLayer CosmWasm Optimizer

A command-line tool that simplifies the process of optimizing CosmWasm smart contracts for deployment.
This tool wraps the official CosmWasm optimizer Docker image,
providing an easy-to-use interface for building production-ready WebAssembly (Wasm) binaries.

## Features

- Optimizes CosmWasm contracts for minimal size and gas usage
- Generates contract schema files automatically
- Supports both AMD64 and ARM64 architectures
- Provides Docker build caching for faster builds
- Outputs optimized contract as `contract.wasm` with checksums

## Installation

```bash
npm install -g @satlayer/cosmwasm-optimizer
```

## Usage

Basic usage (run in your contract directory):

```bash
cosmwasm-optimizer
```

This will:

1. Build your contract using the CosmWasm optimizer Docker image
2. Generate schema files
3. Output the optimized contract to `./dist/contract.wasm`

### Options

- `--root <path>`: Specify a different root directory for the contract (default: current directory)
- `--name <name>`: Specify a name for the contract (default: directory name)

Example with options:

```bash
cosmwasm-optimizer --root ./my-contract --name my-awesome-contract
```

### Docker Caching

You can enable Docker build caching by setting the following environment variables:

- `DOCKER_CACHE_FROM`: Registry to pull cache from
- `DOCKER_CACHE_TO`: Registry to push cache to

Example:

```bash
export DOCKER_CACHE_FROM=my-registry.com/cosmwasm-cache
export DOCKER_CACHE_TO=my-registry.com/cosmwasm-cache
cosmwasm-optimizer
```

## Integration with npm scripts

Add to your `package.json`:

```json
{
  "scripts": {
    "build": "cosmwasm-optimizer"
  }
}
```

Then run:

```bash
npm run build
```

## Output

After running the optimizer, you'll find the following files in the `./dist` directory:

- `contract.wasm`: The optimized WebAssembly binary
- `checksums.txt`: SHA256 checksums of the binary
- `schema/`: Directory containing JSON schema files
- `schema.json`: Combined schema file

## License

MIT
npm package: @satlayer/cosmwasm-schema
Description: A utility package with generated TypeScript type definitions (.d.ts files) from CosmWasm smart contract JSON schemas. This package automatically converts CosmWasm contract schemas into TypeScript type definitions, enabling type-safe interactions with SatL
Latest version: 2.4.0

# SatLayer CosmWasm Schema

A utility package with generated TypeScript type definitions (.d.ts files) from CosmWasm smart contract JSON schemas.
This package automatically converts CosmWasm contract schemas into TypeScript type definitions,
enabling type-safe interactions with SatLayer BVS contracts. It extracts `InstantiateMsg`, `ExecuteMsg`, `QueryMsg`,
and response types from contract schemas.

## License

MIT
npm package: @satlayer/cosmwasm-schema-cli
Description: A command-line tool for generating type definitions from CosmWasm schema files.
Latest version: 2.4.0

# CosmWasm Schema CLI

A command-line tool for generating type definitions from CosmWasm schema files.

## Overview

CosmWasm Schema CLI is a utility that transforms CosmWasm contract schema files into type definitions for various programming languages. It uses the [quicktype](https://github.com/quicktype/quicktype) library to generate strongly-typed code from JSON schema definitions.

This tool is particularly useful for developers working with CosmWasm smart contracts who need to generate client-side types that match their contract's schema.

## Installation

### Global Installation

```shell script
# Using npm
npm install -g @satlayer/cosmwasm-schema-cli

# Using pnpm
pnpm add -g @satlayer/cosmwasm-schema-cli

# Using yarn
yarn global add @satlayer/cosmwasm-schema-cli
```

### Local Installation

```shell script
# Using npm
npm install --save-dev @satlayer/cosmwasm-schema-cli

# Using pnpm
pnpm add -D @satlayer/cosmwasm-schema-cli

# Using yarn
yarn add -D @satlayer/cosmwasm-schema-cli
```

Add the following script to your `package.json`:

```json
{
  "scripts": {
    "build:schema": "schema-gen ./path/to/schema.json --language typescript --out-dir ./"
  }
}
```

## Usage

### Basic Usage

Generate type definitions for a CosmWasm schema file:

```shell script
schema-gen ./path/to/schema.json
```

By default, this will generate a typescript file in the current directory, using the contract name (or directory name) as the basis for the output filename.

### Options

```
Usage: schema-gen <schema-path> [options]

Options:
  --out-dir, -o    Output directory (default: current directory)
  --language, -l   Target language (default: go)
                   Supported: go, typescript, rust, kotlin, swift, csharp, java, javascript, python, cpp
  --help, -h       Show this help message
```

### Examples

Generate TypeScript types in a specific directory:

```shell script
schema-gen ./contracts/dist/schema.json --language typescript --out-dir ./types
```

Generate Go types:

```shell script
schema-gen ./contracts/dist/schema.json --language go --out-dir ./pkg/types
```

## Supported Languages

- Go
- TypeScript (default)

## How to get `schema.json` file

To generate the `schema.json` file for your CosmWasm contract, you can use `cosmwasm-optimizer` to build your contract.
Read more about it in the [@satlayer/cosmwasm-optimizer](https://github.com/satlayer/satlayer-bvs/tree/main/packages/cosmwasm-optimizer).
npm package: @satmaxt/sidebar-menu-drawer
Description: - [Sidebar Menu Drawer](#sidebar-menu-drawer) - [Demo](#demo) - [Quick Installation](#quick-installation)   - [Install Required Dependencies](#install-required-dependencies)   - [Install Sidebar Menu Drawer](#install-sidebar-menu-drawer)   - [Using Compon
Latest version: 1.0.1

# sidebar-menu-drawer

- [Sidebar Menu Drawer](#sidebar-menu-drawer)
- [Demo](#demo)
- [Quick Installation](#quick-installation)
  - [Install Required Dependencies](#install-required-dependencies)
  - [Install Sidebar Menu Drawer](#install-sidebar-menu-drawer)
  - [Using Component](#using-component)

# Demo
<p style="text-align:center">
<img src="https://images2.imagebam.com/f7/b1/a9/de7aa71325876433.png" alt="sidebar-menu-drawer" />
</p>

# Quick Installation

## Install Optional Dependencies
```
npm install --save font-awesome
```

## Install Sidebar Menu Drawer
```
npm install @satmaxt/sidebar-menu-drawer
```

## Using Component
at ``script`` tag section
```js
import SidebarMenuDrawer from '@satmaxt/sidebar-menu-drawer'

export default {
  data() {
    return {
      show: true,
      ...
    }
  },
  components: {
    SidebarMenuDrawer
  }
}
```

at ``template`` section
```html
<template>
  <div>
    <button @click.prevent="show = true">Show</button>
    <sidebar-menu-drawer v-model="show">
      <template v-slot:header>
        <h2 class="title">Sidebar Menu</h2>
      </template>
      <ul>
        <li><a href="#"><i class="fa fa-home fa-fw"></i> Home</a></li>
        <li><a href="#"><i class="fa fa-info fa-fw"></i> About</a></li>
        <li><a href="#"><i class="fa fa-envelope fa-fw"></i> Contact</a></li>
        <li><a href="#"><i class="fa fa-lock fa-fw"></i> Privacy</a></li>
        <li class="divider"></li>
        <li><a href="#"><i class="fa fa-tags fa-fw"></i> Product</a></li>
        <li><a href="#"><i class="fa fa-file-text fa-fw"></i> Blog</a></li>
        <li><a href="#"><i class="fa fa-envelope fa-fw"></i> Support</a></li>
      </ul>
    </sidebar-menu-drawer>
  </div>
</template>
```

At ``style`` section
```scss
@import "~@satmaxt/sidebar-menu-drawer/src/assets/sidebar-menu-drawer";

/* Add this line if you installed font-awesome */
$fa-font-path: "~font-awesome/fonts" !default;
@import '~font-awesome/scss/font-awesome';
```

Done

Coded at Sukabumi by [Satmaxt Developer](https://satmaxt.xyz)
npm package: @sato0130/svelte-tooltip
Description: ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@sato0130/svelte-tooltip) ![npm](https://img.shields.io/npm/v/@sato0130/svelte-tooltip?color=green)
Author: K-Sato1995
Latest version: 0.0.4

# @sato0130/svelte-tooltip

![npm bundle size](https://img.shields.io/bundlephobia/minzip/@sato0130/svelte-tooltip)
![npm](https://img.shields.io/npm/v/@sato0130/svelte-tooltip?color=green)

Light weight svelte-action based tooltip.

## Demo

https://svelte-tooltip-k-sato1995.vercel.app/

## Installation

```bash
$ npm i @sato0130/svelte-tooltip
```

or

```bash
$ yarn add @sato0130/svelte-tooltip
```

## Usage

1. Import `SvelteTooltip`.

```typescript
import SvelteTooltip from '@sato0130/svelte-tooltip';
```

2. Use `SvelteTooltip` in the element you want the tooltip to be on

You can see the other options below.

```svelte
<div use:SvelteTooltip={{ body: 'Tooltip content' }}>Hover Me</div>
```

## Options

| Name       | isRequired | type                                          | Description                                  |
| -----      | ---------- | --------------------------------------------- | -------------------------------------------- |
| body       | true       | `string`, `SvelteComponent`                   | Content in the tooltip                       |
| bodyAsHTML | false      | `false`, `true`                               | Render the content as HTML                   |
| place      | false      | `top`, `bottom`, `right`, `left`              | Place of the tooltip(Relative to the cursor) |
| type       | false      | `dark`, `success`, `warning`, `error`, `info` | Tooltip theme                                |
| style      | false      | `string`                                      | custom style                                 |

## License

MIT
npm package: @satolep/eslint
Description: ESLint config to NextJS, NestJS and React Native
Author: Bruno Ferraz Silveira
Latest version: 1.0.16

# Satolep ESLint

## Quais configurações estão inclusas?

- Configurações gerais de ESLint:
  - Plugin e parser do TypeScript;
  - Prettier;
  - Ordenação de imports;
  - Exclusão de imports desnecessários;
- ESLint para NextJS;
  - Plugin do React;
  - Plugin do NextJS;
- ESLint para React Native:
  - Plugin do React;
  - React Native Community;
- ESLint para NestJS.

## Setup

### NextJS

Install dependencies:
```
yarn add -D eslint eslint-config-next @satolep/eslint
```
Inside `.eslintrc`
```
{
  "extends": [
    "./node_modules/@satolep/eslint/next", 
    "next/core-web-vitals"
  ]
}

```

### NestJS

Install dependencies:
```
yarn add -D eslint @satolep/eslint
```
Inside `.eslintrc`
```
{
  "extends": "./node_modules/@satolep/eslint/nest"
}
```

### React Native

Install dependencies:
```
yarn add -D eslint @satolep/eslint
```
Inside `.eslintrc`
```
{
  "extends": "./node_modules/@satolep/eslint/react-native"
}
```
npm package: @satont/grammy-file-storage
Description: File storage for grammY library.
Author: Satont <satontworldwide@gmail.com>
Latest version: 1.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# File storage adapter for grammY

Storage adapter that can be used to
[store your session data](https://grammy.dev/plugins/session.html) in files when
using sessions.

## Installation

Node

```bash
npm install @satont/grammy-file-storage --save
```

Deno

```ts
import { FileAdapter } from "https://x.nest.land/grammy-file-storage@1.1.2/src/mod.ts";
```

## Usage

You can check
[examples](https://github.com/Satont/grammy-storages/tree/main/packages/file/examples)
folder
npm package: @satont/grammy-mongodb-storage
Description: MongoDB storage for grammy library.
Author: Satont <satontworldwide@gmail.com>
Latest version: 1.1.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# MongoDB storage adapter for grammY

Storage adapter that can be used to
[store your session data](https://grammy.dev/plugins/session.html) with
[MongoDB](https://www.mongodb.com/) when using sessions.

Compatible with deno and node!

## Installation

Node

```bash
npm install @satont/grammy-mongodb-storage --save
```

Deno

```ts
import {
  ISession,
  MongoDBAdapter,
} from "https://x.nest.land/grammy-mongodb-storage@1.0.1/src/mod.ts";
```

## Usage

You can check
[examples](https://github.com/Satont/grammy-storages/tree/main/packages/mongodb/examples)
folder, which contains deno and node examples.:

### Mongoose

If you use Mongoose for operations with mongodb, you can still use this adapter.
You need to get a native connection and use it:

```ts
import mongoose from "mongoose";
import MongoStorage from "@satont/grammy-mongodb-storage";

await mongoose.connect("mongodb://localhost:27017/test");

const collection = mongoose.connection.db.collection<MongoStorage.ISession>(
  "sessions",
);
new MongoStorage.MongoDBAdapter({ collection });
```
npm package: @satont/grammy-psql-storage
Description: PSQL storage for grammY library.
Author: Satont <satontworldwide@gmail.com>
Latest version: 1.0.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# PSQL storage adapter for grammY

Storage adapter that can be used to
[store your session data](https://grammy.dev/plugins/session.html) in
[PostgreSQL](https://www.postgresql.org/) when using sessions.

## Installation

Node

```bash
npm install @satont/grammy-psql-storage pg --save
```

Deno

```ts
import { PsqlAdapter } from "https://x.nest.land/grammy-psql-storage@0.0.5/src/mod.ts";
import { Client } from "https://deno.land/x/postgres@v0.14.2/mod.ts";
```

## Usage

You can check
[examples](https://github.com/Satont/grammy-storages/tree/main/packages/psql/examples)
folder
npm package: @satont/grammy-redis-storage
Description: Redis storage for grammy library.
Author: Satont <satontworldwide@gmail.com>
Latest version: 1.2.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Redis storage adapter for grammY

Storage adapter that can be used to
[store your session data](https://grammy.dev/plugins/session.html) in
[Redis](https://redis.io/) when using sessions.

## Installation

Node

```bash
npm install @satont/grammy-redis-storage ioredis --save
npm install @types/ioredis -D
```

```ts
import { RedisAdapter } from "@satont/grammy-redis-storage";
import IORedis from "ioredis";
```

Deno

```ts
import { RedisAdapter } from "https://x.nest.land/grammy-redis-storage@1.1.1/src/mod.ts";
import { connect } from "https://deno.land/x/redis@v0.25.0/mod.ts";
```

## Usage

You can check
[examples](https://github.com/Satont/grammy-storages/tree/main/packages/redis/examples)
folder
npm package: @satont/grammy-typeorm-storage
Description: TypeORM storage for grammy library.
Author: Satont
Latest version: 1.0.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# TypeORM storage adapter for grammY

Storage adapter that can be used to [store your session data](https://grammy.dev/plugins/session.html) with [TypeORM](https://typeorm.io/) when using sessions.

## Installation

```bash
npm install @satont/grammy-typeorm-storage typeorm --save
```

## Usage


You can check [examples](https://github.com/Satont/grammy-typeorm-storage/tree/main/examples) folder, or simple use followed code:

Implement the Session entity:
```ts
import { Column, createConnection, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { ISession } from "@satont/grammy-typeorm-storage";

@Entity()
export class Session implements ISession {
  @PrimaryGeneratedColumn()
  id: string;

  @Column('varchar')
  key: string

  @Column('text')
  value: string
}
```

Create bot and pass adapter as storage:

```ts
import { Bot, Context, session, SessionFlavor } from "grammy";
import { TypeormAdapter } from "@satont/grammy-typeorm-storage";
import { createConnection } from 'typeorm';

// that import for example class before
import Session from './session'

// write session types
interface SessionData {
  counter: number;
}

// create context for grammy instance
type MyContext = Context & SessionFlavor<SessionData>;

// Create bot and register session middleware
async function bootstrap() {
  // create typeorm connection
  await createConnection({
    name: 'default',
    type: 'better-sqlite3',
    database: ':memory:',
    entities: [Session],
    synchronize: true,
  });

  const bot = new Bot<MyContext>("");
  bot.use(
    session({
      initial: () => ({ counter: 0 }),
      storage: new TypeormAdapter({ repository: getRepository(Session) }),
    })
  );
  
  // Register your usual middleware, and start the bot
  bot.command("stats", (ctx) =>
    ctx.reply(`Already got ${ctx.session.counter} photos!`)
  );
  bot.on(":photo", (ctx) => ctx.session.counter++);
  
  bot.start();

}
```
npm package: @satont/spamnya
Description: Spam detector for discord.js bots
Author: Satont
Latest version: 2.0.1

# Spamnya

A spam detector for discord.js bots

---

# Installation

```bash
npm i satont/spamnya
```

# Usage

CommonJs

```javascript
  const { Client } = require('discord.js')
  const spamnya = require('spamnya')
  const client = new Client()

  client.on('message', (message) => {
    //initiate the detector and log the chats with max 50 logged chats
    spamnya.log(message, 50)

    if (spamnya.tooQuick(3, 1000)) {
      // when someone send 3 chats in less than a second
    }

    if (spamnya.sameMessages(3, 60000)){
      // when someone send 3 identical chats within a minute
    }
  })
```

ES6 modules:

```javascript
import spamnya from 'spamnya'
import { Client } from 'discord.js'
const client = new Client()

client.on('message', (message) => {
  //initiate the detector and log the chats with max 50 logged chats
  spamnya.log(message, 50)

  if(spamnya.tooQuick(3, 1000)) {
    // when someone send 3 chats in less than a second
  }

  if(spamnya.sameMessages(3, 60000)) {
    // when someone send 3 identical chats within a minute
  }
})
```

# Credits
Original author is rainqubit. Repo: https://github.com/rainqubit/spamnya
npm package: @satont/text-utils
Description: Analyze text and other helpers
Author: Satont
Latest version: 1.0.8

# Text-utils

[![Build](https://img.shields.io/github/workflow/status/Satont/text-utils/Build%20Project/master)](https://github.com/Satont/text-utils/actions?query=workflow%3A%22Build+Project%22)
[![Tests](https://img.shields.io/github/workflow/status/Satont/text-utils/Test%20Project/master?label=tests)](https://github.com/Satont/text-utils/actions?query=workflow%3A%22Test+Project%22)
[![Codecov](https://codecov.io/gh/Satont/text-utils/branch/master/graph/badge.svg?token=ABFL6BTPXK)](https://codecov.io/gh/Satont/text-utils/)

Text helpers: detect links, detect caps, and more tools.

[Documentation](https://satont.github.io/text-utils/)

## Installation

```shell
npm i @satont/text-utils
```

## Usage

Import via ES6:

```typescript
import { caps } from '@satont/text-utils'

console.log(caps.isCapsed('HELLO WORLD'))
```

Or CommonJS:
```js
const { caps } = require('@satont/text-utils')

console.log(caps.isCapsed('HELLO WORLD'))
```
npm package: @satont/unplugin-swc
Description: SWC plugin for Vite and Rollup
Latest version: 0.0.1

A fork of [unplugin-swc](https://github.com/egoist/unplugin-swc) by [egoist](https://github.com/egoist) — which makes it into a module, that can purposefully be used in a Vite project such as SvelteKit.

---

# unplugin-swc

[![npm version](https://badgen.net/npm/v/unplugin-swc)](https://npm.im/unplugin-swc)

> [SWC](https://swc.rs/) plugin for Vite and Rollup.

## Install

Clone project and build using `tsc build`. npm pack, and include that file to a project `pnpm add ./unplugin-swc.tgz`

## Usage

Vite or Rollup:

```ts
import swc from 'unplugin-swc'

export default {
   plugins: [
      swc.vite({
         jsc: {
            target: 'es2022' // Does not accept `esnext`	}
         }
      })
   ]
}
```

### `tsconfig.json`

Following SWC options are inferred from `tsconfig.json`:

- `jsc.parser.syntax`: based on file extension
- `jsc.parser.jsx`, `parser.tsx`: `compilerOptions.jsx`
- `jsc.parser.decorators`: `compilerOptions.experimentalDecorators`
- `jsc.transform.react.pragma`: `compilerOptions.jsxFactory`
- `jsc.transform.react.pragmaFrag`: `compilerOptions.jsxFragmentFactory`
- `jsc.transform.react.importSource`: `compilerOptions.jsxImportSource`
- `jsc.transform.legacyDecorator`: `compilerOptions.experimentalDecorators`
- `jsc.transform.decoratorMetadata`: `compilerOptions.emitDecoratorMetadata`
- `jsc.keepClassNames`: when decorator is enabled, because original class name is required by libs like `type-graphql` to generate correct graphql type

If you wish to disable this behavior and use `.swcrc` to control above `jsc` options, you can use `tsconfigFile` option:

```ts
// Or swc.rollup
swc.vite({
  tsconfigFile: false,
})

// It's also possible to use a custom tsconfig file instead of tsconfig.json
swc.vite({
  tsconfigFile: './tsconfig.build.json',
})
```

### Minification

Use the `minify: true` option, it only works for Rollup as Vite uses esbuild to minify the code and cannot be changed.

To have advanced control over the minification process, [use `jsc.minify` option in `.swcrc`](https://swc.rs/docs/configuration/minification).

### Vite

`esbuild` will be automatically disabled if you use this plugin.

## Options

This plugin accepts all `@swc/core` options, except for `jsc` which should be configured in `.swcrc` instead, and some extra options that are specific to this plugin:

### `options.tsconfigFile`

- Type: `boolean`, `string`
- Default: `tsconfig.json`

Disable the use of tsconfig file or specify a custom one.

### `options.include`

- Type: `RegExp`
- Default: `/\.[jt]sx?$/`

Files to include in the transpilation process.

### `options.exclude`

- Type: `RegExp`
- Default: `/node_modules/`

Files to exclude in the transpilation process.

### `options.jsc`

- Type: `object`

Custom [jsc](https://swc.rs/docs/configuration/compilation) options to merge with the default one.

## License

MIT &copy; [EGOIST](https://github.com/sponsors/egoist)
npm package: @satooru65536/ncss
Description: NCSS is not CSS
Author: SatooRu65536
Latest version: 1.0.4

# NCSS
NCSS is not CSS.

```
A. What programming languages have you used?
B. Hmm..."HTML" and "CSS".
A. (It isn't programming languages.)
```

## Install
```zsh
npm install -g @satooru65536/ncss
```

## Usage
```zsh
ncss ./main.ncss
```

## How to write ncss

### Hello World!
```css
#main {
    content: 'Hello, World!';    /*=> Hello, World!*/
    content: "Hello, World!";    /*=> Hello, World!*/
}
```

### variable
```css
#main {
    --num: 1;       /* number */
    --str: "hi";    /* string */
    --bool: true;   /* bool */

    content: "--num is " + var(--num);  /*=> --num is 1 */
    transform: --num 5;
    content: "--num is " + var(--num);  /*=> --num is 5 */
}
```

### array
```css
#main {
    --arr: 1 2 "a" "b"; /* array */

    content: "--arr is " + var(--arr);  /*=> --arr is [1,2,"a","b"] */
    transform: --arr 5;
    content: "--arr is " + var(--arr);  /*=> --arr is [5] */
    transform: --arr push(--arr 3 "c");
    content: "--arr is " + var(--arr);  /*=> --arr is [5,3,"c"] */
    content: "--arr[1] is " + arr(--arr 1);   /*=> --arr[1] is 3 */
}
```

### if / elseif / else
```css
[main.ncss]
#main {
    --n: 5;

    .if [--n > 5] {
        content: "--n > 5";
    }
    .else if [--n == 5] {
        content: "--n == 5";
    }
    .else {
        content: "--n < 5";
    }
}
```
```
[output]
--n == 5
```

### while
```css
[main.ncss]
#main {
    --n: 0;

    .while [--n < 3] {
        content: "while-1 " + var(--n);
        transform: --n var(--n) + 1;
    }

    content: "";
    transform: --n 0;

    .while [true] {
        content: "while-2 " + var(--n);
        transform: --n var(--n) + 1;

        .if [--n == 4] {
            break: "";
        }
    }
}
```
```
[output]
while-1 0
while-1 1
while-1 2

while-2 0
while-2 1
while-2 2
while-2 3
```

### group
(Used to express scss-like annoyance.)
```css
[mian.ncss]
#main {
    .en {
        content: "Hello";
    }
    .ja {
        content: "こんにちは";
    }
    .ko {
        content: "안녕하세요";
    }
}
```
```
[output]
Hello
こんにちは
안녕하세요
```

### self function
```css
[main.ncss]
#main {
    content: "main";
    sub: "arg" "ments";
    reslut: --res-1 --res2;
    content: var(--res-1);
    content: var(--res-2);
}

#sub [--arg-1 --arg-2]{
    content: var(--arg-1) + var(arg-2);
    content: "sub";
    return: "ret" "urn";
    content: "heyheyhey!";
}
```
```
[output]
main
argments
sub
ret
urn
```

## Reference
- [自作言語でFizzBuzzを動かす！](https://zenn.dev/koduki/articles/fb7e20f3719ec5)
- [プログラミング言語の作り方](https://3iz.jp/)

## 

# LICENSE
[MIT LICENSE](./LICENSE)
npm package: @satori-sdk/component-library
Description: React component library used for Satori apps
Latest version: 0.1.11

# Satori Component Library

This is a React component library used by Satori apps.
The following components are included in this library:

- AvatarPicker: component for displaying avatars and picker component for choosing name/avatar combo
- CopyButton: Copy button component
- Mini Web Console: a mini Satori console for displaying RTM messages
- Share: component for sharing links or other texts. When clicked, display an overlay containing the CopyButton
- GitHubButton - component for Go to GitHub repo button.
- SignUpButton - component for Sign Up button for satori dev portal.
- SatoriLogo - component for Satori logo image.
- AppShell - component for app shell with common styles.
- AppHeader - component for app header with Logo, GitHub and SignUp buttons.

## Getting Started

To run locally:
1. clone the repo
1. `yarn install` && `npm run storybook`

To use the components:

1. install: `npm i @satori-sdk/component-library`
1. import modules to use: `import { CopyButton, AvatarPicker } from '@satori-sdk/component-library';`
1. follow examples in storybook

To publish package:

1. `npm login` using satori-sdk user
1. `npm run publish-<version>` where &lt;version&gt; can be major, minor or patch.