open-index/open-npm huggingface dataset:
npm package: @fatduckai/prompt-utils
Description: A lightweight and efficient prompt builder for LLM chat completions.
Author: Fat Duck AI
Latest version: 0.5.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @fatduckai/prompt-utils

A lightweight and efficient prompt builder for LLM chat completions.

## Features

- 🚀 Simple, declarative chat prompt templates
- 🔍 Variable substitution with validation
- ✅ Built-in lint checks
- 📝 TypeScript support

## Installation

```bash
npm install @fatduckai/prompt-utils
# or
yarn add @fatduckai/prompt-utils
# or
bun add @fatduckai/prompt-utils
```

## Quick Start

```typescript
import { PromptBuilder } from "@fatduckai/prompt-utils";
import OpenAI from "openai";

async function main() {
  const template = `
    <system>You are a helpful AI assistant.</system>
    <user>My name is <name> and I need help with <task></user>
  `;

  const builder = new PromptBuilder(template).withContext({
    name: "Alice",
    task: "writing code",
  });

  const messages = await builder.build();

  const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

  const completion = await openai.chat.completions.create({
    model: "gpt-3.5-turbo",
    messages,
  });

  console.log(completion.choices[0].message);
}
```

## Template Format

Templates use a simple XML-like syntax supporting system, user, and assistant messages:

```typescript
const template = `
  <system>System message here</system>
  <user>User message with <variable></user>
  <assistant>Assistant response here</assistant>
`;
```

## Configuration

```typescript
const builder = new PromptBuilder(template, {
  validateOnBuild: true, // Validate before building (default: true)
  throwOnWarnings: false, // Throw error on warnings (default: false)
  allowEmptyContent: false, // Allow empty messages (default: false)
});
```

## Examples

The repository includes several examples demonstrating different use cases:

### Basic Chat

```bash
bun examples/basic-chat.ts
```

Shows simple variable substitution and message building.

### Multi-turn Conversations

```bash
bun examples/multi-turn.ts
```

Demonstrates how to create conversations with multiple turns.

### Database Integration

```bash
bun examples/analytics.ts
```

Shows how to use the builder with database content.

### OpenAI Integration

```bash
bun examples/openai-integration.ts
```

Complete example of using the builder with OpenAI's API.

Check the [examples](./examples) directory for the full source code and more examples.

## Error Handling

The builder validates:

- Template structure
- Undefined variables
- Empty content (when not allowed)
- Invalid context values

```typescript
// Get validation results
const validation = await builder.validate();
if (!validation.isValid) {
  console.error("Validation errors:", validation.errors);
  console.warn("Warnings:", validation.warnings);
}
```

## License

MIT

## Author

FatDuckAI

## Support

