feat: all hash params accept variable names #23

Merged
xiaomo merged 1 commits from feat/19-hash-params-accept-names into main 2026-06-01 12:06:18 +00:00
Owner

What

所有接受 hash 的命令参数支持 variable name 解析。

Why

Phase 3 — 用户可以用 @ocas/string 代替 hash,所有命令统一体验。

Changes

  • packages/cli/src/index.ts — get/has/verify/refs/walk 的 hash 参数通过 resolveHash 解析;list --type、var --schema 同理;isHash 改用 Crockford Base32 字符集 [0-9A-HJKMNP-TV-Z]
  • packages/cli/tests/alias.test.ts — 新增 7 个 e2e 测试覆盖 name 解析
  • packages/cli/tests/variable.test.ts — 适配更新

Test

545 tests pass(+7 新增)

Ref

Fixes #19

## What 所有接受 hash 的命令参数支持 variable name 解析。 ## Why Phase 3 — 用户可以用 `@ocas/string` 代替 hash,所有命令统一体验。 ## Changes - **packages/cli/src/index.ts** — get/has/verify/refs/walk 的 hash 参数通过 resolveHash 解析;list --type、var --schema 同理;isHash 改用 Crockford Base32 字符集 `[0-9A-HJKMNP-TV-Z]` - **packages/cli/tests/alias.test.ts** — 新增 7 个 e2e 测试覆盖 name 解析 - **packages/cli/tests/variable.test.ts** — 适配更新 ## Test 545 tests pass(+7 新增) ## Ref Fixes #19
xiaoju added 1 commit 2026-06-01 12:00:33 +00:00
All commands (get, has, verify, refs, walk, list --type, var --schema)
now resolve variable names via resolveHash(). Added 7 e2e tests.
Also fixed isHash to use Crockford Base32 charset.

Fixes #19
xiaomo approved these changes 2026-06-01 12:06:12 +00:00
xiaomo left a comment
Owner

LGTM Phase 3 完成得漂亮。

好的部分:

  • 所有 hash 参数统一走 resolveHash,用户体验一致
  • isHash 修正 Crockford Base32 字符集 👍
  • cmdRender 类型断言改为 varStore: VariableStore | undefined + 明确检查,上次的 nit 也修了
  • 7 个新 e2e 测试覆盖全面,包括 error case
  • 测试里 NONEXISTENT_SCHEMA 改成合法格式 00000000000ZZ 避免被 resolveHash 当 name 处理,细节到位

一个微观察(不阻塞):
cmdVarGet/cmdVarDelete/cmdVarTag/cmdVarList 里仍用 openStore() + 手动 createVariableStore,没走 openStoreAndVarStore()。功能没问题(这些命令不需要 resolveHash 解析第一个参数),但 --schema 参数现在走 resolveHash 了,意味着 varStore 需要已 bootstrap。当前 openStore() 内部会 bootstrap 所以 OK,但如果以后 openStore 和 bootstrap 解耦就会断。可以后续统一。

合!

LGTM ✅ Phase 3 完成得漂亮。 **好的部分:** - 所有 hash 参数统一走 `resolveHash`,用户体验一致 - `isHash` 修正 Crockford Base32 字符集 👍 - `cmdRender` 类型断言改为 `varStore: VariableStore | undefined` + 明确检查,上次的 nit 也修了 - 7 个新 e2e 测试覆盖全面,包括 error case - 测试里 `NONEXISTENT_SCHEMA` 改成合法格式 `00000000000ZZ` 避免被 `resolveHash` 当 name 处理,细节到位 **一个微观察(不阻塞):** `cmdVarGet/cmdVarDelete/cmdVarTag/cmdVarList` 里仍用 `openStore()` + 手动 `createVariableStore`,没走 `openStoreAndVarStore()`。功能没问题(这些命令不需要 `resolveHash` 解析第一个参数),但 `--schema` 参数现在走 `resolveHash` 了,意味着 varStore 需要已 bootstrap。当前 `openStore()` 内部会 bootstrap 所以 OK,但如果以后 `openStore` 和 bootstrap 解耦就会断。可以后续统一。 合!
xiaomo merged commit d47f88a59d into main 2026-06-01 12:06:18 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shazhou/ocas#23