open-index/open-npm huggingface dataset:
npm package: @soulerou/branchformat
Description: ⚙ A simple util to help quick checkout or switch branches that correspond to team regulations
Author: Souler Ou
Latest version: 0.0.24

# BranchFormat
> 提供便捷默认值的快速分支切出工具


### 使用

先安装
```shell
# 使用 Yarn
yarn add @nibfe/branchformat --dev
# 使用 NPM
npm install @nibfe/branchformat -D
```

进行初始化设置
```shell
yarn bfinit
npx bfinit
```

添加完成后使用 `yarn checkout` 或者 `npm checkout` 即可


### 高级配置
> 默认会读取 `package.json` 或者 `branchformat.config.js` 中的配置信息
npm package: @souleymanefafabhe/sylidata
Description: Sylidata est un package NPM qui permet de manipuler facilement des données sur la Guinée, il propose de nombreuses informations sur le pays.
Author: souleymane fafabhe
Latest version: 1.0.2

# @souleymanefafabhe/sylidata

Le package `@souleymanefafabhe/sylidata` fournit des données géographiques et administratives sous forme de JSON, incluant des informations sur les régions, les langues, les sous-préfectures, les préfectures, et les communes. Ce module permet de facilement accéder à ces données depuis votre projet Node.js.

## Installation

Installez le package via `npm` ou `yarn` :

```bash
npm install @souleymanefafabhe/sylidata
```

ou

```bash
yarn add @souleymanefafabhe/sylidata
```

## Utilisation

Une fois le package installé, vous pouvez l'importer et accéder aux données comme suit :

## Installation

Installez le package en utilisant `npm` ou `yarn` :

```bash
npm install @souleymanefafabhe/sylidata
```

ou

```bash
yarn add @souleymanefafabhe/sylidata
```

## Utilisation

Voici comment importer et utiliser le package dans votre code JavaScript :

```javascript
const { rg, lg, sp, pr, cm } = require('@souleymanefafabhe/sylidata');

// Accéder à la liste des régions
const regions = rg();
console.log(regions);

// Accéder à la liste des langues
const languages = lg();
console.log(languages);

// Accéder aux sous-préfectures, préfectures et communes
const sousPrefectures = sp();
console.log(sousPrefectures);

const prefectures = pr();
console.log(prefectures);

const communes = cm();
console.log(communes);
```

### Fonctions disponibles

- `rg()`: Renvoie un tableau des régions.
- `lg()`: Renvoie un tableau des langues.
- `sp()`: Renvoie un tableau des sous-préfectures, basé sur les régions.
- `pr()`: Renvoie un tableau des préfectures, basé sur les régions.
- `cm()`: Renvoie un tableau des communes, basé sur les régions.

## Structure des données

Les données sont extraites de deux fichiers JSON :

- **`region.json`** : Contient des informations sur les régions, sous-préfectures, préfectures et communes.
- **`language.json`** : Contient des informations sur les langues.

Exemple de structure pour `region.json` :

```json
[
  {
    "nom": "Région 1",
    "sousprefectures": ["Sous-préfecture 1", "Sous-préfecture 2"],
    "prefectures": ["Préfecture 1", "Préfecture 2"],
    "communes": ["Commune 1", "Commune 2"]
  }
]
```

Exemple pour `language.json` :

```json
[
  {
    "langue": "Français"
  }
]
```

## Contribuer

Les contributions sont les bienvenues. Si vous souhaitez contribuer au projet, suivez ces étapes :

1. Fork le projet.
2. Créez une branche pour vos modifications (`git checkout -b feature/nom-de-feature`).
3. Faites vos modifications.
4. Soumettez une pull request.

## License