- Issues: [GitHub Issues](https://github.com/fatduckai/prompt-utils/issues)
npm package: @fate-lovely/standard
Description: JavaScript standard style for myself
Latest version: 0.8.0

# ShuoYe Standard

朔夜项目使用的JS Linter。在[Standard JS]的基础上，做了部分改动。

## 参考

- [ESLint Config Standard](https://github.com/standard/eslint-config-standard)

## 注意

目前，由于`ESLint`的问题，对于`?`号操作符多行模式下的缩进会报错，需要使用`/* eslint-disable /*`来关闭相关校验，[相关Issue](https://github.com/eslint/eslint/issues/6606)。

```javascript
// this is the correct style, but `standard` will complain
/* eslint-disable */
const A = condition ?
  [
    1,
    2,
    3,
  ]
  :
  [
    4,
    5,
    6,
  ]
/* eslint-enable */
```

## 安装配置

使用`husky`配置`@shuoye/standard`作为`pre-commit`的钩子，推荐使用`snazzy`来美化输出。

```bash
yarn add -D husky
yarn add -D @shuoye/standard
yarn add -D snazzy
```

```javascript
// vim package.json
{
  "scripts": {
    "precommit": "standard src/**/*.{js,jsx,vue} | snazzy"
  }
}
```

## 规则

在`standard`的基础上，做了如下改动和修改。

- 引号使用**双引号**而不是单引号（`quotes`）
- 数组，对象等如果跨行，末尾一定**要有逗号**（`comma-dangle`）
- 函数名和函数参数之间不需要空格，除了`asyncArrow`

  ```javascript
  // bad
  function a () {...}
  var a = function () {...}
  var b = async() => {...}
  
  // good
  function a() {...}
  var a = function() {...}
  var b = async () => {...}
  ```

- 关键词前后都需要添加空格，除了`if`，`switch`，`for`, `catch`后不需要添加空格。

  ```javascript
  // bad
  if (...) {...}

  if() {
      ...
  } else{...}

  if() {

  }else {...}

  for () {
    ...
  }

  try {

  } catch (err) {

  }

  // good
  if() {...}

  if() {

  } else {...}

  for() {
    ...
  }

  try {

  } catch(err) {

  }
  ```

- 默认使用`eslint-babel`作为`parser`，主要是默认parser目前不支持[Class Property](https://babeljs.io/docs/plugins/transform-class-properties/)，而这个特性很有用。

- `?`和`:`这两个操作符的换行规则比较特殊，如果比较短，那么全部在一行，如果比较长，`?`后跟一个换行，而`:`前后都跟上一个换行。

  ```javascript
  var a = short ? var1 : var2
  var b = long ?
    var3
    :
    var4
  ```

## 全局变量

所有的全局变量应该都带有`window`前缀，除了`document`和`navigator`。如果因为某些原因引入了全局变量，必须要告知Standard，否则将会报错。

- 在文件顶部添加如下备注

  ```javascript
  /* global var1, var2 */
  ```

- 向`package.json`中添加如下内容

  ```json
  "standard": {
    "globals": ["var1", "var2"]
  }
  ```

## 禁用检查

在某些情况下，需要禁用样式检查，具体请看[ESLint disabling rules](http://eslint.org/docs/user-guide/configuring#disabling-rules-with-inline-comments)文档。简单来说，有两种方式。

1. 使用`eslint-disable-line`注释来禁止检查某一行。

```javascript
// 下面这一行不会进行样式检查
var a   = 100 // eslint-disable-line 
```

2. 使用`eslint-disable`和`eslint-enable`注释来禁止检查某一段区域的代码。

```javascript
// 下面这段被注释包裹的代码都不会进行样式检查
/* eslint-disable */
var a   = 100
var b   = 200
...
/* eslint-enable */
```

[Standard JS]: https://github.com/feross/standard
npm package: @fate-lovely/wxmp
Description: ## 功能
Latest version: 0.10.0

# wxmp

## 功能

- 单文件组件, 且可以自动解析 config 中的依赖
- 页面和组件选项中增加了 Computed 计算属性

## 完整例子

- 见 `example`

## 单文件组件

- 每个单文件组件由四部分组成: `template`, `style`, `config`, `script`, 分别会编译到小程序对应文件:
`wxml`, `wxss`, `json`, `js`
- `definePage` 中增加了 `methods` 配置项，提供与组件一致的代码组织形式

```js
div(bindtap="onTap")

definePage({
  methods: {
    onTap() {
      // ...
    },
  },
})
```

### 使用自定义解析引擎

```js
{
  loader: "wxmp",
  options: {
    script: [{ loader: "babel-loader" }],
    template: [
      {
        loader: "pug-plain-loader",
        options: {
          doctype: null, // 解决小程序中闭合标签不兼容的问题
        },
      },
    ],
    style: [{ loader: "stylus-loader" }],
    config: [{ loader: "yaml-loader" }],
  },
},
```

注意:

- 其中 `script` 必须提供，因为小程序必须执行 `App`, `Page`, `Component`
- 由于 wxmp 需要分析 config 中配置的依赖关系，所以规定 config 必须使用 yaml 语法
- 在 `pug` 中 `div(wx:if="{{ 2 > 1 }}")` 会被转成 `{{ 2 &gt 1 }}`, 无法被小程序识别。
所以符合正则 `/="{{/g` 的部分会被自动替换成 `!=\"{{` , 以关闭 pug 转义

## 计算属性

- 定义页面及组件时，使用框架提供的 `definePage`, `defineComponent`, 更新数据时使用 `this.$set({})`
- 修改 data，自动修改依赖的 computed
- 传入的 properties 变化，依赖的 computed 自动更新
- 计算属性内部的 `this` 并不会指向当前页面或组件实例, `data` 将作为函数参数传入

```
definePage({
  data: {
    a: 1,
    b: 1,
  },

  computed: {
    c(data) {
      return data.a + data.b
    },
  },

  methods: {
    dataChange() {
      this.$set({ a: 2 }) // a c 会自动更新
    },
  },
})
```

## VS Code 中 wxmp 文件高亮配置

- edit `setting.json`

```json
  "vetur.grammar.customBlocks": {
    "config": "yaml",
    "template": "pug",
    "style": "stylus"
  },
  "files.associations": {
    "*.wxmp": "vue"
  },
  "vetur.validation.template": false,
  "vetur.validation.style": false,
  "vetur.validation.script": false
```

- run the command `Vetur: Generate grammar from vetur.grammar.customBlocks`

- restart VS Code to get syntax highlighting for custom blocks
npm package: @fate-vtj/coder
Description: VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器，面向前端开发者，开箱即用。 无缝嵌入本地开发工程，不改变前端开发流程和编码习惯。
Author: quqingfei
Latest version: 0.13.28-fix
npm package: @fate-vtj/designer
Description: VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器，面向前端开发者，开箱即用。 无缝嵌入本地开发工程，不改变前端开发流程和编码习惯。
Author: quqingfei
Latest version: 0.13.28-fix
npm package: @fate-vtj/parser
Description: VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器，面向前端开发者，开箱即用。 无缝嵌入本地开发工程，不改变前端开发流程和编码习惯。
Author: quqingfei
Latest version: 0.13.28-fix
npm package: @fatehan/tsrp
Description: fatehan main models
Author: Mehdi Rajabi
Latest version: 1.5.3

# WSTS - Fatehan TypeScript Report Service

## Without GRPC

```bash
protoc \
  --plugin=protoc-gen-ts_proto=$(which protoc-gen-ts_proto) \
  -I ./src/fatehan \
  -I ../protocols \
  --ts_proto_out=./src/fatehan \
  --ts_proto_opt=outputServices=none,outputClientImpl=false,esModuleInterop=true,outputEncodeMethods=true,outputJsonMethods=true,useOptionals=messages,forceLong=long \
  ../protocols/**/*.proto
```

### Build

```bash
npm run build
```

### Deploy

```bash
npm version patch
npm publish
```