Changelog
All notable changes to this project will be documented in this file. Packages (@resource-fallback/core, @resource-fallback/vite-plugin, @resource-fallback/webpack-plugin) are released with the same version number.
0.2.0 (2026-06-15)
Bug Fixes
- core:
installWebpackAdapter返回{ dispose() }支持清理内部轮询定时器,修复测试环境定时器泄漏 (b29a9e9) - webpack-plugin: 加固
html-webpack-plugin检测逻辑(fallback togetHooks)(b29a9e9)
0.1.5 (2026-05-24)
Bug Fixes
- core: 熔断器从全局单例改为每条规则独立持有——不同规则可配置不同的
threshold/cooldown,规则 A 的失败不会影响规则 B 的熔断状态 - core: 修复
match与urls不一致时 fallback 路径解析错误:当 URL 通过match命中但不在urls列表中时,urlIndex从-1开始而非0 - core:
resolve()/resolveBuiltUrl()内部使用 per-rule breaker 的isOpen跳过已熔断 host - core:
recordFailure/recordSuccess通过findPrepared查找匹配规则后再操作对应 breaker - core: 运行时增加
dispose()方法,支持卸载所有页面监听器并清理window.__RF__全局状态 - core:
installViteAdapter返回{ dispose() },移除vite:preloadError事件监听 - core:
installObserver返回{ dispose() },移除error/load事件监听(capture 阶段) - core:
ensureGlobal()在非浏览器环境(SSR / Worker)返回null而非抛出异常 - core: JSON 序列化时将
<转义为\x3c,防止注入的</script>提前闭合 script 标签 - core:
joinAssetPrefix从 vite-plugin / webpack-plugin 提升为 core 包导出函数,统一处理 prefix 与 filename 的斜杠拼接 - core: kill-switch 全局变量严格化:仅接受
true/1/'1'/'true'四种值触发禁用 - core: kill-switch cookie 匹配从
indexOf前缀匹配改为精确相等 - core: 移除
circuit-opengiveup reason——ResolveResult类型简化为'rules-exhausted' | 'no-match' - vite-plugin: 改用 async
readFile/writeFile替换同步文件操作 - vite-plugin:
base从config钩子改为configResolved获取 - vite-plugin:
joinAssetPrefix改为从@resource-fallback/core导入 - vite-plugin:
es-module-lexer的init提取为模块级lexerReady变量 - vite-plugin:
writeBundle增加outDir空值守卫 - webpack-plugin:
joinAssetPrefix改为从@resource-fallback/core导入
0.1.4 (2026-05-18)
Bug Fixes
- core: SW resolver 与页面侧 resolver 共享同一套
createResolver实现 - core: SW manifest 中的 asset 查找从
Array.some()改为Set查找(buildManifestLookupSets)+WeakMap缓存 - core:
fetchWithFallback支持外部传入resolver,SW entry 复用共享实例 - core: SW 默认文件名从
sw.js重命名为rf-sw.js - core: SW manifest 精简:仅保留
owner === 'sw'和type === 'style'的 asset - core:
createSwResolver从fetchWithFallback中提取为独立函数 - core: SW adapter 增加
unregisterStaleWorkers - core: SW adapter 注册时设置
updateViaCache: 'none'并主动调用registration.update()
0.1.3 (2026-05-12)
Bug Fixes
- core: 修复 CORS 探测请求的 credentials 问题——显式
credentials: 'omit' - core: 引入
corsVerifiedHosts(原noCorsHosts语义反转) - core:
fallbackOnOpaque选项 JSDoc 补充完整说明
0.1.2 (2026-05-06)
Bug Fixes
- core: 修复
fallbackOnOpaque对 fallback CDN 的误判——仅在主 CDN 上启用 opaque 检查 - core: opaque 响应不再重试——直接将
attempt置为Infinity进入 fallback
0.1.1 (2026-04-28)
Bug Fixes
- core: CORS 探测新增 host 级缓存(
swNoCorsHosts) - core:
fallbackOnOpaquefetcher 先尝试cors模式获取可检查状态码,失败时降级为no-cors
0.1.0 (2026-04-20)
Features
- core: 新增 Hybrid Service Worker 资源回退能力——manifest 驱动 SW 拦截非脚本资源
- vite-plugin:
generateBundle生成rf-sw.js资产文件和 manifest - vite-plugin:
renderBuiltUrl回调重写 matched URLs 为__RF__.url() - webpack-plugin:
processAssets生成rf-sw.js+ manifest - webpack-plugin:
RuntimeModule注入 SW 预加载脚本
0.0.4 (2026-04-10)
Bug Fixes
- core: 修复异步模块中包含 CSS 时丢失依赖关系的问题
- vite-plugin:
writeBundle钩子改用es-module-lexer解析动态 import
0.0.3 (2026-04-05)
Bug Fixes
- core: 修复资源路径拼接问题——
swap()改为使用joinAssetPrefix - vite-plugin: 修复加载异步模块时强制添加 match 内 URL 的问题
0.0.2 (2026-03-28)
Features
- core: ES5 IIFE 运行时:resolver、retry、circuit-breaker、observer、kill-switch
- core:
defineConfig类型安全配置 +getRuntimeCodeIIFE 生成 +buildInjectedTags - vite-plugin: Vite 4+ 插件——
experimental.renderBuiltUrl接入__RF__.url() - webpack-plugin: Webpack 5+ 插件——
RuntimeModule注入 patch__webpack_require__.l