Distribué sous la licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus d'informations.
```
npm package: @soulid/adapter-openclaw
Description: SOUL ID runtime adapter for OpenClaw — read/write Soul Documents from SOUL.md, IDENTITY.md, MEMORY.md
Author: soulid.io
Latest version: 0.1.0

# @soulid/adapter-openclaw

[SOUL ID](https://soulid.io) runtime adapter for [OpenClaw](https://openclaw.ai) — reads an OpenClaw workspace and produces a portable Soul Document.

[![npm](https://img.shields.io/npm/v/@soulid/adapter-openclaw)](https://www.npmjs.com/package/@soulid/adapter-openclaw)
[![spec](https://img.shields.io/badge/spec-v0.3-purple)](https://soulid.io/docs)

## Install

```bash
npm install @soulid/adapter-openclaw
```

## File mapping (SOUL ID v0.3 spec)

| OpenClaw file | → Soul Document field |
|---|---|
| `IDENTITY.md` | `soul_id`, `name`, `archetype` |
| `SOUL.md` | `purpose`, `values` |
| `AGENTS.md` + `SOUL.md` | `capabilities` (inferred from keywords) |
| `MEMORY.md` | `lineage.source`, `memory.index_file` |
| _(always)_ | `runtime_hints` (openclaw preset) |

## Usage

```typescript
import { fromWorkspace, toWorkspace } from '@soulid/adapter-openclaw'

// Read workspace → Soul Document
const doc = fromWorkspace({
  workspacePath: '/path/to/workspace',
  namespace: 'soulid',
  overrides: {
    soul_id: 'soulid:rasputina:v1:001',
    values: ['honesty', 'resourcefulness', 'privacy'],
  }
})

console.log(doc.soul_id)    // soulid:rasputina:v1:001
console.log(doc.name)       // from IDENTITY.md
console.log(doc.purpose)    // from SOUL.md
console.log(doc.capabilities) // inferred from file keywords

// Write soul_id back to IDENTITY.md
toWorkspace(doc, { workspacePath: '/path/to/workspace' })
```

## API

### `fromWorkspace(opts?)`

Parses an OpenClaw workspace into a partial `SoulDocument`.

```typescript
fromWorkspace({
  workspacePath?: string,   // defaults to process.cwd()
  namespace?: string,       // soul_id namespace, default 'soulid'
  overrides?: Partial<SoulDocument>  // fields to override/add
}): Partial<SoulDocument>
```

### `toWorkspace(doc, opts?)`

Writes `name`, `archetype`, `soul_id`, `purpose` back into `IDENTITY.md`.

```typescript
toWorkspace(doc: Partial<SoulDocument>, opts?: { workspacePath?: string }): void
```

### `readWorkspace(opts?)`

Returns the raw markdown strings from the workspace files.

```typescript
readWorkspace({ workspacePath?: string }): {
  soulMd?: string
  identityMd?: string
  memoryMd?: string
  agentsMd?: string
}
```

## Spec

This adapter implements the [RFC-SOULID-0003](https://soulid.io/docs) Runtime Adapter interface.

Required adapter fields declared:
- `runtime: "openclaw"`
- `soul_file: "SOUL.md"`
- `identity_file: "IDENTITY.md"`
- `memory_index: "MEMORY.md"`
- `memory_strategy: "pointer-index"`
- `capabilities_source: "plugins.entries"`
- `lifecycle_hooks: { on_session_start, on_session_end }`

## License

MIT — [soulid.io](https://soulid.io)
npm package: @soulid/cli
Description: CLI for the SOUL ID registry — publish, resolve, and list agent soul identifiers
Author: cerealskill
Latest version: 0.2.1

# @soulid/cli

CLI for the [SOUL ID](https://soulid.io) registry — publish, resolve, and list agent soul identifiers.

## Install

```bash
npm install -g @soulid/cli
```

## Usage

```bash
soulid resolve soulid:rasputina:v1:001
soulid list --archetype assistant
soulid publish ./my-agent.json
```

## Commands

| Command | Description |
|---------|-------------|
| `resolve <soul_id>` | Resolve a soul identifier |
| `publish <soul.json>` | Publish a Soul Document |
| `list [options]` | List registered souls |

### `list` options

| Flag | Description |
|------|-------------|
| `--archetype <type>` | Filter by archetype |
| `--owner <id>` | Filter by owner |
| `--q <name>` | Search by name |
| `--limit <n>` | Results per page (max 100) |
| `--offset <n>` | Pagination offset |

## Environment Variables

| Variable | Description |
|----------|-------------|
| `SOULID_API_KEY` | API key for publish |
| `SOULID_REGISTRY` | Custom registry URL (default: `https://registry.soulid.io`) |

## Soul Document Format

```json
{
  "soul_id": "soulid:scout:v1:001",
  "name": "Scout",
  "archetype": "researcher",
  "purpose": "Web research and data gathering",
  "values": ["accuracy", "speed"],
  "capabilities": ["search", "summarize"],
  "owner": { "id": "yourhandle", "type": "person" }
}
```

