From a661b2d8dd0e02693a0b72e06c8b5a20425ebecd Mon Sep 17 00:00:00 2001 From: tiye Date: Sat, 10 Jan 2026 13:14:23 +0800 Subject: [PATCH] upgrade deps; promote as home page --- .gitattributes | 2 + Agents.md | 690 ++++++++++++++++++++++++++++++++ calcit.cirru | 522 ++++++++++++------------ compact.cirru | 38 +- content/images.cirru | 122 +++--- deps.cirru | 12 +- index.html | 4 +- llms/Respo.md | 920 +++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- yarn.lock | 660 ++++++++++++++++--------------- 10 files changed, 2321 insertions(+), 653 deletions(-) create mode 100644 Agents.md create mode 100644 llms/Respo.md diff --git a/.gitattributes b/.gitattributes index f865be5..59b903b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,5 @@ calcit.cirru -diff linguist-generated yarn.lock -diff linguist-generated +Agents.md -diff linguist-generated +llms/*.md -diff linguist-generated diff --git a/Agents.md b/Agents.md new file mode 100644 index 0000000..65d929c --- /dev/null +++ b/Agents.md @@ -0,0 +1,690 @@ +# Calcit 编程 Agent 指南 + +本文档为 AI Agent 提供 Calcit 项目的操作指南。 + +## ⚠️ 重要警告:禁止直接修改的文件 + +以下文件**严格禁止使用文本替换或直接编辑**: + +- **`calcit.cirru`** - 这是 calcit-editor 结构化编辑器的专用格式,包含完整的编辑器元数据 +- **`compact.cirru`** - 这是 Calcit 程序的紧凑快照格式,必须使用 `cr edit` 相关命令进行修改 + +这两个文件的格式对空格和结构极其敏感,直接文本修改会破坏文件结构。请使用下面文档中的 CLI 命令进行代码查询和修改。 + +## Calcit 与 Cirru 的关系 + +- **Calcit** 是编程语言本身(一门类似 Clojure 的函数式编程语言) +- **Cirru** 是语法格式(缩进风格的 S-expression,类似去掉括号改用缩进的 Lisp) +- **关系**:Calcit 代码使用 Cirru 语法书写和存储 + +**具体体现:** + +- `compact.cirru` 和 `calcit.cirru` 是用 Cirru 格式存储的 Calcit 程序 +- `cr cirru` 工具用于 Cirru 语法与 JSON 的转换(帮助理解和生成代码) +- Cirru 语法特点: + - 用缩进代替括号(类似 Python/YAML) + - 字符串用前缀 `|` 或 `"` 标记(如 `|hello` 表示字符串 "hello") + - 单行用空格分隔元素(如 `defn add (a b) (+ a b)`) + +**类比理解:** + +- Python 语言 ← 使用 → Python 语法 +- Calcit 语言 ← 使用 → Cirru 语法 + +生成 Calcit 代码前,建议先运行 `cr cirru show-guide` 了解 Cirru 语法规则。 + +--- + +## Calcit CLI 命令 + +Calcit 程序使用 `cr` 命令: + +### 主要运行命令 + +- `cr` 或 `cr compact.cirru` - 代码解释执行,默认读取 config 执行 init-fn 定义的入口 +- `cr compact.cirru js` - 编译生成 JavaScript 代码 +- `cr -1 ` - 执行一次然后退出(不进入监听模式) +- `cr --check-only` - 仅检查代码正确性,不执行程序 + - 对 init_fn 和 reload_fn 进行预处理验证 + - 输出:预处理进度、warnings、检查耗时 + - 用于 CI/CD 或快速验证代码修改 +- `cr js -1` - 检查代码正确性,生成 JavaScript(不进入监听模式) +- `cr js --check-only` - 检查代码正确性,不生成 JavaScript +- `cr eval ''` - 执行一段 Calcit 代码片段,用于快速验证写法 + +### 查询子命令 (`cr query`) + +这些命令用于查询项目信息: + +**项目全局分析:** + +- `cr analyze call-graph` - 分析从入口点开始的调用图结构 +- `cr analyze count-calls` - 统计每个定义的调用次数 + + _使用示例:_ + + ```bash + # 分析整个项目的调用图 + cr analyze call-graph + # 统计调用次数 + cr analyze count-calls + ``` + +**基础查询:** + +- `cr query ns [--deps]` - 列出项目中所有命名空间(--deps 包含依赖) +- `cr query ns ` - 读取命名空间详情(imports, 定义预览) +- `cr query defs ` - 列出命名空间中的定义 +- `cr query pkg` - 获取项目包名 +- `cr query config` - 读取项目配置(init_fn, reload_fn, version) +- `cr query error` - 读取 .calcit-error.cirru 错误堆栈文件 +- `cr query modules` - 列出项目模块 + +**渐进式代码探索(Progressive Disclosure):** + +- `cr query peek ` - 查看定义签名(参数、文档、表达式数量),不返回完整实现体 + - 输出:Doc、Form 类型、参数列表、Body 表达式数量、首个表达式预览、Examples 数量 + - 用于快速了解函数接口,减少 token 消耗 +- `cr query def [-j]` - 读取定义的完整 Cirru 代码 + - 默认输出:Doc、Examples 数量、Cirru 格式代码 + - `-j` / `--json`:同时输出 JSON 格式(用于程序化处理) + - 推荐:LLM 直接读取 Cirru 格式即可,通常不需要 JSON +- `cr query examples ` - 读取定义的示例代码 + - 输出:每个 example 的 Cirru 格式和 JSON 格式 + +**符号搜索与引用分析:** + +- `cr query find [--deps] [-f] [-n ]` - 跨命名空间搜索符号 + - 默认精确匹配:返回定义位置 + 所有引用位置(带上下文预览) + - `-f` / `--fuzzy`:模糊搜索,匹配 "namespace/definition" 格式的路径 + - `-n `:限制模糊搜索结果数量(默认 20) + - `--deps`:包含核心命名空间(calcit.\* 开头) +- `cr query usages [--deps]` - 查找定义的所有使用位置 + - 返回:引用该定义的所有位置(带上下文预览) + - 用于理解代码影响范围,重构前的影响分析 + +**代码模式搜索:** + +- `cr query search [-f ] [-l] [-d ] [-p ]` - 搜索叶子节点(字符串) + + - `` - 位置参数,要搜索的字符串模式 + - `-f` / `--filter` - 过滤到特定命名空间或定义(可选) + - `-l` / `--loose`:宽松匹配,包含模式(匹配所有包含该模式的叶子节点) + - `-d `:限制搜索深度(0 = 无限制) + - `-p` / `--start-path`:从指定路径开始搜索(逗号分隔的索引,如 `"3,2,1"`) + - 不指定时从根节点开始搜索整个定义 + - 指定后只搜索该路径下的子树,适合在大型定义中缩小搜索范围 + - 返回:匹配节点的完整路径 + 父级上下文预览 + - 示例: + - `cr query search "println" -f app.main/main -l` - 在 main 函数中搜索包含 "println" 的节点 + - `cr query search "div"` - 全局精确搜索 "div" + - `cr query search "btn" -f app.main/render -p "3,2" -l` - 从路径 [3,2] 开始搜索包含 "btn" 的节点 + +- `cr query search-pattern [-f ] [-l] [-j] [-d ]` - 搜索结构模式 + - `` - 位置参数,Cirru one-liner 或 JSON 数组模式 + - `-f` / `--filter` - 过滤到特定命名空间或定义(可选) + - `-l` / `--loose`:宽松匹配,查找包含连续子序列的结构 + - `-j` / `--json`:将模式解析为 JSON 数组而非 Cirru + - 返回:匹配节点的路径 + 父级上下文 + - 示例: + - `cr query search-pattern "(+ a b)" -f app.util/add` - 查找精确表达式 + - `cr query search-pattern '["defn"]' -f app.main/main -j -l` - 查找所有函数定义 + +**搜索结果格式:** + +- 输出格式:`[路径] in 父级上下文` +- 路径格式:`[索引1,索引2,...]` 表示从根节点到匹配节点的路径 +- 可配合 `cr tree show -p ""` 查看具体节点内容 + +### 文档子命令 (`cr docs`) + +查询 Calcit 语言文档(guidebook): + +- `cr docs search [-c ] [-f ]` - 按关键词搜索文档内容 + + - `-c ` - 显示匹配行的上下文行数(默认 5) + - `-f ` - 按文件名过滤搜索结果 + - 输出:匹配行及其上下文,带行号和高亮 + - 示例:`cr docs search "macro" -c 10` 或 `cr docs search "defn" -f macros.md` + +- `cr docs read [-s ] [-n ]` - 阅读指定文档 + + - `-s ` - 起始行号(默认 0) + - `-n ` - 读取行数(默认 80) + - 输出:文档内容、当前范围、是否有更多内容 + - 示例:`cr docs read macros.md` 或 `cr docs read intro.md -s 20 -n 30` + +- `cr docs list` - 列出所有可用文档 + +### Cirru 语法工具 (`cr cirru`) + +用于 Cirru 语法和 JSON 之间的转换: + +- `cr cirru parse ''` - 解析 Cirru 代码为 JSON +- `cr cirru format ''` - 格式化 JSON 为 Cirru 代码 +- `cr cirru parse-edn ''` - 解析 Cirru EDN 为 JSON +- `cr cirru show-guide` - 显示 Cirru 语法指南(帮助 LLM 生成正确的 Cirru 代码) + +**⚠️ 重要:生成 Cirru 代码前请先阅读语法指南** + +运行 `cr cirru show-guide` 获取完整的 Cirru 语法说明,包括: + +- `$` 操作符(单节点展开) +- `|` 前缀(字符串字面量), 这个是 Cirru 特殊的地方, 而不是直接用引号包裹 +- `,` 操作符(注释标记) +- `~` 和 `~@`(宏展开) +- 常见错误和避免方法 + +### 库管理 (`cr libs`) + +查询和了解 Calcit 官方库: + +- `cr libs` - 列出所有官方库 +- `cr libs search ` - 按关键词搜索库(搜索名称、描述、分类) +- `cr libs readme [-f ]` - 查看库的文档 + - 优先从本地 `~/.config/calcit/modules/` 读取 + - 本地不存在时从 GitHub 仓库获取 + - `-f` 参数可指定其他文档文件(如 `-f Skills.md`) + - 默认读取 `README.md` +- `cr libs scan-md ` - 扫描本地模块目录下的所有 `.md` 文件 + - 递归扫描子目录 + - 显示相对路径列表 +- `caps` - 安装/更新依赖 + +### 精细代码树操作 (`cr tree`) + +⚠️ **关键警告:路径索引动态变化** + +删除或插入节点后,同级后续节点的索引会自动改变。**必须从后往前操作**或**每次修改后重新搜索路径**。 + +**核心概念:** + +- 路径格式:逗号分隔的索引(如 `"3,2,1"`),空字符串 `""` 表示根节点 +- 每个命令都有 `--help` 查看详细参数 +- 命令执行后会显示 "Next steps" 提示下一步操作 + +**主要操作:** + +- `cr tree show -p "" [-j]` - 查看节点 + - 默认输出:节点类型、Cirru 预览、子节点索引列表、操作提示 + - `-j` / `--json`:同时输出 JSON 格式(用于程序化处理) + - 推荐:直接查看 Cirru 格式即可,通常不需要 JSON +- `cr tree replace` - 替换节点 +- `cr tree delete` - 删除节点 +- `cr tree insert-before/after` - 插入相邻节点 +- `cr tree insert-child/append-child` - 插入子节点 +- `cr tree swap-next/prev` - 交换相邻节点 +- `cr tree wrap` - 用新结构包装节点 + +**输入方式(通用):** + +- `-e ''` - 内联代码(自动识别 Cirru/JSON) +- `--leaf` - 强制作为 leaf 节点(符号或字符串) +- `-j ''` / `-f ` / `-s` (stdin) + +**推荐工作流:** + +```bash +# 1. 搜索定位 +cr query search "target" -f namespace/def -l + +# 2. 确认节点(命令会显示子节点和路径) +cr tree show namespace/def -p "" + +# 3. 执行修改(命令会显示 Before/After 和验证提示) +cr tree replace namespace/def -p "" --leaf -e '' + +# 4. 批量修改:从后往前或重新搜索 +cr tree delete namespace/def -p "3,2,3" # 先删大索引 +cr tree delete namespace/def -p "3,2,2" +``` + +**关键技巧:** + +- 使用 `cr query search` 快速定位路径 +- `cr tree show` 输出会标注每个子节点的索引 +- 遇到路径错误时,命令会自动显示最长有效路径和可用子节点 +- 所有修改操作都会显示 Preview 和 Verify 命令 + +详细参数和示例使用 `cr tree --help` 查看。 + +### 代码编辑 (`cr edit`) + +直接编辑 compact.cirru 项目代码,支持三种输入方式: + +- `--file ` 或 `-f ` - 从文件读取(默认 Cirru 格式,使用 `-J` 指定 JSON) +- `--json ` 或 `-j ` - 内联 JSON 字符串 +- `--stdin` 或 `-s` - 从标准输入读取(默认 Cirru 格式,使用 `-J` 指定 JSON) + +额外支持“内联代码”参数: + +- `--code ` 或 `-e `:直接在命令行里传入一段代码。 + - 默认按 **Cirru 单行表达式(one-liner)** 解析。 + - 如果输入“看起来像 JSON”(例如 `-e '"abc"'`,或 `-e '["a"]'` 这类 `[...]` 且包含 `"`),则会按 JSON 解析。 + - ⚠️ 当输入看起来像 JSON 但 JSON 不合法时,会直接报错(不会回退当成 Cirru one-liner)。 + +对 `--file/--stdin` 输入,还支持以下“格式开关”(与 `-J/--json-input` 类似): + +- `--leaf`:把输入当成 **leaf 节点**,直接使用 Cirru 符号或 `|text` 字符串,无需 JSON 引号。 + - 传入符号:`-e 'my-symbol'` + - 传入字符串:加 Cirru 字符串前缀 `|` 或 `"`,例如 `-e '|my string'` 或 `-e '"my string'` + +⚠️ 注意:这些开关彼此互斥(一次只用一个)。 + +**推荐简化规则(命令行更好写):** + +- **JSON(单行)**:优先用 `-j ''` 或 `-e ''`(不需要 `-J`)。 +- **Cirru 单行表达式**:用 `-e ''`(`-e` 默认按 one-liner 解析)。 +- **Cirru 多行缩进**:用 `-f file.cirru` 或 `-s`(stdin)。 +- `-J/--json-input` 主要用于 **file/stdin** 读入 JSON(如 `-f code.json -J` 或 `-s -J`)。 + +补充:`-e/--code` 只有在 `[...]` 内部包含 `"` 时才会自动按 JSON 解析(例如 `-e '["a"]'`)。 +像 `-e '[]'` / `-e '[ ]'` 会默认按 Cirru one-liner 处理;如果你需要“空 JSON 数组”,用显式 JSON:`-j '[]'`。 + +如果你想在命令行里明确“这段就是 JSON”,请用 `-j ''`(`-J` 是给 file/stdin 用的)。 + +**定义操作:** + +- `cr edit def ` - 添加新定义(若已存在会报错,需用 `cr tree replace` 修改) +- `cr edit rm-def ` - 删除定义 +- `cr edit doc ''` - 更新定义的文档 +- `cr edit examples ` - 设置定义的示例代码(批量替换) +- `cr edit add-example ` - 添加单个示例 +- `cr edit rm-example ` - 删除指定索引的示例(0-based) + +**命名空间操作:** + +- `cr edit add-ns ` - 添加命名空间 +- `cr edit rm-ns ` - 删除命名空间 +- `cr edit imports ` - 更新导入规则(全量替换) +- `cr edit add-import ` - 添加单个 import 规则 +- `cr edit rm-import ` - 移除指定来源的 import 规则 +- `cr edit ns-doc ''` - 更新命名空间文档 + +**模块和配置:** + +- `cr edit add-module ` - 添加模块依赖 +- `cr edit rm-module ` - 删除模块依赖 +- `cr edit config ` - 设置配置(key: init-fn, reload-fn, version) + +**增量变更导出:** + +- `cr edit inc` - 描述增量代码变更并导出到 `.compact-inc.cirru` + - `--added "namespace/definition"` - 标记新增的定义 + - `--changed "namespace/definition"` - 标记修改的定义 + - `--removed "namespace/definition"` - 标记删除的定义 + - `--added-ns "namespace"` - 标记新增的命名空间 + - `--removed-ns "namespace"` - 标记删除的命名空间 + - `--ns-updated "namespace"` - 标记命名空间导入变更 + - 配合 watcher 使用实现热更新(详见"开发调试"章节) + +使用 `--help` 参数了解详细的输入方式和参数选项。 + +--- + +## Calcit 语言基础 + +### Cirru 语法核心概念 + +**与其他 Lisp 的区别:** + +- **缩进语法**:用缩进代替括号(类似 Python/YAML),单行用空格分隔 +- **字符串前缀**:`|hello` 或 `"hello"` 表示字符串,`|` 前缀更简洁 +- **无方括号花括号**:只用圆括号概念(体现在 JSON 转换中),Cirru 文本层面无括号 + +**常见混淆点:** + +❌ **错误理解:** Calcit 字符串是 `"x"` → JSON 是 `"\"x\""` +✅ **正确理解:** Cirru `|x` → JSON `"x"`,Cirru `"x"` → JSON `"x"` + +**示例对照:** + +| Cirru 代码 | JSON 等价 | JavaScript 等价 | +| ---------------- | -------------------------------- | ------------------------ | +| `\|hello` | `"hello"` | `"hello"` | +| `"world"` | `"world"` | `"world"` | +| `\|a b c` | `"a b c"` | `"a b c"` | +| `fn (x) (+ x 1)` | `["fn", ["x"], ["+", "x", "1"]]` | `fn(x) { return x + 1 }` | + +### 数据结构:Tuple vs Vector + +Calcit 特有的两种序列类型: + +**Tuple (`::`)** - 不可变、用于模式匹配 + +```cirru +; 创建 tuple +:: :event/type data + +; 模式匹配 +tag-match event + (:event/click data) (handle-click data) + (:event/input text) (handle-input text) +``` + +**Vector (`[]`)** - 可变、用于列表操作 + +```cirru +; 创建 vector +[] item1 item2 item3 + +; DOM 列表 +div {} $ [] + button {} |Click + span {} |Text +``` + +**常见错误:** + +```cirru +; ❌ 错误:用 vector 传事件 +send-event! $ [] :clipboard/read text +; 报错:tag-match expected tuple + +; ✅ 正确:用 tuple +send-event! $ :: :clipboard/read text +``` + +### 其他易错点 + +比较容易犯的错误: + +- Calcit 中字符串通过前缀区分,`|` 和 `"` 开头表示字符串。`|x` 对应 JavaScript 字符串 `"x"`。产生 JSON 时注意不要重复包裹引号。 +- Calcit 采用 Cirru 缩进语法,可以理解成去掉跨行括号改用缩进的 Lisp 变种。用 `cr cirru parse` 和 `cr cirru format` 互相转化试验。 +- Calcit 跟 Clojure 在语义上比较像,但语法层面只用圆括号,不用方括号花括号。 + +--- + +## 开发调试 + +简单脚本用 `cr -1 ` 直接执行。编译 JavaScript 用 `cr -1 js` 执行一次编译。 + +Calcit snapshot 文件中 config 有 `init-fn` 和 `reload-fn` 配置: + +- 初次启动调用 `init-fn` +- 每次修改代码后调用 `reload-fn` + +**典型开发流程:** + +```bash +# 1. 检查代码正确性 +cr --check-only + +# 2. 执行程序(一次性) +cr -1 + +# 3. 编译 JavaScript(一次性) +cr -1 js + +# 4. 进入监听模式开发 +cr # 解释执行模式 +cr js # JS 编译模式 +``` + +### 增量触发更新(推荐)⭐⭐⭐ + +当使用监听模式(`cr` 或 `cr js`)开发时,推荐使用 `cr edit inc` 命令触发增量更新,而非全量重新编译/执行: + +**工作流程:** + +```bash +# 【终端 1】启动 watcher(监听模式) +cr # 或 cr js + +# 【终端 2】修改代码后触发增量更新 +# 修改定义 +cr edit def app.core/my-fn -e 'defn my-fn (x) (+ x 1)' + +# 触发增量更新 +cr edit inc --changed "app.core/my-fn" + +# 等待 ~300ms 后查看编译结果 +cr query error +``` + +**增量更新命令参数:** + +```bash +# 新增定义 +cr edit inc --added "namespace/definition" + +# 修改定义 +cr edit inc --changed "namespace/definition" + +# 删除定义 +cr edit inc --removed "namespace/definition" + +# 新增命名空间 +cr edit inc --added-ns "namespace" + +# 删除命名空间 +cr edit inc --removed-ns "namespace" + +# 更新命名空间导入 +cr edit inc --ns-updated "namespace" + +# 组合使用(批量更新) +cr edit inc \ + --changed "app.core/add" \ + --changed "app.core/multiply" \ + --removed "app.core/old-fn" +``` + +**查看编译结果:** + +```bash +cr query error # 命令会显示详细的错误信息或成功状态 +``` + +**何时使用全量操作:** + +```bash +# 大量修改或需要完全刷新时 +cr --check-only # 快速语法检查 +cr -1 # 重新执行程序 +cr -1 js # 重新编译 JavaScript + +# 或重启监听模式 +# Ctrl+C 停止 watcher,然后重新运行: +cr # 或 cr js +``` + +**增量更新优势:** 快速反馈、精确控制变更范围、watcher 保持运行状态 + +--- + +## 文档支持 + +遇到疑问时使用: + +- `cr docs search ` - 搜索 Calcit 教程内容 +- `cr docs read ` - 阅读完整文档 +- `cr docs list` - 查看所有可用文档 +- `cr query ns ` - 查看命名空间说明和函数文档 +- `cr query peek ` - 快速查看定义签名 +- `cr query def ` - 读取完整语法树 +- `cr query examples ` - 查看示例代码 +- `cr query find ` - 跨命名空间搜索符号 +- `cr query usages ` - 查找定义的使用位置 +- `cr query search -p ` - 搜索叶子节点 +- `cr query search-pattern -p ` - 搜索结构模式 +- `cr query error` - 查看最近的错误堆栈 + +--- + +## 代码修改示例 + +**添加新函数:** + +````bash +# Cirru one liner +cr edit def app.core/multiply -e 'defn multiply (x y) (* x y)' +# 基本操作:** + +```bash +# 添加新函数(命令会提示 Next steps) +cr edit def 'app.core/multiply' -e 'defn multiply (x y) (* x y)' + +# 替换整个定义(-p "" 表示根路径) +cr tree replace 'app.core/multiply' -p "" -e 'defn multiply (x y z) (* x y z)' + +# 更新文档和示例 +cr edit doc 'app.core/multiply' '乘法函数,返回两个数的积' +cr edit add-example 'app.core/multiply' -e 'multiply 5 6' +```` + +**修改定义工作流(命令会显示子节点索引和 Next steps):** + +```bash +# 1. 搜索定位 +cr query search '' -f 'ns/def' -l + +# 2. 查看节点(输出会显示索引和操作提示) +cr tree show 'ns/def' -p "" + +# 3. 执行替换(会显示 diff 和验证命令) +cr tree replace 'ns/def' -p "" --leaf -e '' + +# 4. 检查结果 +cr query error +# 添加命名空间 +cr edit add-ns app.util + +# 添加导入规则 +cr edit add-import app.main -e 'app.util :refer $ helper' + +# 移除导入规则 +cr edit rm-import app.main app.util + +# 更新项目配置 +cr edit config init-fn app.main/main! +``` + +**更新命名空间导入(全量替换):** + +```bash +cr edit imports app.main -j '[["app.lib", ":as", "lib"], ["app.util", ":refer", ["helper"]]]' +``` + +--- + +## ⚠️ 常见陷阱和最佳实践 + +### 1. 路径索引动态变化问题 ⭐⭐⭐ + +**核心原则:** 删除/插入会改变同级后续节点索引。 + +**批量修改策略:** + +- **从后往前操作**(推荐):先删大索引,再删小索引 +- **单次操作后重新搜索**:每次修改立即用 `cr query search` 更新路径 +- **整体重写**:用 `cr tree replace -p ""` 替换整个定义 + +命令会在路径错误时提示最长有效路径和可用子节点。 + +### 2. 输入格式参数使用速查 ⭐⭐⭐ + +**参数混淆矩阵(已全面支持 `-e` 自动识别):** + +| 场景 | 示例用法 | 解析结果 | 说明 | +| ------------------- | -------------------------------------- | ----------------------------- | --------------------------------- | +| **表达式 (Cirru)** | `-e 'defn add (a b) (+ a b)'` | `["defn", "add", ...]` (List) | 默认按 Cirru one-liner 解析 | +| **原子符号 (Leaf)** | `--leaf -e 'my-symbol'` | `"my-symbol"` (Leaf) | **推荐**,避免被包装成 list | +| **字符串 (Leaf)** | `--leaf -e '\|hello world'` | `"hello world"` (Leaf) | 符号前缀 `\|` 表示字符串 | +| **JSON 数组** | `-e '["+", "x", "1"]'` | `["+", "x", "1"]` (List) | **自动识别** (含 `[` 且有 `"`) | +| **JSON 字符串** | `-e '"my leaf"'` | `"my leaf"` (Leaf) | **自动识别** (含引用的字符串) | +| **内联 JSON** | `-j '["defn", ...]'` | `["defn", ...]` (List) | 显式按 JSON 解析,忽略 Cirru 规则 | +| **外部文件** | `-f code.cirru` (或 `-f code.json -J`) | 根据文件内容解析 | `-J` 用于标记文件内是 JSON | + +**核心规则:** + +1. **智能识别模式**:`-e / --code` 现在会自动识别 JSON。如果你传入 `["a"]` 或 `"a"`,它会直接按 JSON 处理,无需再额外加 `-J` 或 `-j`。 +2. **强制 Leaf 模式**:如果你需要确保输入是一个叶子节点(符号或字符串),请在任何地方使用 `--leaf` 开关。它会将原始输入直接作为内容,不经过任何解析。 +3. **显式 JSON 模式**:如果你想明确告诉工具“这段就是 JSON”,优先用 `-j ''`。 +4. **统一性**:`cr tree` 和 `cr edit` 的所有子命令(replace, def, insert 等)现在共享完全相同的输入解析逻辑。 + +**实战示例:** + +```bash +# ✅ 替换表达式 +cr tree replace app.main/fn -p "2" -e 'println |hello' + +# ✅ 替换 leaf(推荐 --leaf) +cr tree replace app.main/fn -p "2,0" --leaf -e 'new-symbol' + +# ✅ 替换字符串 leaf +cr tree replace app.main/fn -p "2,1" --leaf -e '|new text' + +# ❌ 避免:用 -e 传单个 token(会变成 list) +cr tree replace app.main/fn -p "2,0" -e 'symbol' # 结果:["symbol"] +``` + +### 3. Cirru 字符串和数据类型 ⭐⭐ + +**Cirru 字符串前缀:** + +| Cirru 写法 | JSON 等价 | 使用场景 | +| -------------- | -------------- | ------------ | +| `\|hello` | `"hello"` | 推荐,简洁 | +| `"hello"` | `"hello"` | 也可以 | +| `\|a b c` | `"a b c"` | 包含空格 | +| `\|[tag] text` | `"[tag] text"` | 包含特殊字符 | + +**Tuple vs Vector:** + +```cirru +; ✅ Tuple - 用于事件、模式匹配 +:: :clipboard/read text + +; ✅ Vector - 用于 DOM 列表 +[] (button) (div) + +; ❌ 错误:用 vector 传事件 +send-to-component! $ [] :clipboard/read text +; 报错:tag-match expected tuple + +; ✅ 正确:用 tuple +send-to-component! $ :: :clipboard/read text +``` + +**记忆规则:** + +- **`::` (tuple)**: 事件、模式匹配、不可变数据结构 +- **`[]` (vector)**: DOM 元素列表、动态集合 + +### 4. 推荐工作流程 + +**基本流程(命令会显示子节点索引、Next steps、批量重命名提示):** + +```bash +# 1. 搜索定位 +cr query search '' -f 'ns/def' -l + +# 2. 查看节点(会显示索引和操作提示) +cr tree show 'ns/def' -p "" + +# 3. 执行修改(会显示 diff 和验证命令) +cr tree replace 'ns/def' -p "" --leaf -e '' + +# 4. 验证 +cr query error +``` + +**批量修改提示:** 命令会自动检测多匹配场景,显示从大到小的路径排序和重要警告。 + +--- + +## 常见错误排查 + +| 错误信息 | 原因 | 解决方法 | +| ---------------------------- | ----------------------- | --------------------------------- | +| `Path index X out of bounds` | 路径已过期 | 重新运行 `cr query search` | +| `tag-match expected tuple` | 传入 vector 而非 tuple | 改用 `::` | +| 字符串被拆分 | 没有用 `\|` 或 `"` 包裹 | 使用 `\|complete string` | +| `unexpected format` | 语法错误 | 用 `cr cirru parse ''` 验证 | + +**调试命令:** `cr query error`(会显示详细提示)、`cr --check-only` + +--- + +Also read `llms/Respo.md` for UI framework usages. diff --git a/calcit.cirru b/calcit.cirru index f8fb6b2..27550e8 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -7,171 +7,172 @@ |app.comp.container $ %{} :FileEntry :defs $ {} |comp-container $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |defcomp) - |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |comp-container) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |defcomp) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |comp-container) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1507461830530) (:by |root) (:text |reel) - |v $ %{} :Expr (:at 1507461832154) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |reel) + |Z $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1507461833421) (:by |root) (:text |let) - |L $ %{} :Expr (:at 1507461834351) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |let) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Expr (:at 1507461834650) (:by |root) + |T $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1507461835738) (:by |root) (:text |store) - |j $ %{} :Expr (:at 1507461836110) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |store) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1507461837276) (:by |root) (:text |:store) - |j $ %{} :Leaf (:at 1507461838285) (:by |root) (:text |reel) - |j $ %{} :Expr (:at 1509727104820) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:store) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |reel) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1509727105928) (:by |root) (:text |states) - |j $ %{} :Expr (:at 1509727106316) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |states) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1509727107223) (:by |root) (:text |:states) - |j $ %{} :Leaf (:at 1626777497473) (:by |rJG4IHzWf) (:text |store) - |n $ %{} :Expr (:at 1584780921790) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:states) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |store) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1584780923771) (:by |rJG4IHzWf) (:text |cursor) - |j $ %{} :Expr (:at 1584780991636) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |cursor) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1627849325504) (:by |rJG4IHzWf) (:text |or) - |T $ %{} :Expr (:at 1584780923944) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |or) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1584780925829) (:by |rJG4IHzWf) (:text |:cursor) - |j $ %{} :Leaf (:at 1584780926681) (:by |rJG4IHzWf) (:text |states) - |b $ %{} :Expr (:at 1679237728653) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:cursor) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |states) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1679237728821) (:by |rJG4IHzWf) (:text |[]) - |r $ %{} :Expr (:at 1584780887905) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |[]) + |Z $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1584780889620) (:by |rJG4IHzWf) (:text |state) - |j $ %{} :Expr (:at 1584780889933) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |state) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1627849327831) (:by |rJG4IHzWf) (:text |or) - |j $ %{} :Expr (:at 1584780894090) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |or) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1584780894689) (:by |rJG4IHzWf) (:text |:data) - |j $ %{} :Leaf (:at 1584780900314) (:by |rJG4IHzWf) (:text |states) - |r $ %{} :Expr (:at 1584780901014) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:data) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |states) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1584780901408) (:by |rJG4IHzWf) (:text |{}) - |j $ %{} :Expr (:at 1584780901741) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1584780906050) (:by |rJG4IHzWf) (:text |:content) - |j $ %{} :Leaf (:at 1584780907617) (:by |rJG4IHzWf) (:text "|\"") - |t $ %{} :Expr (:at 1698254207291) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:content) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"") + |b $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254209331) (:by |rJG4IHzWf) (:text |images-list) - |b $ %{} :Expr (:at 1698254209730) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |images-list) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254219686) (:by |rJG4IHzWf) (:text |load-cirru-data) - |T $ %{} :Expr (:at 1499755354983) (:by nil) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |load-cirru-data) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |div) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |div) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |{}) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1695659805533) (:by |rJG4IHzWf) (:text |:class-name) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:class-name) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1695659808341) (:by |rJG4IHzWf) (:text |str-spaced) - |j $ %{} :Leaf (:at 1695659810151) (:by |rJG4IHzWf) (:text |css/global) - |m $ %{} :Expr (:at 1698256602913) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |str-spaced) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |css/global) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256603399) (:by |rJG4IHzWf) (:text |div) - |b $ %{} :Expr (:at 1698256603655) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |div) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256603978) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1698256616179) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256620674) (:by |rJG4IHzWf) (:text |:class-name) - |b $ %{} :Expr (:at 1698256647889) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:class-name) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1698256649547) (:by |rJG4IHzWf) (:text |str-spaced) - |T $ %{} :Leaf (:at 1698256622707) (:by |rJG4IHzWf) (:text |style-title) - |b $ %{} :Leaf (:at 1698256652743) (:by |rJG4IHzWf) (:text |css/font-fancy) - |h $ %{} :Expr (:at 1698256606257) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698256606585) (:by |rJG4IHzWf) (:text |<>) - |b $ %{} :Leaf (:at 1698256612611) (:by |rJG4IHzWf) (:text "|\"Wallpapers") - |q $ %{} :Expr (:at 1698254620051) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |str-spaced) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |style-title) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |css/font-fancy) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |<>) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "||WebGPU Art") + |Z $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1698254621734) (:by |rJG4IHzWf) (:text |list->) - |L $ %{} :Expr (:at 1698254622043) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |list->) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254622283) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1698255020070) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698255022340) (:by |rJG4IHzWf) (:text |:class-name) - |b $ %{} :Expr (:at 1698255686374) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:class-name) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1698255688390) (:by |rJG4IHzWf) (:text |str-spaced) - |T $ %{} :Leaf (:at 1698255028554) (:by |rJG4IHzWf) (:text |css/row) - |b $ %{} :Leaf (:at 1698255694615) (:by |rJG4IHzWf) (:text |style-list) - |h $ %{} :Expr (:at 1698255031822) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |str-spaced) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |css/row) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |style-list) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698255032722) (:by |rJG4IHzWf) (:text |:style) - |b $ %{} :Expr (:at 1698255032962) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:style) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698255033277) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1698255033495) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698255035927) (:by |rJG4IHzWf) (:text |:flex-wrap) - |b $ %{} :Leaf (:at 1698255036988) (:by |rJG4IHzWf) (:text |:wrap) - |h $ %{} :Expr (:at 1698256018731) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:flex-wrap) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:wrap) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256021223) (:by |rJG4IHzWf) (:text |:margin) - |b $ %{} :Leaf (:at 1698256030950) (:by |rJG4IHzWf) (:text "|\"40px") - |T $ %{} :Expr (:at 1698254615800) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254616563) (:by |rJG4IHzWf) (:text |->) - |b $ %{} :Leaf (:at 1698254617545) (:by |rJG4IHzWf) (:text |images-list) - |e $ %{} :Leaf (:at 1711383985899) (:by |rJG4IHzWf) (:text |.reverse) - |h $ %{} :Expr (:at 1698254626576) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:margin) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"40px") + |X $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |->) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |images-list) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |.reverse) + |Z $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254637114) (:by |rJG4IHzWf) (:text |map-indexed) - |b $ %{} :Expr (:at 1698254627549) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |map-indexed) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254627841) (:by |rJG4IHzWf) (:text |fn) - |b $ %{} :Expr (:at 1698254628123) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |fn) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1698254644265) (:by |rJG4IHzWf) (:text |idx) - |T $ %{} :Leaf (:at 1698254631407) (:by |rJG4IHzWf) (:text |info) - |h $ %{} :Expr (:at 1698254644764) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |idx) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |info) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254645059) (:by |rJG4IHzWf) (:text |[]) - |b $ %{} :Leaf (:at 1698254645769) (:by |rJG4IHzWf) (:text |idx) - |h $ %{} :Expr (:at 1698254664101) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |[]) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |idx) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254667213) (:by |rJG4IHzWf) (:text |comp-image-card) - |b $ %{} :Leaf (:at 1698254669740) (:by |rJG4IHzWf) (:text |info) - |t $ %{} :Expr (:at 1698256712963) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |comp-image-card) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |info) + |b $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256714122) (:by |rJG4IHzWf) (:text |=<) - |X $ %{} :Leaf (:at 1698256717145) (:by |rJG4IHzWf) (:text |nil) - |b $ %{} :Leaf (:at 1698256723319) (:by |rJG4IHzWf) (:text |120) - |x $ %{} :Expr (:at 1521954055333) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |=<) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |nil) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |120) + |d $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1521954057510) (:by |root) (:text |when) - |L $ %{} :Leaf (:at 1521954059290) (:by |root) (:text |dev?) - |T $ %{} :Expr (:at 1507461809635) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |when) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |dev?) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1507461815046) (:by |root) (:text |comp-reel) - |b $ %{} :Expr (:at 1584780610581) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |comp-reel) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1584780611347) (:by |rJG4IHzWf) (:text |>>) - |T $ %{} :Leaf (:at 1509727101297) (:by |root) (:text |states) - |j $ %{} :Leaf (:at 1584780613268) (:by |rJG4IHzWf) (:text |:reel) - |j $ %{} :Leaf (:at 1507461840459) (:by |root) (:text |reel) - |r $ %{} :Expr (:at 1507461840980) (:by |root) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |>>) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |states) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:reel) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |reel) + |Z $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1507461841342) (:by |root) (:text |{}) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + :examples $ [] |comp-image-card $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1698254670712) (:by |rJG4IHzWf) :data $ {} @@ -295,6 +296,7 @@ :data $ {} |T $ %{} :Leaf (:at 1698255590268) (:by |rJG4IHzWf) (:text |:class-name) |b $ %{} :Leaf (:at 1698255591582) (:by |rJG4IHzWf) (:text |css/link) + :examples $ [] |load-cirru-data $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1698254226425) (:by |rJG4IHzWf) :data $ {} @@ -312,119 +314,100 @@ :data $ {} |T $ %{} :Leaf (:at 1698254235222) (:by |rJG4IHzWf) (:text |read-file) |b $ %{} :Leaf (:at 1698254277495) (:by |rJG4IHzWf) (:text "|\"content/images.cirru") + :examples $ [] |style-image-card $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1698254686394) (:by |rJG4IHzWf) + :code $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254687408) (:by |rJG4IHzWf) (:text |defstyle) - |b $ %{} :Leaf (:at 1698254686394) (:by |rJG4IHzWf) (:text |style-image-card) - |h $ %{} :Expr (:at 1698254686394) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |defstyle) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |style-image-card) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254688589) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1698254688963) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254693690) (:by |rJG4IHzWf) (:text "|\"&") - |b $ %{} :Expr (:at 1698254984587) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"&") + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |D $ %{} :Leaf (:at 1698254985851) (:by |rJG4IHzWf) (:text |let) - |L $ %{} :Expr (:at 1698254986101) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Expr (:at 1698254986245) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254991379) (:by |rJG4IHzWf) (:text |w) - |b $ %{} :Leaf (:at 1698254993554) (:by |rJG4IHzWf) (:text |480) - |b $ %{} :Expr (:at 1698254994645) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254995226) (:by |rJG4IHzWf) (:text |h) - |b $ %{} :Expr (:at 1698255005191) (:by |rJG4IHzWf) - :data $ {} - |D $ %{} :Leaf (:at 1698255005949) (:by |rJG4IHzWf) (:text |*) - |L $ %{} :Leaf (:at 1698255006971) (:by |rJG4IHzWf) (:text |9) - |T $ %{} :Expr (:at 1698254996289) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254996462) (:by |rJG4IHzWf) (:text |/) - |b $ %{} :Leaf (:at 1698254999148) (:by |rJG4IHzWf) (:text |w) - |h $ %{} :Leaf (:at 1698255004425) (:by |rJG4IHzWf) (:text |16) - |T $ %{} :Expr (:at 1698254694648) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:width) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |480) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698254694985) (:by |rJG4IHzWf) (:text |{}) - |h $ %{} :Expr (:at 1698254817769) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254818759) (:by |rJG4IHzWf) (:text |:width) - |b $ %{} :Leaf (:at 1698255010755) (:by |rJG4IHzWf) (:text |w) - |i $ %{} :Expr (:at 1698254884997) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254890049) (:by |rJG4IHzWf) (:text |:background-position) - |b $ %{} :Leaf (:at 1698254891093) (:by |rJG4IHzWf) (:text "|\"center") - |j $ %{} :Expr (:at 1698254869401) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254875715) (:by |rJG4IHzWf) (:text |:background-size) - |b $ %{} :Leaf (:at 1698256148571) (:by |rJG4IHzWf) (:text "|\"480px") - |l $ %{} :Expr (:at 1698254822114) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698254824619) (:by |rJG4IHzWf) (:text |:height) - |b $ %{} :Leaf (:at 1698255011855) (:by |rJG4IHzWf) (:text |h) - |o $ %{} :Expr (:at 1698255097285) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698255098661) (:by |rJG4IHzWf) (:text |:position) - |b $ %{} :Leaf (:at 1698255101109) (:by |rJG4IHzWf) (:text |:relative) - |q $ %{} :Expr (:at 1698256039629) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698256042062) (:by |rJG4IHzWf) (:text |:border-radius) - |b $ %{} :Leaf (:at 1698256047729) (:by |rJG4IHzWf) (:text "|\"8px") - |s $ %{} :Expr (:at 1698256100256) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698256100256) (:by |rJG4IHzWf) (:text |:cursor) - |b $ %{} :Leaf (:at 1698256100256) (:by |rJG4IHzWf) (:text |:pointer) - |t $ %{} :Expr (:at 1698256171035) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698256176295) (:by |rJG4IHzWf) (:text |:transition-duration) - |b $ %{} :Leaf (:at 1698256191219) (:by |rJG4IHzWf) (:text "|\"400ms") - |u $ %{} :Expr (:at 1698256369252) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:background-position) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"center") + |Z $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:background-size) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"480px") + |b $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:height) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |270) + |d $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:position) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:relative) + |f $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:border-radius) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"8px") + |h $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:cursor) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:pointer) + |j $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:transition-duration) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"400ms") + |l $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:box-shadow) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256373269) (:by |rJG4IHzWf) (:text |:box-shadow) - |b $ %{} :Expr (:at 1698256375270) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |str) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"0 0 4px ") + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256377044) (:by |rJG4IHzWf) (:text |str) - |b $ %{} :Leaf (:at 1698256398134) (:by |rJG4IHzWf) (:text "|\"0 0 4px ") - |h $ %{} :Expr (:at 1698256381188) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698256381552) (:by |rJG4IHzWf) (:text |hsl) - |b $ %{} :Leaf (:at 1698256381835) (:by |rJG4IHzWf) (:text |0) - |h $ %{} :Leaf (:at 1698256383048) (:by |rJG4IHzWf) (:text |0) - |l $ %{} :Leaf (:at 1698256383700) (:by |rJG4IHzWf) (:text |100) - |o $ %{} :Leaf (:at 1698256395047) (:by |rJG4IHzWf) (:text |0.4) - |v $ %{} :Expr (:at 1698257672285) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1698257674644) (:by |rJG4IHzWf) (:text |:max-width) - |b $ %{} :Leaf (:at 1698257695734) (:by |rJG4IHzWf) (:text "|\"calc(90vw - 40px)") - |w $ %{} :Expr (:at 1699119088409) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1699119120647) (:by |rJG4IHzWf) (:text |:justify-self) - |b $ %{} :Leaf (:at 1699119091751) (:by |rJG4IHzWf) (:text |:center) - |h $ %{} :Expr (:at 1698256152253) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |hsl) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |0) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |0) + |Z $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |100) + |b $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |0.4) + |n $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:max-width) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"calc(90vw - 40px)") + |p $ %{} :Expr (:at 1768022046126) (:by |sync) + :data $ {} + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:justify-self) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:center) + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256155651) (:by |rJG4IHzWf) (:text "|\"&:hover") - |b $ %{} :Expr (:at 1698256155923) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"&:hover") + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256157109) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1698256160973) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |{}) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256160973) (:by |rJG4IHzWf) (:text |:background-size) - |b $ %{} :Leaf (:at 1698256187460) (:by |rJG4IHzWf) (:text "|\"520px") - |l $ %{} :Expr (:at 1698256401809) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:background-size) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"520px") + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256401809) (:by |rJG4IHzWf) (:text |:box-shadow) - |b $ %{} :Expr (:at 1698256401809) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |:box-shadow) + |V $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256401809) (:by |rJG4IHzWf) (:text |str) - |b $ %{} :Leaf (:at 1698257664160) (:by |rJG4IHzWf) (:text "|\"0 0 4px ") - |h $ %{} :Expr (:at 1698256401809) (:by |rJG4IHzWf) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |str) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text "|\"0 0 4px ") + |X $ %{} :Expr (:at 1768022046126) (:by |sync) :data $ {} - |T $ %{} :Leaf (:at 1698256401809) (:by |rJG4IHzWf) (:text |hsl) - |b $ %{} :Leaf (:at 1698256401809) (:by |rJG4IHzWf) (:text |0) - |h $ %{} :Leaf (:at 1698256401809) (:by |rJG4IHzWf) (:text |0) - |l $ %{} :Leaf (:at 1698256401809) (:by |rJG4IHzWf) (:text |100) - |o $ %{} :Leaf (:at 1698256418329) (:by |rJG4IHzWf) (:text |0.8) + |T $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |hsl) + |V $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |0) + |X $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |0) + |Z $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |100) + |b $ %{} :Leaf (:at 1768022046126) (:by |sync) (:text |0.8) + :examples $ [] |style-image-info $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1698255111853) (:by |rJG4IHzWf) :data $ {} @@ -517,6 +500,7 @@ |D $ %{} :Leaf (:at 1698256916218) (:by |rJG4IHzWf) (:text |;) |T $ %{} :Leaf (:at 1698256220518) (:by |rJG4IHzWf) (:text |:transition-delay) |b $ %{} :Leaf (:at 1698256826757) (:by |rJG4IHzWf) (:text "|\"200ms") + :examples $ [] |style-list $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1698255694809) (:by |rJG4IHzWf) :data $ {} @@ -543,6 +527,7 @@ :data $ {} |T $ %{} :Leaf (:at 1698255721996) (:by |rJG4IHzWf) (:text |:gap) |b $ %{} :Leaf (:at 1698255725276) (:by |rJG4IHzWf) (:text "|\"12px") + :examples $ [] |style-title $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1698256623076) (:by |rJG4IHzWf) :data $ {} @@ -607,15 +592,16 @@ |h $ %{} :Leaf (:at 1699119332650) (:by |rJG4IHzWf) (:text |0) |l $ %{} :Leaf (:at 1699119332650) (:by |rJG4IHzWf) (:text |100) |o $ %{} :Leaf (:at 1699119485631) (:by |rJG4IHzWf) (:text |0.5) + :examples $ [] :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |ns) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |app.comp.container) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:require) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1695659797743) (:by |rJG4IHzWf) (:text |respo-ui.css) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:as) @@ -634,11 +620,11 @@ |h $ %{} :Expr (:at 1695659848197) (:by |rJG4IHzWf) :data $ {} |T $ %{} :Leaf (:at 1695659850247) (:by |rJG4IHzWf) (:text |defstyle) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1540958704705) (:by |root) (:text |respo.core) |r $ %{} :Leaf (:at 1508946162679) (:by |root) (:text |:refer) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |defcomp) |l $ %{} :Leaf (:at 1573355389740) (:by |rJG4IHzWf) (:text |defeffect) @@ -651,11 +637,11 @@ |y $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |span) |yT $ %{} :Leaf (:at 1552321107012) (:by |rJG4IHzWf) (:text |input) |z $ %{} :Leaf (:at 1698255594472) (:by |rJG4IHzWf) (:text |a) - |x $ %{} :Expr (:at 1499755354983) (:by nil) + |x $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |respo.comp.space) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:refer) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |=<) |y $ %{} :Expr (:at 1507461845717) (:by |root) @@ -672,6 +658,7 @@ |v $ %{} :Expr (:at 1521954065004) (:by |root) :data $ {} |j $ %{} :Leaf (:at 1521954067604) (:by |root) (:text |dev?) + :examples $ [] |app.config $ %{} :FileEntry :defs $ {} |dev? $ %{} :CodeEntry (:doc |) @@ -688,6 +675,7 @@ |D $ %{} :Leaf (:at 1624469706777) (:by |rJG4IHzWf) (:text |get-env) |T $ %{} :Leaf (:at 1624469708397) (:by |rJG4IHzWf) (:text "|\"mode") |b $ %{} :Leaf (:at 1658121345573) (:by |rJG4IHzWf) (:text "|\"release") + :examples $ [] |site $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1545933382603) (:by |root) :data $ {} @@ -700,15 +688,17 @@ :data $ {} |T $ %{} :Leaf (:at 1544956719115) (:by |rJG4IHzWf) (:text |:storage-key) |j $ %{} :Leaf (:at 1544956719115) (:by |rJG4IHzWf) (:text "|\"workflow") + :examples $ [] :ns $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1527788237503) (:by |root) :data $ {} |T $ %{} :Leaf (:at 1527788237503) (:by |root) (:text |ns) |j $ %{} :Leaf (:at 1527788237503) (:by |root) (:text |app.config) + :examples $ [] |app.main $ %{} :FileEntry :defs $ {} |*reel $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1610792986987) (:by |rJG4IHzWf) (:text |defatom) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |*reel) @@ -726,12 +716,13 @@ |T $ %{} :Leaf (:at 1507399781682) (:by |root) (:text |assoc) |j $ %{} :Leaf (:at 1507399793097) (:by |root) (:text |:store) |r $ %{} :Leaf (:at 1507399787471) (:by |root) (:text |schema/store) + :examples $ [] |dispatch! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |defn) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |dispatch!) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |op) |t $ %{} :Expr (:at 1547437686766) (:by |root) @@ -761,12 +752,13 @@ |j $ %{} :Leaf (:at 1507399888500) (:by |root) (:text |updater) |r $ %{} :Leaf (:at 1507399891576) (:by |root) (:text |@*reel) |v $ %{} :Leaf (:at 1507399892687) (:by |root) (:text |op) + :examples $ [] |main! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |defn) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |main!) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |t $ %{} :Expr (:at 1544874433785) (:by |rJG4IHzWf) :data $ {} @@ -785,22 +777,22 @@ |r $ %{} :Expr (:at 1636914352112) (:by |rJG4IHzWf) :data $ {} |T $ %{} :Leaf (:at 1636914358071) (:by |rJG4IHzWf) (:text |load-console-formatter!) - |x $ %{} :Expr (:at 1499755354983) (:by nil) + |x $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |render-app!) - |y $ %{} :Expr (:at 1499755354983) (:by nil) + |y $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |add-watch) |j $ %{} :Leaf (:at 1507399915531) (:by |root) (:text |*reel) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:changes) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |fn) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |j $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1612280609284) (:by |rJG4IHzWf) (:text |reel) |j $ %{} :Leaf (:at 1612280610651) (:by |rJG4IHzWf) (:text |prev) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |render-app!) |yD $ %{} :Expr (:at 1507461684494) (:by |root) @@ -881,19 +873,21 @@ :data $ {} |T $ %{} :Leaf (:at 1688397811073) (:by |rJG4IHzWf) (:text |parse-cirru-edn) |b $ %{} :Leaf (:at 1688397811073) (:by |rJG4IHzWf) (:text |raw) - |yT $ %{} :Expr (:at 1499755354983) (:by nil) + |yT $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |println) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text "||App started.") + :examples $ [] |mount-target $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |def) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |mount-target) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1695659910770) (:by |rJG4IHzWf) (:text |js/document.querySelector) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text ||.app) + :examples $ [] |persist-storage! $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1533919515671) (:by |rJG4IHzWf) :data $ {} @@ -926,6 +920,7 @@ :data $ {} |T $ %{} :Leaf (:at 1533919515671) (:by |rJG4IHzWf) (:text |:store) |j $ %{} :Leaf (:at 1533919515671) (:by |rJG4IHzWf) (:text |@*reel) + :examples $ [] |reload! $ %{} :CodeEntry (:doc |) :code $ %{} :Expr (:at 1626201152815) (:by |rJG4IHzWf) :data $ {} @@ -986,53 +981,55 @@ |T $ %{} :Leaf (:at 1626290831868) (:by |rJG4IHzWf) (:text |hud!) |b $ %{} :Leaf (:at 1626290930377) (:by |rJG4IHzWf) (:text "|\"error") |j $ %{} :Leaf (:at 1626201209903) (:by |rJG4IHzWf) (:text |build-errors) + :examples $ [] |render-app! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |defn) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |render-app!) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1624469436438) (:by |rJG4IHzWf) (:text |render!) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |mount-target) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |comp-container) |j $ %{} :Leaf (:at 1507400119272) (:by |root) (:text |@*reel) |v $ %{} :Leaf (:at 1623915174985) (:by |rJG4IHzWf) (:text |dispatch!) + :examples $ [] :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |ns) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |app.main) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:require) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |j $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |respo.core) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:refer) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |render!) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |clear-cache!) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |app.comp.container) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:refer) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |comp-container) - |y $ %{} :Expr (:at 1499755354983) (:by nil) + |y $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1508556737455) (:by |root) (:text |app.updater) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:refer) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |updater) - |yT $ %{} :Expr (:at 1499755354983) (:by nil) + |yT $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |app.schema) |r $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:as) @@ -1072,20 +1069,21 @@ |T $ %{} :Leaf (:at 1626290810913) (:by |rJG4IHzWf) (:text "|\"bottom-tip") |j $ %{} :Leaf (:at 1626290816153) (:by |rJG4IHzWf) (:text |:default) |r $ %{} :Leaf (:at 1626290825711) (:by |rJG4IHzWf) (:text |hud!) + :examples $ [] |app.schema $ %{} :FileEntry :defs $ {} |store $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |def) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |store) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |{}) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |j $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |:states) - |j $ %{} :Expr (:at 1499755354983) (:by nil) + |j $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |{}) |j $ %{} :Expr (:at 1584781004285) (:by |rJG4IHzWf) @@ -1094,25 +1092,27 @@ |j $ %{} :Expr (:at 1584781007287) (:by |rJG4IHzWf) :data $ {} |T $ %{} :Leaf (:at 1584781007486) (:by |rJG4IHzWf) (:text |[]) + :examples $ [] :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |ns) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |app.schema) + :examples $ [] |app.updater $ %{} :FileEntry :defs $ {} |updater $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |defn) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |updater) - |r $ %{} :Expr (:at 1499755354983) (:by nil) + |r $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |store) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |op) |v $ %{} :Leaf (:at 1519489491135) (:by |root) (:text |op-id) |x $ %{} :Leaf (:at 1519489492110) (:by |root) (:text |op-time) - |v $ %{} :Expr (:at 1499755354983) (:by nil) + |v $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1688397777636) (:by |rJG4IHzWf) (:text |tag-match) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |op) @@ -1148,8 +1148,9 @@ |b $ %{} :Leaf (:at 1688397780408) (:by |rJG4IHzWf) (:text "|\"unknown op:") |h $ %{} :Leaf (:at 1688397780408) (:by |rJG4IHzWf) (:text |op) |h $ %{} :Leaf (:at 1688397780408) (:by |rJG4IHzWf) (:text |store) + :examples $ [] :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1499755354983) (:by nil) + :code $ %{} :Expr (:at 1499755354983) (:by |) :data $ {} |T $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |ns) |j $ %{} :Leaf (:at 1499755354983) (:by |root) (:text |app.updater) @@ -1163,6 +1164,7 @@ |v $ %{} :Expr (:at 1584874621524) (:by |rJG4IHzWf) :data $ {} |j $ %{} :Leaf (:at 1584874623096) (:by |rJG4IHzWf) (:text |update-states) + :examples $ [] :users $ {} |rJG4IHzWf $ {} (:avatar nil) (:id |rJG4IHzWf) (:name |chen) (:nickname |chen) (:password |d41d8cd98f00b204e9800998ecf8427e) (:theme :star-trail) |root $ {} (:avatar nil) (:id |root) (:name |root) (:nickname |root) (:password |d41d8cd98f00b204e9800998ecf8427e) (:theme :star-trail) diff --git a/compact.cirru b/compact.cirru index 289da72..fdfb933 100644 --- a/compact.cirru +++ b/compact.cirru @@ -1,5 +1,5 @@ -{} (:package |app) +{} (:about "|file is generated - never edit directly; learn cr edit/tree workflows before changing") (:package |app) :configs $ {} (:init-fn |app.main/main!) (:reload-fn |app.main/reload!) (:version |0.0.1) :modules $ [] |respo.calcit/ |lilac/ |memof/ |respo-ui.calcit/ |reel.calcit/ :entries $ {} @@ -20,7 +20,7 @@ {} $ :class-name (str-spaced css/global) div {} $ :class-name (str-spaced style-title css/font-fancy) - <> "\"Wallpapers" + <> "|WebGPU Art" list-> {} :class-name $ str-spaced css/row style-list @@ -30,6 +30,7 @@ [] idx $ comp-image-card info =< nil 120 when dev? $ comp-reel (>> states :reel) reel ({}) + :examples $ [] |comp-image-card $ %{} :CodeEntry (:doc |) :code $ quote defcomp comp-image-card (info) @@ -51,22 +52,22 @@ :target "\"_blank" :inner-text "\"Source" :class-name css/link + :examples $ [] |load-cirru-data $ %{} :CodeEntry (:doc |) :code $ quote defmacro load-cirru-data () $ &data-to-code parse-cirru-edn $ read-file "\"content/images.cirru" + :examples $ [] |style-image-card $ %{} :CodeEntry (:doc |) :code $ quote defstyle style-image-card $ {} - "\"&" $ let - w 480 - h $ * 9 (/ w 16) - {} (:width w) (:background-position "\"center") (:background-size "\"480px") (:height h) (:position :relative) (:border-radius "\"8px") (:cursor :pointer) (:transition-duration "\"400ms") - :box-shadow $ str "\"0 0 4px " (hsl 0 0 100 0.4) - :max-width "\"calc(90vw - 40px)" - :justify-self :center + "\"&" $ {} (:width 480) (:background-position "\"center") (:background-size "\"480px") (:height 270) (:position :relative) (:border-radius "\"8px") (:cursor :pointer) (:transition-duration "\"400ms") + :box-shadow $ str "\"0 0 4px " (hsl 0 0 100 0.4) + :max-width "\"calc(90vw - 40px)" + :justify-self :center "\"&:hover" $ {} (:background-size "\"520px") :box-shadow $ str "\"0 0 4px " (hsl 0 0 100 0.8) + :examples $ [] |style-image-info $ %{} :CodeEntry (:doc |) :code $ quote defstyle style-image-info $ {} @@ -80,10 +81,12 @@ :cursor :default :transition-delay "\"0ms" "\"&:hover" $ {} (:opacity 1) (; :height 80) (; :transition-delay "\"200ms") + :examples $ [] |style-list $ %{} :CodeEntry (:doc |) :code $ quote defstyle style-list $ {} "\"&" $ {} (:display :grid) (:grid-template-columns "\"repeat(auto-fit, minmax(480px, 1fr))") (:gap "\"12px") + :examples $ [] |style-title $ %{} :CodeEntry (:doc |) :code $ quote defstyle style-title $ {} @@ -94,6 +97,7 @@ :user-select :none "\"& span:hover" $ {} :text-shadow $ str "\"2px 2px 8px " (hsl 0 0 100 0.5) + :examples $ [] :ns $ %{} :CodeEntry (:doc |) :code $ quote ns app.comp.container $ :require (respo-ui.css :as css) @@ -103,21 +107,26 @@ respo.comp.space :refer $ =< reel.comp.reel :refer $ comp-reel app.config :refer $ dev? + :examples $ [] |app.config $ %{} :FileEntry :defs $ {} |dev? $ %{} :CodeEntry (:doc |) :code $ quote def dev? $ = "\"dev" (get-env "\"mode" "\"release") + :examples $ [] |site $ %{} :CodeEntry (:doc |) :code $ quote def site $ {} (:storage-key "\"workflow") + :examples $ [] :ns $ %{} :CodeEntry (:doc |) :code $ quote (ns app.config) + :examples $ [] |app.main $ %{} :FileEntry :defs $ {} |*reel $ %{} :CodeEntry (:doc |) :code $ quote defatom *reel $ -> reel-schema/reel (assoc :base schema/store) (assoc :store schema/store) + :examples $ [] |dispatch! $ %{} :CodeEntry (:doc |) :code $ quote defn dispatch! (op) @@ -125,6 +134,7 @@ and config/dev? $ not= op :states js/console.log "\"Dispatch:" op reset! *reel $ reel-updater updater @*reel op + :examples $ [] |main! $ %{} :CodeEntry (:doc |) :code $ quote defn main! () @@ -142,15 +152,18 @@ when (some? raw) dispatch! $ :: :hydrate-storage (parse-cirru-edn raw) println "|App started." + :examples $ [] |mount-target $ %{} :CodeEntry (:doc |) :code $ quote def mount-target $ js/document.querySelector |.app + :examples $ [] |persist-storage! $ %{} :CodeEntry (:doc |) :code $ quote defn persist-storage! () println "\"Saved at" $ .!toISOString (new js/Date) js/localStorage.setItem (:storage-key config/site) format-cirru-edn $ :store @*reel + :examples $ [] |reload! $ %{} :CodeEntry (:doc |) :code $ quote defn reload! () $ if (nil? build-errors) @@ -159,9 +172,11 @@ reset! *reel $ refresh-reel @*reel schema/store updater hud! "\"ok~" "\"Ok" hud! "\"error" build-errors + :examples $ [] |render-app! $ %{} :CodeEntry (:doc |) :code $ quote defn render-app! () $ render! mount-target (comp-container @*reel) dispatch! + :examples $ [] :ns $ %{} :CodeEntry (:doc |) :code $ quote ns app.main $ :require @@ -175,6 +190,7 @@ app.config :as config "\"./calcit.build-errors" :default build-errors "\"bottom-tip" :default hud! + :examples $ [] |app.schema $ %{} :FileEntry :defs $ {} |store $ %{} :CodeEntry (:doc |) @@ -182,8 +198,10 @@ def store $ {} :states $ {} :cursor $ [] + :examples $ [] :ns $ %{} :CodeEntry (:doc |) :code $ quote (ns app.schema) + :examples $ [] |app.updater $ %{} :FileEntry :defs $ {} |updater $ %{} :CodeEntry (:doc |) @@ -194,7 +212,9 @@ update-states store cursor s (:hydrate-storage data) data _ $ do (eprintln "\"unknown op:" op) store + :examples $ [] :ns $ %{} :CodeEntry (:doc |) :code $ quote ns app.updater $ :require respo.cursor :refer $ update-states + :examples $ [] diff --git a/content/images.cirru b/content/images.cirru index 4a114e5..c131767 100644 --- a/content/images.cirru +++ b/content/images.cirru @@ -3,153 +3,153 @@ {} :name "|Cubie Flame" :url |https://cos-sh.tiye.me/cos-up/5c6859177a5f09f16cd3fa9a6000bd1d/cubic-flame.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Aitawa Attactor" :url |https://cos-sh.tiye.me/cos-up/6bb683d9f34a30725c6d8e86972469d0/aizawa-attactor.png - :address |https://webgpu.art/protea-attractor/ + :address |https://repo.webgpu.art/protea-attractor/ :comment nil {} :name "|Mums Flower" :url |https://cos-sh.tiye.me/cos-up/0d294677ca9443fc322ae8980adb0766/mums-flower.png - :address |https://webgpu.art/lutra-crafts/ + :address |https://repo.webgpu.art/lutra-crafts/ :comment nil {} :name "|Hyperbolic Surface" :url |https://cos-sh.tiye.me/cos-up/16f61ff12e7126c1357ad44a8ca97438/hyperbolic-suface.png - :address |https://webgpu.art/lutra-crafts/ + :address |https://repo.webgpu.art/lutra-crafts/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/43e86cd82085a0e6450e0130f08b4d80/localhost_5173__mode=dev&remote-control=true-_bc_4_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/cecfdd1922c84d6998c42f018ca27919/localhost_5173__mode=dev&remote-control=true-_bc_6_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/6143b774406af830065ce4cc7ea13439/localhost_5173__mode=dev&remote-control=true-_bc_5_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/360b2680684dd812c7b7873ce0bc7a93/localhost_5173__mode=dev&remote-control=true-_bc_3_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/9c6c2080a03cb1674b175f37b84834e8/localhost_5173__mode=dev&remote-control=true-_bc_2_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/a00834c22554c2e821367f0892a993ff/localhost_5173__mode=dev&remote-control=true-_bc_8_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/2d13a1b73ea206a271ad296a9e13306c/localhost_5173__mode=dev&remote-control=true-_bc_7_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/3635ee5100f1ffa711c25b9bcb66f710/localhost_5173__mode=dev&remote-control=true-_bc_9_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Quaternion fractal partial" :url |https://cos-sh.tiye.me/cos-up/d014acc9b8f28bbbc7ea829db13cd4da/localhost_5173__mode=dev&remote-control=true-_bc_10_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|space calculator random" :url |https://cos-sh.tiye.me/cos-up/ea62c8842e94cc9a92a4e5e7f8ef1675/localhost_5173__mode=dev&remote-control=true-_bc_19_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Complex fractal partial" :url |https://cos-sh.tiye.me/cos-up/a958b7b514674542dd7b9c2ef29d1a3b/localhost_5173__mode=dev&remote-control=true-_bc_11_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Complex fractal partial" :url |https://cos-sh.tiye.me/cos-up/901f2f1786bbf58b7cf282006a998191/localhost_5173__mode=dev&remote-control=true-_bc_14_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Complex fractal partial" :url |https://cos-sh.tiye.me/cos-up/935989133d4ba185a3da9aa45ef82f44/localhost_5173__mode=dev&remote-control=true-_bc_12_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Complex fractal partial" :url |https://cos-sh.tiye.me/cos-up/51485bfc0cfd02b11edd967574aef87b/localhost_5173__mode=dev&remote-control=true-_bc_15_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Complex fractal partial" :url |https://cos-sh.tiye.me/cos-up/11f1133ed5d339ad59d4394deadbfe05/localhost_5173__mode=dev&remote-control=true-_bc_13_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Complex fractal partial" :url |https://cos-sh.tiye.me/cos-up/22b7817f6a7936785883f52dd8869791/localhost_5173__mode=dev&remote-control=true-_bc_17_bo_.png - :address |https://webgpu.art/soluble/ + :address |https://repo.webgpu.art/soluble/ :comment nil {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/9539c0f25d16856eb7b00e7989d692eb/pasted-2023-12-17T17:58:11.080Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/081780b7e678d912642acb84ba77eeec/pasted-2023-12-17T17:59:42.369Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/7d15e22f25b3d38b85e0bc50c10cc74a/pasted-2023-12-17T18:00:17.799Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/3a19fb42b3245d3963d26e7e3823cd5e/pasted-2023-12-17T18:01:30.984Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/077a58a3d87ab67f8a72bb3e03414ded/pasted-2023-12-17T18:02:33.580Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/188c4ff4fce1499dd7acd09b6f20780f/pasted-2023-12-17T18:02:55.447Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Lorenz" :url |https://cos-sh.tiye.me/cos-up/dc3c61f3040a4f7c6c15f2204f0fe58c/pasted-2023-12-17T18:03:14.300Z.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Christmas tree" :url |https://cos-sh.tiye.me/cos-up/b93f86069992d6c432399639d2e090d9/christmas-tree-2.png - :address |https://webgpu.art/lutra-crafts + :address |https://repo.webgpu.art/lutra-crafts :comment |nil {} :name |Bounce :url |https://cos-sh.tiye.me/cos-up/027fd7f687e3165a1bd093459e28ddd8/localhost_5173__mode=dev&remote-control=true-_bc_27_bo_.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name |Bounce :url |https://cos-sh.tiye.me/cos-up/a145c0dc23336c6b506c995ad401de96/localhost_5173__mode=dev&remote-control=true-_bc_28_bo_.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Fourwing part" @@ -159,156 +159,156 @@ {} :name "|Fourwing part" :url |https://cos-sh.tiye.me/cos-up/695b95dfcbe601faaa90d024d1f6a3ba/four-wing.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Quaternion fractal" :url |https://cos-sh.tiye.me/cos-up/c3a174b608a3005807a0acea04144b77/localhost_5173__mode=dev&remote-control=true-_bc_24_bo_.png - :address |https://webgpu.art/protea + :address |https://repo.webgpu.art/protea :comment |nil {} :name "|Lamps" :url |https://cos-sh.tiye.me/cos-up/c2a685bb61df6ae7da18d756efcc6ec0/pasted-2024-03-04T18:35:00.835Z.png - :address |https://webgpu.art/protea?tab=lamps + :address |https://repo.webgpu.art/protea?tab=lamps :comment |nil {} :name "|Lamps Closer" :url |https://cos-sh.tiye.me/cos-up/293a717a31f1a5835a61786c94c15355/pasted-2024-03-04T18:34:28.993Z.png - :address |https://webgpu.art/protea?tab=lamps + :address |https://repo.webgpu.art/protea?tab=lamps :comment |nil {} :name "|Poincare 4" :url |https://cos-sh.tiye.me/cos-up/b893378f2d02b87c0d20a3b7e3de750c/pasted-2024-03-24T05:54:19.425Z.png - :address |https://webgpu.art/soluble?tab=circles + :address |https://repo.webgpu.art/soluble?tab=circles :comment |nil {} :name "|Poincare 8" :url |https://cos-sh.tiye.me/cos-up/f538db5c239b69e96bf6a721e20216ac/poincare-8.png - :address |https://webgpu.art/soluble?tab=circles + :address |https://repo.webgpu.art/soluble?tab=circles :comment |nil {} :name "|Sphere Mirror Center" :url |https://cos-sh.tiye.me/cos-up/8cac0e236ae24de86a3b3b2f68d47edf/GQ8AmhtboAAMtgi.jpeg - :address |https://webgpu.art/soluble/?tab=sphere-mirror + :address |https://repo.webgpu.art/soluble/?tab=sphere-mirror :comment |nil {} :name "|Sphere Mirror Reflections" :url |https://cos-sh.tiye.me/cos-up/db6c628daa55e9493c72e745cdadf22f/pasted-2024-07-18T02:38:54.972Z.png - :address |https://webgpu.art/soluble/?tab=hollow-mirror + :address |https://repo.webgpu.art/soluble/?tab=hollow-mirror :comment |nil {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/286aa541f4bda6785c7e823159889972/pasted-2024-07-28T18:27:33.394Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|z8 + 15z4 − 16" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/a12c7023885f241596e4780ed2d64a72/pasted-2024-07-28T18:28:40.356Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|z8 + 15z4 − 16" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/defec6e39036767b25aa76eda79a82ad/pasted-2024-07-28T18:29:45.501Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|z8 + 15z4 − 16" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/f6a1d7cd0561059ae0653e5f834d5999/pasted-2024-07-28T18:32:19.032Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|z8 + 15z4 − 16" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/3e510860bffc94ec06b56f61201fe78d/pasted-2024-07-29T17:31:09.910Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|z8 + 15z4 − 16" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/0383f42dca827f24ec8515c4449bc9f7/pasted-2024-08-02T18:31:50.534Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/20a08e7b100e9590218a266605025108/pasted-2024-08-02T18:32:18.114Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/0dc3f70cd47ef93e0c2b371c1c049bf7/pasted-2024-08-02T18:32:49.866Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|p(z) = z^5*sin(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/899966c7ed48a1245dc4825d52833656/pasted-2024-08-02T18:33:35.558Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|p(z) = z^5*sin(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/9f6f72db2b1c016ecd2224686f556129/pasted-2024-08-02T18:33:40.903Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|p(z) = z^5*sin(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/aacb5e2361ac0011640518602f448164/pasted-2024-08-02T18:33:47.973Z.png - :address |https://webgpu.art/soluble/?tab=newton + :address |https://repo.webgpu.art/soluble/?tab=newton :comment "|p(z) = z^5*sin(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/e4dfeed67f85e94bfb84717f7c2c8a4d/pasted-2024-08-09T18:19:21.464Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/669c980d59810db421f78812ab08ae39/pasted-2024-08-09T18:20:34.437Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/a94f66c1bf5b92fd1d74821b598d53ff/pasted-2024-08-09T18:21:42.541Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/ef96f356e70c5e50f44038bf3b59765e/pasted-2024-08-09T18:23:17.297Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/931fdae043348ac473e590a634679379/pasted-2024-08-11T12:55:37.248Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(h)+cos(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/4e8a6ea865906854c8c3126add4a4393/pasted-2024-08-11T12:57:36.791Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(h)+cos(z)-1" {} :name "|Newton Fractal" :url |https://cos-sh.tiye.me/cos-up/6f2c6ceefa3ceb528bb891e8a68e790d/pasted-2024-08-11T12:59:19.380Z.png - :address |https://webgpu.art/soluble/?tab=newton-cosh + :address |https://repo.webgpu.art/soluble/?tab=newton-cosh :comment "|cosh(h)+cos(z)-1" {} :name "|Quaternion Tree" :url |https://cos-sh.tiye.me/cos-up/610c9d05110b955e669cebd74a2c6359/pasted-2024-12-26T15:17:04.391Z.png - :address |https://webgpu.art/caterfoil.mbt/?tab=quat-tree + :address |https://repo.webgpu.art/caterfoil.mbt/?tab=quat-tree :comment "|quaternion tree" {} :name "|Quaternion Tree" :url |https://cos-sh.tiye.me/cos-up/c39f60d94893c1078b4460765ad553dd/pasted-2024-12-26T15:19:50.477Z.png - :address |https://webgpu.art/caterfoil.mbt/?tab=quat-tree + :address |https://repo.webgpu.art/caterfoil.mbt/?tab=quat-tree :comment "|quaternion tree" {} :name "|Hyper Cube Grid" :url |https://cos-sh.tiye.me/cos-up/5b749014bfc50922b0bad5ef655bba8a/pasted-2025-01-02T16:54:21.042Z.png - :address |https://webgpu.art/caterfoil.mbt/?tab=hyper-cube-grid + :address |https://repo.webgpu.art/caterfoil.mbt/?tab=hyper-cube-grid :comment "|Hyper Cube Grid" {} :name "|Hyper Sphere" :url |https://cos-sh.tiye.me/cos-up/4602a4f1d7b463a87628551b237ac5cd/pasted-2025-01-12T17:04:15.471Z.png - :address |https://webgpu.art/caterfoil.mbt/?tab=sphere-tess + :address |https://repo.webgpu.art/caterfoil.mbt/?tab=sphere-tess :comment "|Hyper Sphere projected to 2D canvas" {} :name "|Hyper Cubic Array" :url |https://cos-sh.tiye.me/cos-up/0512bae9869c91d58354c895bf450424/pasted-2025-01-12T17:14:05.748Z.png - :address |https://webgpu.art/caterfoil.mbt/?tab=cubic-array + :address |https://repo.webgpu.art/caterfoil.mbt/?tab=cubic-array :comment "|Hyper Cubic Array projected to 2D canvas" diff --git a/deps.cirru b/deps.cirru index 050061d..94ff5c2 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,9 +1,7 @@ -{} - :calcit-version |0.9.13 - :dependencies $ {} - |calcit-lang/lilac |main - |calcit-lang/memof |main - |Respo/respo.calcit |0.16.12 +{} (:calcit-version |0.10.4) + :dependencies $ {} (|Respo/reel.calcit |main) |Respo/respo-ui.calcit |0.6.3 - |Respo/reel.calcit |main + |Respo/respo.calcit |0.16.24 + |calcit-lang/lilac |main + |calcit-lang/memof |0.0.17 diff --git a/index.html b/index.html index 69fef44..39ad763 100644 --- a/index.html +++ b/index.html @@ -3,8 +3,8 @@ - Wallpapers - + WebGPU Art + diff --git a/llms/Respo.md b/llms/Respo.md new file mode 100644 index 0000000..17e1c7c --- /dev/null +++ b/llms/Respo.md @@ -0,0 +1,920 @@ +# Respo Development Guide for LLM Agents + +**🤖 This guide is specifically designed for LLM agents to develop, debug, and maintain Respo applications.** + +📚 **Related Documentation**: + +- [← Back to README](../README.md) +- [Beginner Guide](./beginner-guide.md) +- [CLI Tools Reference](../Agents.md) +- [API Reference](./api.md) + +--- + +## Project Structure + +The Respo project is a virtual DOM library written in Calcit-js, containing: + +- **Main codebase**: `compact.cirru` (2314 lines) - serialized source code +- **Compiled source**: `calcit.cirru` (13806 lines) - full AST representation +- **Namespaces**: 33 total namespaces organized by functionality +- **Version**: 0.16.21 +- **Dependencies**: memof (memoization), lilac (UI utilities), calcit-test (testing) + +### Core Namespace Organization + +**User-facing APIs** (what you typically use): + +- `respo.core` - Core APIs: defcomp, div, render!, clear-cache!, etc. +- `respo.comp.space` - Utility component comp-space (=<) +- `respo.comp.inspect` - Debugging component comp-inspect +- `respo.render.html` - HTML generation: make-string, make-html + +**Application layer** (in example app): + +- `respo.app.core` - Main application logic (\*store, dispatch!, render-app!) +- `respo.app.schema` - Data structures and schemas +- `respo.app.updater` - State management and updates +- `respo.app.comp.*` - Application components (container, task, todolist, wrap, zero) +- `respo.app.style.widget` - Application styles + +**Rendering and internal** (low-level): + +- `respo.render.diff` - Find differences between virtual DOM trees +- `respo.render.dom` - DOM element creation and manipulation +- `respo.render.effect` - Component lifecycle effects +- `respo.render.patch` - Apply DOM patches +- `respo.controller.client` - Client-side state management (activate-instance!, patch-instance!) +- `respo.controller.resolve` - Event handling and resolution + +**Utilities**: + +- `respo.util.dom` - DOM utilities +- `respo.util.format` - Element formatting (purify-element, mute-element) +- `respo.util.list` - List utilities (map-val, map-with-idx) +- `respo.util.detect` - Type detection (component?, element?, effect?) +- `respo.css` - CSS utilities +- `respo.cursor` - Cursor management for nested states + +--- + +## Essential Calcit CLI Commands for Development + +### 1. Exploration and Discovery + +```bash +# List all namespaces in the project +cr query ns + +# Get details about a specific namespace (imports, definitions) +cr query ns respo.core +cr query ns respo.app.core + +# List all definitions in a namespace +cr query defs respo.core +cr query defs respo.app.updater + +# Quick peek at a definition (signature, parameters, docs) +cr query peek respo.core/defcomp +cr query peek respo.core/render! + +# Get complete definition as JSON syntax tree +cr query def respo.core/render! +cr query def respo.app.core/dispatch! + +# Search for a symbol across all namespaces +cr query find render! +cr query find *store + +# Find all usages of a specific definition +cr query usages respo.core/render! +cr query usages respo.app.core/dispatch! +``` + +### 2. Precise Code Navigation (tree pattern) + +When you need to understand or modify specific parts of a definition: + +```bash +# Step 1: Read the complete definition first +cr query def respo.app.updater/updater + +# Step 2: Use tree show to examine the structure (limit depth to reduce output) +cr tree show respo.app.updater/updater -p "" -d 1 # View root level + +# Step 3: Dive deeper into specific indices +cr tree show respo.app.updater/updater -p "2" -d 1 # Check 3rd element +cr tree show respo.app.updater/updater -p "2,1" -d 1 # Check 2nd child of 3rd element + +# Step 4: Confirm target location before editing +cr tree show respo.app.updater/updater -p "2,1,0" # Final confirmation + +# Step 5: Use tree commands for surgical modifications +# JSON inline (recommended) +cr tree replace respo.app.updater/updater -p "2,1,0" -j '"new-value"' +# Or from stdin +echo '"new-value"' | cr tree replace respo.app.updater/updater -p "2,1,0" -s -J +``` + +echo '["defn", "hello", [], ["println", "|Hello"]]' | cr edit def respo.app.core/hello -s -J + +### 3. Code Modification (Agent Optimized) + +**Best Practice: Use JSON AST** +For LLM Agents, **JSON inline (`-j`) is the most reliable method** for code generation. It avoids whitespace/indentation ambiguity inherent in Cirru. + +**Input Modes:** + +- `-j ''`: **Recommended.** Inline JSON string. Escape quotes carefully. +- `-e ''`: Inline Cirru one-liner. Good for short, simple expressions. +- `-f ` / `-s`: Read from file/stdin (defaults to Cirru). +- `-J`: Combine with `-f`/`-s` to indicate JSON input. + +**JSON AST Structure Guide:** + +- Function: `(defn f (x) x)` -> `["defn", "f", ["x"], "x"]` +- Map: `{:a 1}` -> `["{}", [":a", "1"]]` +- String: `"|hello"` -> `"|hello"` (in JSON string: `"\"|hello\""`) +- Keyword: `:key` -> `":key"` + +**Common Commands:** + +```bash +# 1. Add/Update Definition (JSON) +# (defn greet (name) (println "|Hello" name)) +cr edit def respo.demo/greet -j '["defn", "greet", ["name"], ["println", "\"|Hello\"", "name"]]' + +# 2. Add Definition (Cirru One-liner - risky for complex code) +cr edit def respo.demo/simple -e 'defn simple (x) (+ x 1)' + +# 3. Update Imports (JSON) +# (ns respo.demo (:require [respo.core :refer [div span]])) +cr edit imports respo.demo -j '[["respo.core", ":refer", ["div", "span"]]]' + +# 4. Remove Definition +cr edit rm-def respo.demo/old-fn + +# 5. Namespace Operations +cr edit add-ns respo.new-feature +cr edit rm-ns respo.deprecated +``` + +**💡 Pro Tip: Validation** +If unsure about the JSON structure, generate it from Cirru first: + +```bash +cr cirru parse -O 'defn f (x) (+ x 1)' +# Output: ["defn", "f", ["x"], ["+", "x", "1"]] +``` + +### 4. Project Configuration + +```bash +# Get project configuration (init-fn, reload-fn, version) +cr query config + +# Set project configuration +cr edit config version "0.16.22" +cr edit config init-fn "respo.main/main!" +cr edit config reload-fn "respo.main/reload!" +``` + +### 5. Workflow: Building From Scratch + +Follow this sequence to create a new feature cleanly: + +**Step 1: Create Namespace** + +```bash +cr edit add-ns respo.app.feature-x +``` + +**Step 2: Add Imports** +Define dependencies (e.g., `respo.core`). + +```bash +# Cirru: (:require [respo.core :refer [defcomp div span]]) +cr edit imports respo.app.feature-x -j '[["respo.core", ":refer", ["defcomp", "div", "span"]]]' +``` + +**Step 3: Create Component** +Define the component logic. + +```bash +# Cirru: (defcomp comp-x (data) (div {} (<> "Feature X"))) +cr edit def respo.app.feature-x/comp-x -j '["defcomp", "comp-x", ["data"], ["div", ["{}"], ["<>", "\"|Feature X\""]]]' +``` + +**Step 4: Verify** + +```bash +cr query def respo.app.feature-x/comp-x +cr --check-only +``` + +**Step 5: Integrate** +Mount or use it in `respo.app.comp.container`. + +```bash +# 1. Add import to container ns +cr edit require respo.app.comp.container respo.app.feature-x + +# 2. Add usage (using surgical edit) +# Find where to insert using `cr tree show ...` +# cr tree insert-child ... -j '["respo.app.feature-x/comp-x", "data"]' +``` + +### 6. Documentation and Language + +```bash +# Check for syntax errors and warnings +cr --check-only +cr js --check-only + +# Get language documentation +cr docs api render! +cr docs ref component +cr docs list-api # List all API docs +cr docs list-guide # List all guide docs + +# Parse Cirru code to JSON (for understanding syntax) +cr cirru parse '(div {} (<> "hello"))' + +# Format JSON to Cirru code +cr cirru format '["div", {}, ["<>", "hello"]]' + +# Parse EDN to JSON +cr cirru parse-edn '{:a 1 :b [2 3]}' + +# Show Cirru syntax guide (read before generating Cirru) +cr cirru show-guide +``` + +### 6. Library Management + +```bash +# List official libraries +cr libs + +# Search libraries by keyword +cr libs search router + +# Read library README from GitHub +cr libs readme respo + +# Install/update dependencies +caps +``` + +### 7. Code Analysis + +```bash +# Call graph analysis from init-fn (or custom root) +cr analyze call-graph +cr analyze call-graph --root app.main/main! --ns-prefix app. --include-core --max-depth 5 --format json + +# Call count statistics +cr analyze count-calls +cr analyze count-calls --root app.main/main! --ns-prefix app. --include-core --format json --sort count +``` + +--- + +## Development Workflow for LLM Agents + +### Step 1: Understand the Problem + +```bash +# Always start by exploring related code +cr query ns respo.app.updater # Understand state management +cr query find my-function-name # Find where it's defined/used +cr query usages respo.core/render! # See how render! is used +``` + +### Step 2: Implement the Solution + +Use the **precise editing pattern** for complex changes: + +```bash +# 1. Read the whole definition +cr query def namespace/function-name + +# 2. Map out the structure with tree show +cr tree show namespace/function-name -p "" -d 1 + +# 3. Navigate to target position +cr tree show namespace/function-name -p "2,1" -d 1 + +# 4. Make the change (JSON inline recommended) +cr tree replace namespace/function-name -p "2,1,0" -j '["new", "code"]' + +# Or from stdin (JSON format) +echo '["new", "code"]' | cr tree replace namespace/function-name -p "2,1,0" -s -J + +# 5. Verify +cr tree show namespace/function-name -p "2,1" +``` + +### Step 3: Test and Validate + +```bash +# Check syntax without running +cr --check-only + +# Compile to JavaScript and check for errors +cr js --check-only + +# Run the app once to test +cr -1 + +# Compile to JavaScript once +cr -1 js + +# Watch mode (will call reload! on code changes) +cr +``` + +### Step 4: Debug Issues + +```bash +# Check for error messages +cr query error + +# Read error stack traces +cat .calcit-error.cirru # (if it exists) + +# Search for the problematic code +cr query find problem-symbol +cr query usages namespace/definition + +# Review the definition in detail +cr query def namespace/definition +``` + +--- + +## Common Patterns and Best Practices + +### 1. Component Definition Pattern + +**Cirru (Read):** + +```cirru +; Standard component structure +defcomp comp-name (param1 param2 & options) + div $ {} + :class-name "|component-name" + :style $ comp-style + <> "|Content" +``` + +**JSON AST (Write - for `cr edit`):** + +```json +[ + "defcomp", + "comp-name", + ["param1", "param2", "&", "options"], + [ + "div", + ["{}", [":class-name", "|component-name"], [":style", "comp-style"]], + ["<>", "|Content"] + ] +] +``` + +### 2. State Management Pattern + +```cirru +; Define store atom at app.core level +defatom *store $ {} + :states $ {} + :data $ {} + +; Create dispatcher +defn dispatch! (op) + reset! *store (updater @*store op) + +; Updater function pattern +defn updater (store op) + tag-match op + (:action-name value) $ + assoc store :data (process-action (:data store) value) + (:nested-action id op2) $ + update-in store [:data :nested id] (process-nested op2) + _ store +``` + +### 3. Rendering Pattern + +```cirru +; Initial render +defn render-app! () + render! mount-point (comp-container @*store) dispatch! + +; Watch for store changes +add-watch *store :changes $ fn () + render-app! + +; Hot reload with cache clearing +defn reload! () + remove-watch *store :changes + add-watch *store :changes $ fn () + render-app! + clear-cache! + render-app! +``` + +### 4. DOM Element Creation + +```cirru +; Using predefined elements (defn wrappers for create-element) +div $ {} (<> "text") +button $ {} (<> "Click me") +input $ {:value "|default"} +span $ {:class-name "|style-name"} (<> "content") + +; Dynamic elements with create-element +create-element :custom-tag $ {:prop-name "|value"} + <> "|child" + +; List rendering with list-> +list-> $ {} + :style $ {} (:display "|flex") + , $ {} + :a $ comp-item item-1 + :b $ comp-item item-2 + :c $ comp-item item-3 +``` + +### 5. Styling Pattern + +```cirru +; Define styles as maps +def style-container $ {} + :display "|flex" + :padding "|10px" + :background-color "|#f0f0f0" + +; Conditional styles +defn style-for-state (state) + if (= state :active) + assoc style-container :background-color "|#3388ff" + style-container + +; Merge styles +let + base $ {} (:color "|black") + extended $ merge base $ {} (:font-size 14) + extended +``` + +### 6. Event Handling + +```cirru +; Simple click handler +div + {} + :on-click $ fn (e dispatch!) + dispatch! [:button-clicked] + +; Input with value tracking +input + {} + :value "|current-value" + :on-input $ fn (e dispatch!) + let + value (e.target.value) + dispatch! [:input-changed value] + +; Keyboard events +div + {} + :on-keydown $ fn (e dispatch!) + when (= (e.key) "|Enter") + dispatch! [:submit-form] +``` + +--- + +## Debugging Common Issues + +### Issue: Component not re-rendering + +**Diagnosis**: + +```bash +# Check if render-app! is being called +cr query find render-app! +cr query usages respo.main/render-app! + +# Verify store watcher is set up +cr query def respo.app.core/dispatch! +cr query def respo.main/main! +``` + +**Solution Pattern**: + +```cirru +; Ensure watch is on *store +add-watch *store :changes $ fn () + render-app! + +; Ensure clear-cache! is called on reload +defn reload! () + remove-watch *store :changes + clear-cache! + add-watch *store :changes $ fn () + render-app! + render-app! +``` + +### Issue: State not updating + +**Diagnosis**: + +```bash +# Check updater function logic +cr query def respo.app.updater/updater + +# Verify dispatch! is calling updater correctly +cr query def respo.app.core/dispatch! + +# Check the state path in component +cr query def respo.app.comp.container/comp-container +``` + +**Solution Pattern**: + +```cirru +; Verify tag-match pattern matches dispatched action +tag-match op + (:action-name params) $ + ; Make sure return value is updated store + assoc store :data new-value + _ store ; Default case needed! + +; Ensure dispatch! is called with correct tuple +dispatch! [:action-name actual-value] +``` + +### Issue: Component effects not triggering + +**Diagnosis**: + +```bash +# Check effect definition +cr query def respo.core/defeffect # macro documentation + +# Find effect in component +cr query find my-effect +cr query usages respo.app.comp.task/my-effect +``` + +**Solution Pattern**: + +```cirru +; Effects must be first in component body +defcomp comp-with-effect (props) + [] + effect-name param1 param2 ; First! + div $ {} ; Then render + <> "|content" + +; Effect must match action lifecycle +defeffect my-effect (initial-value) + (action element at-place?) + when (= action :mount) + do (println "|mounted") + when (= action :update) + do (println "|updated") +``` + +### Issue: Hot reload breaking state + +**Diagnosis**: + +```bash +# Check reload! function +cr query def respo.main/reload! + +# Verify clear-cache! is called +cr query usages respo.core/clear-cache! +``` + +**Solution Pattern**: + +```cirru +; clear-cache! must be called during reload +defn reload! () + remove-watch *store :changes + clear-cache! ; Critical! + add-watch *store :changes $ fn () + render-app! + render-app! +``` + +--- + +## Modification Strategy: Safe Editing Guide + +### Before any edit, follow this checklist: + +1. **Understand the context** + + ```bash + cr query ns namespace-name # See imports and doc + cr query peek namespace-name/def-name # See signature + ``` + +2. **Map the exact location** + + ```bash + cr tree show namespace-name/def-name -p "" -d 2 # Overview + cr tree show namespace-name/def-name -p "2" -d 2 # Check section + cr tree show namespace-name/def-name -p "2,1" -d 2 # Precise location + ``` + +3. **Make surgical change** + +```bash +# JSON inline (recommended) +cr tree replace namespace-name/def-name -p "2,1,0" -j '"new-value"' + +# Or from stdin (JSON format) +echo '"new-value"' | cr tree replace namespace-name/def-name -p "2,1,0" -s -J +``` + +4. **Verify immediately** + ```bash + cr tree show namespace-name/def-name -p "2,1" # Confirm change + cr --check-only # Verify syntax + ``` + +### Common edit operations: + +```bash +# Replace a value (JSON inline) +cr tree replace ns/def -p "2,1,0" -j '"new-value"' + +# Insert before a position (JSON) +cr tree insert-before ns/def -p "2,1" -j '["new", "element"]' + +# Insert after a position (JSON) +cr tree insert-after ns/def -p "2,1" -j '["new", "element"]' + +# Delete a node +cr tree delete ns/def -p "2,1,0" + +# Insert as child (first child) +cr tree insert-child ns/def -p "2,1" -j '"child-value"' + +# Append as child (last child, from stdin) +echo '"child-value"' | cr tree append-child ns/def -p "2,1" -s -J +``` + +--- + +## Testing and Validation + +### Basic validation + +```bash +# Syntax check only (no execution) +cr --check-only + +# Check JavaScript compilation +cr js --check-only + +# Run application once +cr -1 + +# Compile to JS once +cr -1 js +``` + +### Test-driven development + +```bash +# Look at test files +cr query defs respo.test.main +cr query def respo.test.main/test-fn + +# Run tests +cr -1 ; (if init-fn runs tests) +``` + +### Error diagnosis + +```bash +# View error file +cr query error +cat .calcit-error.cirru + +# Search for the problematic definition +cr query find problem-name + +# Check the full definition +cr query def namespace/problem-name + +# Validate dependencies +cr query ns namespace-name # Check imports +``` + +--- + +## Important Notes for LLM Agents + +### ⚠️ Critical Rules + +1. **NEVER directly edit `calcit.cirru` or `compact.cirru`** with text editors + + - Use `cr edit` commands instead + - These are serialized AST structures, not human-readable code + +2. **ALWAYS use relative paths for documentation links** + + - Use `../` and `../../` for navigation + - This allows easy file discovery for LLM tools + +3. **ALWAYS check syntax before assuming it's correct** + + ```bash + cr --check-only + ``` + +4. **ALWAYS verify modifications work** + + ```bash + cr tree show namespace/def -p "modified-path" # Confirm change + cr --check-only # Check syntax + cr -1 # Test run + ``` + +5. **Use peek before def** to reduce token consumption + ```bash + cr query peek ns/def # Light summary + cr query def ns/def # Full AST (use only if needed) + ``` + +### 🎯 Optimization Tips for Token Usage + +```bash +# Fast exploration with limited output +cr query peek respo.core/defcomp # 5-10 lines +cr query defs respo.app.updater # Quick list + +# Slower but comprehensive +cr query def respo.app.updater/updater # Full JSON AST + +# Use -d flag to limit JSON depth +cr tree show ns/def -p "2,1" -d 1 # Shallow +cr tree show ns/def -p "2,1" -d 3 # Medium +cr tree show ns/def -p "2,1" # Full (default) + +# Search before diving deep +cr query find my-function # Find location first +cr query usages ns/def # See usage patterns +``` + +### 📖 Documentation Strategy + +When stuck, use these resources in order: + +1. This file (Respo-Agent.md) - you are here +2. [README.md](../README.md) - Project overview and index +3. [Beginner Guide](./beginner-guide.md) - Conceptual introduction +4. [API Reference](./api.md) - Specific API documentation +5. [Guide docs](./guide/) - Detailed topics +6. `cr docs api ` - Language documentation +7. Project code itself: `cr query ns ` + +--- + +## Quick Reference + +### Most Used Commands + +```bash +# Exploration (read-only, no changes) +cr query ns # List namespaces +cr query ns respo.core # Read namespace details +cr query defs respo.app.core # List definitions +cr query peek respo.core/render! # Quick peek +cr query def respo.core/render! # Full definition +cr query find render! # Search globally +cr query usages respo.core/render! # Find usages + +# Navigation (precise editing) +cr tree show ns/def -p "" -d 1 # View structure +cr tree show ns/def -p "2,1" -d 1 # Drill down +cr tree show ns/def -p "2,1,0" # Confirm target + +# Modification (careful!) +cr edit def ns/def -j '["defn", "func", [], "body"]' +cr tree replace ns/def -p "2,1,0" -j '"value"' +cr edit rm-def ns/def + +# Validation +cr --check-only # Check syntax +cr query error # View errors +cr -1 # Test run +``` + +### File Paths in Documentation + +When referring to files from within `docs/`: + +- `./` - same directory +- `../` - parent (docs/ to root) +- `../../` - grandparent (docs/apis/ to root) + +Example from `docs/apis/defcomp.md`: + +```markdown +- [Back to README](../../README.md) +- [API Overview](../api.md) +- [Another API](./render!.md) +``` + +--- + +This guide evolves as the project grows. Last updated: 2025-12-22 + +# Calcit & Respo 开发避坑指南 + +本文档总结了在 Calcit 和 Respo 开发过程中遇到的常见问题和最佳实践。 + +## 1. 字符串语法 (String Syntax) + +Calcit 使用 `|` 前缀来表示字符串字面量。 + +- **正确**: `|Hello` (编译为 `"Hello"`) +- **正确**: `"Hello"` (标准 Cirru 字符串,编译为 `"Hello"`) +- **错误**: `Hello` (会被解析为 Symbol) + +**CLI 操作注意**: +在使用 `cr tree replace` 修改字符串时,推荐使用 `|` 前缀或 `--json-leaf` 确保类型正确。 + +```bash +# 推荐:使用 | 前缀 +cr tree replace ... -e "|Get Started" + +# 推荐:使用 --json-leaf 明确指定为叶子节点 +cr tree replace ... -e '"Get Started"' --json-leaf +``` + +如果直接使用 `-e '"Get Started"'` 且不加 `--json-leaf`,可能会被解析为包含引号的字符串 `"\"Get Started\""`,导致显示多余引号。 + +## 2. Respo 文本渲染 (Text Rendering) + +Respo 的 HTML 标签(如 `div`, `span`, `button`)**不能直接接受原始字符串作为子节点**。 + +**错误写法** (会导致 `Invalid data in elements tree`): + +```cirru +div ({}) + |SomeText +``` + +**正确写法 1: 使用 `:inner-text` 属性** (推荐用于纯文本标签) + +```cirru +div $ {} (:inner-text |SomeText) +``` + +**正确写法 2: 使用 `<>` 组件** (推荐用于混合内容) + +```cirru +div ({}) + <> |SomeText + span $ {} (:inner-text |Other) +``` + +## 3. 样式定义 (Styles) + +在 `defstyle` 中定义样式时: + +- **数值属性**: 像 `font-weight` 这样的属性,如果使用数字(如 `700`),确保它是数字类型而不是字符串。 + - 错误: `(:font-weight |bold)` (如果库不支持) + - 正确: `(:font-weight 700)` + +## 4. CLI 调试技巧 + +- **检查代码**: `cr js --check-only` + + - 这是一个非常快速的检查命令,能发现未定义的变量 (Warnings) 和语法错误,而不会生成 JS 文件。 + - **务必关注 Warnings**: 很多运行时错误(如 `unknown head`)都是因为使用了未定义的 Symbol(可能是忘记加 `|` 前缀的字符串)。 + +- **查看节点结构**: `cr tree show -p ` + + - 在修改前,先查看目标节点的结构(是 `list` 还是 `leaf`),确认路径是否正确。 + +- **精确修改**: `cr tree replace` + - 配合 `-p` 路径参数进行精确修改,避免破坏周围结构。 + +## 5. 命名空间 (Namespaces) + +- **修改 Imports**: 使用 `cr edit imports -j '...'` + - 这是修改 `:require` 最安全的方式。 + - 如果遇到 `invalid ns form` 错误,通常是因为 `ns` 定义格式被破坏,可以尝试清空 imports 再重新添加。 diff --git a/package.json b/package.json index 1807404..31d774f 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "dependencies": { - "@calcit/procs": "^0.9.13" + "@calcit/procs": "^0.10.4" }, "devDependencies": { "bottom-tip": "^0.1.5", - "vite": "^7.0.0" + "vite": "^7.3.1" }, "version": "0.0.1" } diff --git a/yarn.lock b/yarn.lock index cefd2f5..c7ee81f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,19 +2,19 @@ # yarn lockfile v1 -"@calcit/procs@^0.9.13": - version "0.9.13" - resolved "https://registry.yarnpkg.com/@calcit/procs/-/procs-0.9.13.tgz#6b8e8ddbd8661ddc54a062a74f480d22068b6066" - integrity sha512-R9qyNwfIOxejuz81MaLIiRCsfjSNpsqiVxZwwOZPUmZKB6t/G/Qq4hUQv0T14dBajxWRqB8OB9KbCBMzvSGU3g== +"@calcit/procs@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@calcit/procs/-/procs-0.10.4.tgz#bcb58256a450b6ec891a64d150c959f229408ae7" + integrity sha512-JljJactqBWQYI3Wcg4a//eRZmry/Pb2gwgHN8OZeMld27krImDoWUYdhtW9wc27lxsBmO0mGW6ubyIwK1c5xhg== dependencies: - "@calcit/ternary-tree" "0.0.24" + "@calcit/ternary-tree" "0.0.25" "@cirru/parser.ts" "^0.0.6" "@cirru/writer.ts" "^0.1.5" -"@calcit/ternary-tree@0.0.24": - version "0.0.24" - resolved "https://registry.yarnpkg.com/@calcit/ternary-tree/-/ternary-tree-0.0.24.tgz#9b58cf9f76c08c3995b98b59c71b85e1da32385c" - integrity sha512-IGs+VNYIrIF2bI3/cnQe2lFmZYaJe3+A0LArDloGbNaEzUTRoyba37FTZ8K9C+XRpUAO9K0q61sKY2vb4teWAA== +"@calcit/ternary-tree@0.0.25": + version "0.0.25" + resolved "https://registry.yarnpkg.com/@calcit/ternary-tree/-/ternary-tree-0.0.25.tgz#d467cbd9a7f89ff1fdb590e5d1551aefa6a03492" + integrity sha512-BxAAq6v7dZJDYSMX5kBVQ/eSYX7czjOS1cHM25js4yD+Q2I61RxxhD7iBaGlfNJvmgPmvYJQA5nxNmN2TEXq7A== "@cirru/parser.ts@^0.0.6": version "0.0.6" @@ -26,230 +26,260 @@ resolved "https://registry.yarnpkg.com/@cirru/writer.ts/-/writer.ts-0.1.5.tgz#890d96cd4a69609f1682932dad5d2d467abb327e" integrity sha512-QQVFJAOIdUtVJZwT23THZOzumSDXCLMQ0yFz5DzIGlWGXPNBuB7BwUvGtRuiQrzM2XV7ALOWmNsVC7vEOjObQQ== -"@esbuild/aix-ppc64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#4e0f91776c2b340e75558f60552195f6fad09f18" - integrity sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA== - -"@esbuild/android-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#bc766407f1718923f6b8079c8c61bf86ac3a6a4f" - integrity sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg== - -"@esbuild/android-arm@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz#4290d6d3407bae3883ad2cded1081a234473ce26" - integrity sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA== - -"@esbuild/android-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz#40c11d9cbca4f2406548c8a9895d321bc3b35eff" - integrity sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw== - -"@esbuild/darwin-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#49d8bf8b1df95f759ac81eb1d0736018006d7e34" - integrity sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ== - -"@esbuild/darwin-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#e27a5d92a14886ef1d492fd50fc61a2d4d87e418" - integrity sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ== - -"@esbuild/freebsd-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#97cede59d638840ca104e605cdb9f1b118ba0b1c" - integrity sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw== - -"@esbuild/freebsd-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#71c77812042a1a8190c3d581e140d15b876b9c6f" - integrity sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw== - -"@esbuild/linux-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#f7b7c8f97eff8ffd2e47f6c67eb5c9765f2181b8" - integrity sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg== - -"@esbuild/linux-arm@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#2a0be71b6cd8201fa559aea45598dffabc05d911" - integrity sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw== - -"@esbuild/linux-ia32@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#763414463cd9ea6fa1f96555d2762f9f84c61783" - integrity sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA== - -"@esbuild/linux-loong64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#428cf2213ff786a502a52c96cf29d1fcf1eb8506" - integrity sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg== - -"@esbuild/linux-mips64el@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#5cbcc7fd841b4cd53358afd33527cd394e325d96" - integrity sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg== - -"@esbuild/linux-ppc64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#0d954ab39ce4f5e50f00c4f8c4fd38f976c13ad9" - integrity sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ== - -"@esbuild/linux-riscv64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#0e7dd30730505abd8088321e8497e94b547bfb1e" - integrity sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA== - -"@esbuild/linux-s390x@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#5669af81327a398a336d7e40e320b5bbd6e6e72d" - integrity sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ== - -"@esbuild/linux-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#b2357dd153aa49038967ddc1ffd90c68a9d2a0d4" - integrity sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw== - -"@esbuild/netbsd-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#53b4dfb8fe1cee93777c9e366893bd3daa6ba63d" - integrity sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw== - -"@esbuild/netbsd-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#a0206f6314ce7dc8713b7732703d0f58de1d1e79" - integrity sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ== - -"@esbuild/openbsd-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#2a796c87c44e8de78001d808c77d948a21ec22fd" - integrity sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw== - -"@esbuild/openbsd-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#28d0cd8909b7fa3953af998f2b2ed34f576728f0" - integrity sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg== - -"@esbuild/sunos-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#a28164f5b997e8247d407e36c90d3fd5ddbe0dc5" - integrity sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA== - -"@esbuild/win32-arm64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#6eadbead38e8bd12f633a5190e45eff80e24007e" - integrity sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw== - -"@esbuild/win32-ia32@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#bab6288005482f9ed2adb9ded7e88eba9a62cc0d" - integrity sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ== - -"@esbuild/win32-x64@0.25.5": - version "0.25.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz#7fc114af5f6563f19f73324b5d5ff36ece0803d1" - integrity sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g== - -"@rollup/rollup-android-arm-eabi@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz#f768e3b2b0e6b55c595d7a053652c06413713983" - integrity sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w== - -"@rollup/rollup-android-arm64@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz#40379fd5501cfdfd7d8f86dfa1d3ce8d3a609493" - integrity sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ== - -"@rollup/rollup-darwin-arm64@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz#972c227bc89fe8a38a3f0c493e1966900e4e1ff7" - integrity sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg== - -"@rollup/rollup-darwin-x64@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz#96c919dcb87a5aa7dec5f7f77d90de881e578fdd" - integrity sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw== - -"@rollup/rollup-freebsd-arm64@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz#d199d8eaef830179c0c95b7a6e5455e893d1102c" - integrity sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA== - -"@rollup/rollup-freebsd-x64@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz#cab01f9e06ca756c1fabe87d64825ae016af4713" - integrity sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw== - -"@rollup/rollup-linux-arm-gnueabihf@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz#f6f1c42036dba0e58dc2315305429beff0d02c78" - integrity sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ== - -"@rollup/rollup-linux-arm-musleabihf@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz#1157e98e740facf858993fb51431dce3a4a96239" - integrity sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw== - -"@rollup/rollup-linux-arm64-gnu@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz#b39db73f8a4c22e7db31a4f3fd45170105f33265" - integrity sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ== - -"@rollup/rollup-linux-arm64-musl@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz#4043398049fe4449c1485312d1ae9ad8af4056dd" - integrity sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g== - -"@rollup/rollup-linux-loongarch64-gnu@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz#855a80e7e86490da15a85dcce247dbc25265bc08" - integrity sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew== - -"@rollup/rollup-linux-powerpc64le-gnu@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz#8cf843cb7ab1d42e1dda680937cf0a2db6d59047" - integrity sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA== - -"@rollup/rollup-linux-riscv64-gnu@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz#287c085472976c8711f16700326f736a527f2f38" - integrity sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw== - -"@rollup/rollup-linux-riscv64-musl@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz#095ad5e53a54ba475979f1b3226b92440c95c892" - integrity sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg== - -"@rollup/rollup-linux-s390x-gnu@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz#a3dec8281d8f2aef1703e48ebc65d29fe847933c" - integrity sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw== - -"@rollup/rollup-linux-x64-gnu@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz#4b211e6fd57edd6a134740f4f8e8ea61972ff2c5" - integrity sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw== - -"@rollup/rollup-linux-x64-musl@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz#3ecbf8e21b4157e57bb15dc6837b6db851f9a336" - integrity sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g== - -"@rollup/rollup-win32-arm64-msvc@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz#d4aae38465b2ad200557b53c8c817266a3ddbfd0" - integrity sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg== - -"@rollup/rollup-win32-ia32-msvc@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz#0258e8ca052abd48b23fd6113360fa0cd1ec3e23" - integrity sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A== - -"@rollup/rollup-win32-x64-msvc@4.44.1": - version "4.44.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz#1c982f6a5044ffc2a35cd754a0951bdcb44d5ba0" - integrity sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug== +"@esbuild/aix-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" + integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== + +"@esbuild/android-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" + integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== + +"@esbuild/android-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" + integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== + +"@esbuild/android-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" + integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== + +"@esbuild/darwin-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" + integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== + +"@esbuild/darwin-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" + integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== + +"@esbuild/freebsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" + integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== + +"@esbuild/freebsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" + integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== + +"@esbuild/linux-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" + integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== + +"@esbuild/linux-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" + integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== + +"@esbuild/linux-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" + integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== + +"@esbuild/linux-loong64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" + integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== + +"@esbuild/linux-mips64el@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" + integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== + +"@esbuild/linux-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" + integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== + +"@esbuild/linux-riscv64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" + integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== + +"@esbuild/linux-s390x@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" + integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== + +"@esbuild/linux-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650" + integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== + +"@esbuild/netbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" + integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== + +"@esbuild/netbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" + integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== + +"@esbuild/openbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" + integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== + +"@esbuild/openbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" + integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== + +"@esbuild/openharmony-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" + integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== + +"@esbuild/sunos-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" + integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== + +"@esbuild/win32-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" + integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== + +"@esbuild/win32-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" + integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== + +"@esbuild/win32-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" + integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== + +"@rollup/rollup-android-arm-eabi@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz#76e0fef6533b3ce313f969879e61e8f21f0eeb28" + integrity sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg== + +"@rollup/rollup-android-arm64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz#d3cfc675a40bbdec97bda6d7fe3b3b05f0e1cd93" + integrity sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg== + +"@rollup/rollup-darwin-arm64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz#eb912b8f59dd47c77b3c50a78489013b1d6772b4" + integrity sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg== + +"@rollup/rollup-darwin-x64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz#e7d0839fdfd1276a1d34bc5ebbbd0dfd7d0b81a0" + integrity sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ== + +"@rollup/rollup-freebsd-arm64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz#7ff8118760f7351e48fd0cd3717ff80543d6aac8" + integrity sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg== + +"@rollup/rollup-freebsd-x64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz#49d330dadbda1d4e9b86b4a3951b59928a9489a9" + integrity sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw== + +"@rollup/rollup-linux-arm-gnueabihf@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz#98c5f1f8b9776b4a36e466e2a1c9ed1ba52ef1b6" + integrity sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ== + +"@rollup/rollup-linux-arm-musleabihf@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz#b9acecd3672e742f70b0c8a94075c816a91ff040" + integrity sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg== + +"@rollup/rollup-linux-arm64-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz#7a6ab06651bc29e18b09a50ed1a02bc972977c9b" + integrity sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ== + +"@rollup/rollup-linux-arm64-musl@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz#3c8c9072ba4a4d4ef1156b85ab9a2cbb57c1fad0" + integrity sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA== + +"@rollup/rollup-linux-loong64-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz#17a7af13530f4e4a7b12cd26276c54307a84a8b0" + integrity sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g== + +"@rollup/rollup-linux-loong64-musl@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz#5cd7a900fd7b077ecd753e34a9b7ff1157fe70c1" + integrity sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw== + +"@rollup/rollup-linux-ppc64-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz#03a097e70243ddf1c07b59d3c20f38e6f6800539" + integrity sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw== + +"@rollup/rollup-linux-ppc64-musl@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz#a5389873039d4650f35b4fa060d286392eb21a94" + integrity sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw== + +"@rollup/rollup-linux-riscv64-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz#789e60e7d6e2b76132d001ffb24ba80007fb17d0" + integrity sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw== + +"@rollup/rollup-linux-riscv64-musl@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz#3556fa88d139282e9a73c337c9a170f3c5fe7aa4" + integrity sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg== + +"@rollup/rollup-linux-s390x-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz#c085995b10143c16747a67f1a5487512b2ff04b2" + integrity sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg== + +"@rollup/rollup-linux-x64-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz#9563a5419dd2604841bad31a39ccfdd2891690fb" + integrity sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg== + +"@rollup/rollup-linux-x64-musl@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz#691bb06e6269a8959c13476b0cd2aa7458facb31" + integrity sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w== + +"@rollup/rollup-openbsd-x64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz#223e71224746a59ce6d955bbc403577bb5a8be9d" + integrity sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg== + +"@rollup/rollup-openharmony-arm64@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz#0817e5d8ecbfeb8b7939bf58f8ce3c9dd67fce77" + integrity sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw== + +"@rollup/rollup-win32-arm64-msvc@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz#de56d8f2013c84570ef5fb917aae034abda93e4a" + integrity sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g== + +"@rollup/rollup-win32-ia32-msvc@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz#659aff5244312475aeea2c9479a6c7d397b517bf" + integrity sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA== + +"@rollup/rollup-win32-x64-gnu@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz#2cb09549cbb66c1b979f9238db6dd454cac14a88" + integrity sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg== + +"@rollup/rollup-win32-x64-msvc@4.55.1": + version "4.55.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.1.tgz#f79437939020b83057faf07e98365b1fa51c458b" + integrity sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw== "@types/estree@1.0.8": version "1.0.8" @@ -288,36 +318,37 @@ error@^4.3.0: string-template "~0.2.0" xtend "~4.0.0" -esbuild@^0.25.0: - version "0.25.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.5.tgz#71075054993fdfae76c66586f9b9c1f8d7edd430" - integrity sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ== +esbuild@^0.27.0: + version "0.27.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.2.tgz#d83ed2154d5813a5367376bb2292a9296fc83717" + integrity sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.5" - "@esbuild/android-arm" "0.25.5" - "@esbuild/android-arm64" "0.25.5" - "@esbuild/android-x64" "0.25.5" - "@esbuild/darwin-arm64" "0.25.5" - "@esbuild/darwin-x64" "0.25.5" - "@esbuild/freebsd-arm64" "0.25.5" - "@esbuild/freebsd-x64" "0.25.5" - "@esbuild/linux-arm" "0.25.5" - "@esbuild/linux-arm64" "0.25.5" - "@esbuild/linux-ia32" "0.25.5" - "@esbuild/linux-loong64" "0.25.5" - "@esbuild/linux-mips64el" "0.25.5" - "@esbuild/linux-ppc64" "0.25.5" - "@esbuild/linux-riscv64" "0.25.5" - "@esbuild/linux-s390x" "0.25.5" - "@esbuild/linux-x64" "0.25.5" - "@esbuild/netbsd-arm64" "0.25.5" - "@esbuild/netbsd-x64" "0.25.5" - "@esbuild/openbsd-arm64" "0.25.5" - "@esbuild/openbsd-x64" "0.25.5" - "@esbuild/sunos-x64" "0.25.5" - "@esbuild/win32-arm64" "0.25.5" - "@esbuild/win32-ia32" "0.25.5" - "@esbuild/win32-x64" "0.25.5" + "@esbuild/aix-ppc64" "0.27.2" + "@esbuild/android-arm" "0.27.2" + "@esbuild/android-arm64" "0.27.2" + "@esbuild/android-x64" "0.27.2" + "@esbuild/darwin-arm64" "0.27.2" + "@esbuild/darwin-x64" "0.27.2" + "@esbuild/freebsd-arm64" "0.27.2" + "@esbuild/freebsd-x64" "0.27.2" + "@esbuild/linux-arm" "0.27.2" + "@esbuild/linux-arm64" "0.27.2" + "@esbuild/linux-ia32" "0.27.2" + "@esbuild/linux-loong64" "0.27.2" + "@esbuild/linux-mips64el" "0.27.2" + "@esbuild/linux-ppc64" "0.27.2" + "@esbuild/linux-riscv64" "0.27.2" + "@esbuild/linux-s390x" "0.27.2" + "@esbuild/linux-x64" "0.27.2" + "@esbuild/netbsd-arm64" "0.27.2" + "@esbuild/netbsd-x64" "0.27.2" + "@esbuild/openbsd-arm64" "0.27.2" + "@esbuild/openbsd-x64" "0.27.2" + "@esbuild/openharmony-arm64" "0.27.2" + "@esbuild/sunos-x64" "0.27.2" + "@esbuild/win32-arm64" "0.27.2" + "@esbuild/win32-ia32" "0.27.2" + "@esbuild/win32-x64" "0.27.2" ev-store@^7.0.0: version "7.0.0" @@ -326,10 +357,10 @@ ev-store@^7.0.0: dependencies: individual "^3.0.0" -fdir@^6.4.4, fdir@^6.4.6: - version "6.4.6" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" - integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" @@ -355,9 +386,9 @@ is-object@^1.0.1: integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + version "2.19.2" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.2.tgz#f95db44639eaae3ac8ea85ae6809ae85ff7e3b81" + integrity sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A== dependencies: dom-walk "^0.1.0" @@ -381,10 +412,10 @@ picocolors@^1.1.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== postcss@^8.5.6: version "8.5.6" @@ -400,33 +431,38 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -rollup@^4.40.0: - version "4.44.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.44.1.tgz#641723932894e7acbe6052aea34b8e72ef8b7c8f" - integrity sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg== +rollup@^4.43.0: + version "4.55.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.55.1.tgz#4ec182828be440648e7ee6520dc35e9f20e05144" + integrity sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.44.1" - "@rollup/rollup-android-arm64" "4.44.1" - "@rollup/rollup-darwin-arm64" "4.44.1" - "@rollup/rollup-darwin-x64" "4.44.1" - "@rollup/rollup-freebsd-arm64" "4.44.1" - "@rollup/rollup-freebsd-x64" "4.44.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.44.1" - "@rollup/rollup-linux-arm-musleabihf" "4.44.1" - "@rollup/rollup-linux-arm64-gnu" "4.44.1" - "@rollup/rollup-linux-arm64-musl" "4.44.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.44.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.44.1" - "@rollup/rollup-linux-riscv64-gnu" "4.44.1" - "@rollup/rollup-linux-riscv64-musl" "4.44.1" - "@rollup/rollup-linux-s390x-gnu" "4.44.1" - "@rollup/rollup-linux-x64-gnu" "4.44.1" - "@rollup/rollup-linux-x64-musl" "4.44.1" - "@rollup/rollup-win32-arm64-msvc" "4.44.1" - "@rollup/rollup-win32-ia32-msvc" "4.44.1" - "@rollup/rollup-win32-x64-msvc" "4.44.1" + "@rollup/rollup-android-arm-eabi" "4.55.1" + "@rollup/rollup-android-arm64" "4.55.1" + "@rollup/rollup-darwin-arm64" "4.55.1" + "@rollup/rollup-darwin-x64" "4.55.1" + "@rollup/rollup-freebsd-arm64" "4.55.1" + "@rollup/rollup-freebsd-x64" "4.55.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.55.1" + "@rollup/rollup-linux-arm-musleabihf" "4.55.1" + "@rollup/rollup-linux-arm64-gnu" "4.55.1" + "@rollup/rollup-linux-arm64-musl" "4.55.1" + "@rollup/rollup-linux-loong64-gnu" "4.55.1" + "@rollup/rollup-linux-loong64-musl" "4.55.1" + "@rollup/rollup-linux-ppc64-gnu" "4.55.1" + "@rollup/rollup-linux-ppc64-musl" "4.55.1" + "@rollup/rollup-linux-riscv64-gnu" "4.55.1" + "@rollup/rollup-linux-riscv64-musl" "4.55.1" + "@rollup/rollup-linux-s390x-gnu" "4.55.1" + "@rollup/rollup-linux-x64-gnu" "4.55.1" + "@rollup/rollup-linux-x64-musl" "4.55.1" + "@rollup/rollup-openbsd-x64" "4.55.1" + "@rollup/rollup-openharmony-arm64" "4.55.1" + "@rollup/rollup-win32-arm64-msvc" "4.55.1" + "@rollup/rollup-win32-ia32-msvc" "4.55.1" + "@rollup/rollup-win32-x64-gnu" "4.55.1" + "@rollup/rollup-win32-x64-msvc" "4.55.1" fsevents "~2.3.2" source-map-js@^1.2.1: @@ -439,13 +475,13 @@ string-template@~0.2.0: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== -tinyglobby@^0.2.14: - version "0.2.14" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" - integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== dependencies: - fdir "^6.4.4" - picomatch "^4.0.2" + fdir "^6.5.0" + picomatch "^4.0.3" virtual-dom@^2.1.1: version "2.1.1" @@ -461,17 +497,17 @@ virtual-dom@^2.1.1: x-is-array "0.1.0" x-is-string "0.1.0" -vite@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-7.0.0.tgz#5675bb4c956dd9da932583628e7758ab09fe761f" - integrity sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g== +vite@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.3.1.tgz#7f6cfe8fb9074138605e822a75d9d30b814d6507" + integrity sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== dependencies: - esbuild "^0.25.0" - fdir "^6.4.6" - picomatch "^4.0.2" + esbuild "^0.27.0" + fdir "^6.5.0" + picomatch "^4.0.3" postcss "^8.5.6" - rollup "^4.40.0" - tinyglobby "^0.2.14" + rollup "^4.43.0" + tinyglobby "^0.2.15" optionalDependencies: fsevents "~2.3.3"