From caa79f59223682a7a74d5b832382d2086bb69afe Mon Sep 17 00:00:00 2001 From: AI Engineer Date: Thu, 11 Jun 2026 11:19:59 +0800 Subject: [PATCH] chore: rollback to v1.0.18 By: AICoder --- CHANGELOG.md | 13 - README.md | 103 +- dist/state.js | 1267 ++++++++--------- dist/state.min.js | 2 +- dist/state.min.mjs | 1 + dist/state.mjs | 659 +++++++++ package.json | 3 +- src/component.js | 87 ++ src/core.js | 31 + src/dom-utils.js | 3 + src/dom.badbak.for2exp.js | 366 +++++ src/dom.js | 353 +++++ src/engine.js | 492 ------- src/globals.js | 41 + src/index.js | 48 +- src/observer.js | 78 + src/reactive.js | 123 -- src/utils.js | 98 +- test-results/.last-run.json | 6 +- .../error-context.md | 89 ++ test/all.spec.js | 16 +- test/component.test.js | 14 +- test/core.test.js | 1 + test/dom.test.js | 20 +- test/foundation.test.js | 3 +- test/index.html | 22 +- test/inheritance.test.js | 3 +- test/merging.test.js | 5 +- test/observer.test.js | 7 +- test/priority.test.js | 19 +- test/timing.test.js | 3 +- vite.config.js | 11 +- 32 files changed, 2546 insertions(+), 1441 deletions(-) create mode 100644 dist/state.min.mjs create mode 100644 dist/state.mjs create mode 100644 src/component.js create mode 100644 src/core.js create mode 100644 src/dom-utils.js create mode 100644 src/dom.badbak.for2exp.js create mode 100644 src/dom.js delete mode 100644 src/engine.js create mode 100644 src/globals.js create mode 100644 src/observer.js delete mode 100644 src/reactive.js create mode 100644 test-results/all-modular-unit-tests-and-benchmark/error-context.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c1da7d..8fd4972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,5 @@ # CHANGELOG -## v1.0.19 (2026-06-09) - -### 重大变更 (Pure Synchronous Architecture) -- **架构重组**: 将分散的 8 个文件整合为 3 个高内聚模块 (`utils.js`, `reactive.js`, `engine.js`),大幅减少文件碎片。 -- **全局命名空间平铺**: 彻底移除 `ApigoState` 包装对象,核心 API (`NewState`, `Component`, `$`, `$$` 等) 直接平铺挂载至 `globalThis`,回归最朴素的原生开发范式。 -- **源码脱离 ESM**: 源码层级全面剥离 `import` 和 `export` 语句,配合 IIFE 闭包技术实现内部逻辑封装,确保在 `` 中同步加载的绝对可靠性。 -- **`_refExt` 官方支持**: 将此前作为 Hack 存在的 `_refExt` 机制正式合入引擎核心,支持从外部通过 DOM 节点属性注入额外的响应式上下文。 - -### 优化与修复 -- **测试保真度**: 100% 重构单元测试加载机制,模拟用户真实同步引入环境,确保“所测即所用”。 -- **调试增强**: 引入 `globalThis.__DEBUG` 开关,支持在不污染生产环境的前提下开启详尽的指令解析日志。 -- **模板安全性**: 将自动生成的组件模板改为注入至 `document.head`,防止应用级 `innerHTML` 重置导致模板丢失。 - ## v1.0.17 (2026-06-05) ### 重大变更 (Philosophical Restoration) diff --git a/README.md b/README.md index 5b75426..ef3afa7 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,18 @@ # @apigo.cc/state - AI 逻辑操作说明书 -本框架基于原生 `Proxy` 和 `MutationObserver` 实现数据与 DOM 的原子级同步。采用纯原生、零 ESM、全同步加载架构。 +本框架基于原生 `Proxy` 和 `MutationObserver` 实现数据与 DOM 的原子级同步。本手册仅供 AI 构建、维护及驱动基于此引擎的应用。 --- -## 0. 快速开始 (Quick Start) -直接在 HTML 中引入(无需打包,完全非 ESM 注入): -```html - -``` +## 1. 核心状态逻辑映射 ---- - -## 1. 核心全局 API - -引入后,以下接口直接挂载至 `globalThis`: - -| API | 功能说明 | -| :--- | :--- | -| **`NewState(defaults, getter, setter)`** | 创建响应式状态代理对象。 | -| **`Component.register(name, setup, tpl)`** | 注册自定义组件。支持自动模板合并。 | -| **`RefreshState(node)`** | (别名 `_unsafeRefreshState`) 手动触发特定树的扫描。仅限极致性能调优。 | -| **`SetTranslator(fn)`** | 设置国际化翻译函数。 | -| **`$` / `$$`** | 增强型原生选择器(支持限定作用域)。 | -| **`Util`** | 常用工具集(`clone`, `makeDom`, `getFunctionBody` 等)。 | -| **`Hash` / `LocalStorage`** | 自动同步至 URL 或本地存储的响应式单例。 | -| **`State`** | 框架内置的全局持久化状态单例(含 `exitBlocks` 等控制位)。 | +### `NewState(defaults, getter, setter)` +* **功能**:创建响应式代理。 +* **内部机制**:拦截所有属性读写。若属性值变更,触发所有引用该属性的 DOM 节点的更新任务(异步微任务)。 +* **扩展逻辑**:通过 `getter/setter` 拦截器可实现数据持久化(如同步至 URL Hash 或 LocalStorage)。 +* **原子操作**: + * `obj.__watch(key, cb)`: 建立 key -> callback 的直接依赖。 + * `obj.__unwatch(key, cb)`: 解除依赖。 --- @@ -33,39 +20,61 @@ 指令语法:`$attribute="code"`。作用域默认为全局,组件内优先访问 `node.state`。 -### 结构化映射 (AI 强制规范) -| 指令 | 触发逻辑 | DOM 行为 | 运行约束 | -| :--- | :--- | :--- | :--- | -| **`$if`** | `Boolean(result)` | `true`: 挂载节点; `false`: 移除节点。 | **必须** 作用于 `