Soul ID format: `namespace:archetype:version:instance`

## Registry

- API: [registry.soulid.io](https://registry.soulid.io)
- Spec: [github.com/soulid-spec/spec](https://github.com/soulid-spec/spec)
- Web: [soulid.io](https://soulid.io)

## License

MIT
npm package: @soulid/core
Description: TypeScript types and validation for SOUL ID Soul Documents
Author: soulid.io
Latest version: 0.1.1

# @soulid/core

TypeScript types and validation for [SOUL ID](https://soulid.io) Soul Documents.

[![npm](https://img.shields.io/npm/v/@soulid/core)](https://www.npmjs.com/package/@soulid/core)
[![spec](https://img.shields.io/badge/spec-v0.6-purple)](https://soulid.io/docs)

## Install

```bash
npm install @soulid/core
```

## Usage

### Types

```typescript
import type { SoulDocument, SoulId } from '@soulid/core'

const doc: SoulDocument = {
  soul_id: 'soulid:rasputina:v1:001',
  name: 'Rasputina',
  archetype: 'assistant',
  purpose: 'Personal AI assistant with memory and tools',
  values: ['honesty', 'resourcefulness', 'privacy'],
  capabilities: ['web_search', 'code', 'memory'],
  memory: { type: 'persistent', backend: 'file' },
  lineage: { origin: 'soulid:rasputina:v1' }
}
```

### Validation

```typescript
import { validate, parse } from '@soulid/core'

// Validate — returns { valid, errors }
const result = validate(doc)
if (!result.valid) {
  console.error(result.errors)
}

// Parse — throws on invalid input, returns typed SoulDocument
const trusted = parse(jsonString)
```

### soul_id helpers

```typescript
import { isSoulId, parseSoulId, createSoulId, generateInstance } from '@soulid/core'

isSoulId('soulid:rasputina:v1:001')       // true
isSoulId('invalid')                        // false

parseSoulId('soulid:rasputina:v1:001')
// { namespace: 'soulid', archetype: 'rasputina', version: 'v1', instance: '001' }

createSoulId('soulid', 'scout', 'v1', '001')  // 'soulid:scout:v1:001'

generateInstance()  // e.g. 'a3f9c1' — random 6-char hex
```

## API Reference

| Export | Description |
|---|---|
| `SoulDocument` | Full Soul Document type (v0.1–v0.6) |
| `SoulId` | `string` alias for soul_id |
| `validate(doc)` | Validate any value → `{ valid, errors }` |
| `parse(input)` | Parse JSON string or object, throw if invalid |
| `isSoulId(str)` | Type guard — checks soul_id format |
| `parseSoulId(str)` | Parse soul_id into `{ namespace, archetype, version, instance }` |
| `createSoulId(...)` | Build a soul_id from parts |
| `generateInstance()` | Random 6-char hex instance identifier |

## Spec

Full specification: [soulid.io/docs](https://soulid.io/docs)

- v0.1 — Identity (soul_id format, Soul Document)
- v0.2 — Ownership & signatures (`owner`, `signature`, `trust`)
- v0.3 — Runtime Adapters (`runtime_hints`)
- v0.4 — Registry (resolve, publish, discover)
- v0.5 — Ecosystem (CLI, SDK)
- v0.6 — Decentralization (IPFS, DID, on-chain)

## License

MIT — [soulid.io](https://soulid.io)
npm package: @soulid/registry-client
Description: SDK client for the SOUL ID registry API
Latest version: 0.1.0

# @soulid/registry-client

Typed SDK client for the [SOUL ID Registry](https://registry.soulid.io).

## Install

```bash
npm install @soulid/registry-client
```

## Usage

```ts
import { createClient } from '@soulid/registry-client'

const client = createClient()

// Resolve a soul_id
const soul = await client.resolve('soulid:pedro-sre:v1:001')
console.log(soul.name) // Pedro SRE

// List souls
const { items, total } = await client.list({ archetype: 'assistant', limit: 10 })

// Search
const results = await client.list({ q: 'kubernetes' })

// Publish (requires API key)
const client = createClient({ apiKey: process.env.SOULID_API_KEY })
await client.publish({
  soul_id: 'soulid:my-agent:v1:001',
  name: 'My Agent',
  archetype: 'assistant',
  purpose: 'Does useful things',
})

// Download for a specific runtime
const doc = await client.download('soulid:pedro-sre:v1:001', 'claude-code')
```

## API

### `createClient(options?)` → `RegistryClient`

| Option | Default | Description |
|--------|---------|-------------|
| `baseUrl` | `https://registry.soulid.io` | Registry URL |
| `apiKey` | — | Required for `publish` and `delete` |

### Methods

| Method | Description |
|--------|-------------|
| `health()` | Check registry status |
| `resolve(soulId)` | Get a Soul Document by soul_id |
| `list(options?)` | List souls (archetype, owner, q, limit, offset) |
| `publish(doc)` | Create or update a Soul Document |
| `delete(soulId)` | Remove a soul from the registry |
| `download(soulId, runtime)` | Get soul pre-formatted for a runtime |

## License

MIT
npm package: @souljorje/releases-test
Description: Automate releases, versioning and release notes like a boss
Author: Georgii Bukharov
Latest version: 1.0.0

# releases-test

[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)

Repo to experiment with automated releases.
npm package: @souljs/admin-layout
Description: vue2 and vue3 components material
Author: lee
Latest version: 0.1.0

# Vue 3 + TypeScript + Vite

This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

## Recommended IDE Setup

- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).

## Type Support For `.vue` Imports in TS

TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.

If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:

1. Disable the built-in TypeScript Extension
   1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
   2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
npm package: @souljs/ribbon.js
Description: The best third party JS|TS library scaffold
Author: lee
Latest version: 0.1.4

# [ribbon-canvas](https://github.com/lee/ribbon-canvas)

[![](https://img.shields.io/badge/Powered%20by-jslib%20base-brightgreen.svg)](https://github.com/yanhaijing/jslib-base)
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/lee/ribbon-canvas/blob/master/LICENSE)
[![CI](https://github.com/lee/ribbon-canvas/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/lee/ribbon-canvas/actions/workflows/ci.yml)
[![npm](https://img.shields.io/badge/npm-0.1.0-orange.svg)](https://www.npmjs.com/package/@souljs/ribbon.js)
[![NPM downloads](http://img.shields.io/npm/dm/ribbon-canvas.svg?style=flat-square)](http://www.npmtrends.com/@souljs/ribbon.js)
[![Percentage of issues still open](http://isitmaintained.com/badge/open/lee/ribbon-canvas.svg)](http://isitmaintained.com/project/lee/ribbon-canvas 'Percentage of issues still open')

使用超简单的网站特效插件

## :star: 特性

- 支持ES6+或TypeScript编写源码，编译生成生产代码
- 多环境支持（支持浏览器原生，支持AMD，CMD，支持Webpack，Rollup，fis等）

> 注意: 如果不同时使用 `export` 与 `export default` 可打开 `legacy模式`，`legacy模式` 下的模块系统可以兼容 `ie6-8`，见rollup配置文件

## :pill: 兼容性

单元测试保证支持如下环境：

| IE  | CH   | FF   | SF  | OP   | IOS   | Android |
| --- | ---- | ---- | --- | ---- | ----- | ------- |
| 11+ | 100+ | 100+ | 16+ | 100+ | 10.3+ | 4.1+    |

**注意：编译代码依赖ES5环境，对于ie6-8需要引入[es5-shim](http://github.com/es-shims/es5-shim/)才可以兼容，可以查看[demo/demo-global.html](./demo/demo-global.html)中的例子**

## :open_file_folder: 目录介绍

```
.
├── demo 使用demo
├── dist 编译产出代码
├── doc 项目文档
├── src 源代码目录
├── test 单元测试
├── CHANGELOG.md 变更日志
└── TODO.md 计划功能
```

## :rocket: 使用者指南

通过npm下载安装代码

```bash
$ npm install --save @souljs/ribbon.js
```

入口文件main.ts

```js
import '@souljs/ribbon.js';
```

## :bookmark_tabs: 文档

[API](./doc/api.md)

## :kissing_heart: 贡献者指南

## 贡献者列表

[contributors](https://github.com/lee/ribbon-canvas/graphs/contributors)

## :gear: 更新日志

[CHANGELOG.md](./CHANGELOG.md)

## :airplane: 计划列表

[TODO.md](./TODO.md)
npm package: @souljs/theme-crazing-js
Description: The best change web theme JS|TS tool
Author: lee
Latest version: 0.1.2

# [theme-crazing-js](https://github.com/lee/theme-crazing-js)

[![](https://img.shields.io/badge/Powered%20by-jslib%20base-brightgreen.svg)](https://github.com/yanhaijing/jslib-base)
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/lee/theme-crazing-js/blob/master/LICENSE)
[![CI](https://github.com/lee/theme-crazing-js/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/lee/theme-crazing-js/actions/workflows/ci.yml)
[![npm](https://img.shields.io/badge/npm-0.1.0-orange.svg)](https://www.npmjs.com/package/@yoga/theme-crazing-js)
[![NPM downloads](http://img.shields.io/npm/dm/theme-crazing-js.svg?style=flat-square)](http://www.npmtrends.com/@yoga/theme-crazing-js)
[![Percentage of issues still open](http://isitmaintained.com/badge/open/lee/theme-crazing-js.svg)](http://isitmaintained.com/project/lee/theme-crazing-js 'Percentage of issues still open')

最好用的 `主题切换` 动画

## :star: 特性

- 体积小、操作简单
- 支持Vue、React

## :pill: 兼容性

单元测试保证支持如下环境：

| IE  | CH   | FF   | SF  | OP   | IOS   | Android | Node |
| --- | ---- | ---- | --- | ---- | ----- | ------- | ---- |
| 11+ | 100+ | 100+ | 16+ | 100+ | 10.3+ | 4.1+    | 14+  |

**注意：编译代码依赖ES5环境，对于ie6-8需要引入[es5-shim](http://github.com/es-shims/es5-shim/)才可以兼容，可以查看[demo/demo-global.html](./demo/demo-global.html)中的例子**

## :open_file_folder: 目录介绍

```
.
├── demo 使用demo
├── dist 编译产出代码
├── doc 项目文档
├── src 源代码目录
├── test 单元测试
├── CHANGELOG.md 变更日志
└── TODO.md 计划功能
```

## :rocket: 使用者指南

下载安装

```bash
# npm 安装

$ npm install --save @souljs/theme-crazing-js

# yarn 安装

$ yarn add @souljs/theme-crazing-js
```

使用

```scss
:root {
  --background-color: `light-color`;
  background-color: var(--background-color);
}

:root.dark {
  --background-color: `dark-color`;
  background-color: var(--background-color);
}
```

```vue
<script setup lang="ts">
import { useTheme } from '@souljs/theme-crazing-js';
const { setTheme } = useTheme();

function handleClick(e: Event) {
  setTheme(e);
}
</script>

<template>
  <button @click="handleClick">Toggle Theme</button>
</template>
```

## :bookmark_tabs: 文档

[API](./doc/api.md)

## :gear: 更新日志

[CHANGELOG.md](./CHANGELOG.md)

## :airplane: 计划列表

[TODO.md](./TODO.md)
npm package: @souljs/vue-admin-layout
Description: <div align="center"> 	<h1>Soul Admin Layout</h1>   <span><a href="./README.md">English</a> | 中文</span> </div>
Latest version: 0.0.7

# @souljs/vue-admin-layout

<div align="center">
	<h1>Soul Admin Layout</h1>
  <span><a href="./README.md">English</a> | 中文</span>
</div>

> [!NOTE]
> 如果你认为`AdminLayout`对你有帮助，或者你喜欢我们的项目，请在GitHub上给我们⭐️。您的支持是我们不断改进和添加新功能的动力!感谢您的支持!


## 使用

**环境准备**

确保您的环境满足以下要求:

- **NodeJS**: >=18.0.0, 建议18.19.0或更高版本。

**安装**

```bash
npm install @souljs/vue-admin-layout
yarn install @souljs/vue-admin-layout
pnpm install @souljs/vue-admin-layout
```

```vue
<script setup lang="ts">
import { AdminLayout } from "@souljs/vue-admin-layout";
import "@souljs/vue-admin-layout/dist/style.css";
</script>

<template>
  <AdminLayout></AdminLayout>
</template>
```

## AdminLayout

后台管理系统的布局组件

- 支持垂直(vertical)和水平(horizontal)两种布局模式
- 布局由头部 Header、页签 Tab、侧边栏 Sider、主体内容 Content 和底部 Footer 组成，除了主体内容 Content，其余都可以控制是否渲染
- 支持两种滚动模式：容器滚动(wrapper)和主体内容滚动(content)
- 支持主体内容 Content 全屏

### Api 用法

#### 属性

| 字段                      | 说明                                                                     | 类型                      | 默认值                    |
| ------------------------- | ------------------------------------------------------------------------ | ------------------------- | ------------------------- |
| mode                      | 布局模式                                                                 | [LayoutMode](#LayoutMode) | "vertical"                |
| commonClass               | 组件的通用样式类名，可控制容器、头部、页签、侧边栏、主体和底部的公共样式 | string                    | "transition-all-300"      |
| fixedTop                  | 固定上面的头部和 Tab 页签部分                                            | boolean                   | true                      |


### 说明

#### LayoutMode

```ts
/**
 * 布局模式
 * - horizontal 水平
 * - vertical 垂直
 */
type LayoutMode = "horizontal" | "vertical";
```
npm package: @soulmaneller-dev/config-loader
Description: Description
Author: Sitthidet Chaksu
Latest version: 1.2.0

[![pipeline status](https://gitlab.com/soulmaneller/node-config-loader/badges/master/pipeline.svg)](https://gitlab.com/soulmaneller/node-config-loader/commits/master)
[![npm](https://img.shields.io/npm/v/@soulmaneller-dev/config-loader.svg)](https://www.npmjs.com/package/@soulmaneller-dev/config-loader)

This module will helps you for generating and loading your configuration file.
It will merge default configuration and configuration from file.
It uses method `get` from [lodash](https://lodash.com/docs/4.17.10#get) for getting config data

# How to use

## Installation

*[Required]* nodejs version `8` or later

    npm i @soulmaneller-dev/config-loader

## Usage

    configLoader( default_config [, options ] );

**default_config** *(Object)*

Default configuration object

**options** *(Object)*

- CONFIG_DIR: *(String)* Path to store config file *[ Default: `'config'` ]*
- CONFIG_FILE: *(String)* Name of config file *[ Default: `'config.json'` ]*
- CONFIG_OVERWRITE: *(Boolean)* This will allow to overwirte default config to config file if config data is broken *[ Default: `true` ]*
- CONFIG_MERGE: *(Boolean)* Merging default config *[ Default: `true` ]*
- postProcess: *(Function)* (Only api) Function for processing config after merging as function( `config` ) *[ Default: null ]*

The options also able to be set by `environment variable`

```Javascript
const configLoader = require( '@soulmaneller-dev/config-loader' );
const DEFAULT_CONFIG = {
    foo: 'bar',
    address: {
        street: 'road'
    }
};

const config = configLoader( DEFAULT_CONFIG );

config( 'foo' );
// -> 'bar'

config( 'address.street' );
// -> 'road'

config( 'name' );
// -> undefined

config( 'name', 'John' );
// -> 'John'
```
npm package: @soulmonk-dev/test-auto-release-npm-package
Description: Using git actions, release npm package and create release note
Author: Vitalii
Latest version: 0.3.0

# test-auto-release-npm-package

# How to implement

- copy `.github/workflows/npm-publish.yml` to your project, made some adjustments, if necessary
  - dependency on test
  - remove test flow if you have separate CI/CD for testing (with complicated)
- set up secret for project `NPM_TOKEN`
- every time you push a new tag it will create a new publishing


# Flow

## Manual / automatic

- do tasks
- before release create pr:
  - easy way `npm version minor --no-git-tag-version` with bumping
- after merge bump release, trigger git action by running \
`npm run create-tag` \
it should switch to main, create tag based on version in package json and push it
- wait and check create release after git action done )

## To do it Automatic

Note: Not all changes in the main branch can be triggered as a new publication

Update `npm-publish.yml` flow `on: push: branches: [ main ]`

and then:
- open pr
- do not forget before marge to run `npm version minor` 

# Q&A

## Cannot get access to private repository

`npm publish --access public`

## TODO
`npm version minor --no-git-tag-version`
` && git push --tags`
`$(grep -m1 version package.json | awk -F: '{ print $2 }' | sed 's/[", ]//g')`

# Links

- Good example of workflows: https://github.com/MylesBorins/node-osc/tree/main/.github/workflows
- https://stedolan.github.io/jq