Skip to content

feat: resolveIncludesAsync追加 & include処理をWikidot互換イテレーティブ方式に書き換え#36

Merged
r74tech merged 2 commits into
developfrom
feature/resolve-includes-async
Mar 17, 2026
Merged

feat: resolveIncludesAsync追加 & include処理をWikidot互換イテレーティブ方式に書き換え#36
r74tech merged 2 commits into
developfrom
feature/resolve-includes-async

Conversation

@r74tech
Copy link
Copy Markdown
Owner

@r74tech r74tech commented Mar 17, 2026

Summary

  • resolveIncludesAsync を追加(非同期fetcher対応)
  • include処理をDFS再帰方式からWikidot互換のイテレーティブ(do-while)方式に書き換え

Changes

1. resolveIncludesAsync 追加

  • AsyncIncludeFetcher 型と resolveIncludesAsync 関数を追加
  • Cloudflare Workers + D1 等の非同期DB環境で、ページを1つずつ非同期取得しながらinclude展開が可能に

2. Wikidot互換イテレーティブ方式

  • 各イテレーションでソース全体の全includeを1段だけ一括置換
  • 変化なし or maxIterations 到達で停止(Wikidotの do-while + level<5 と同等)
  • trace 配列(循環検出)を削除 — maxIterations + 変化なし検出で停止性を保証
  • inc-loopパターン(同一ページを異なる変数で再帰的にinclude)が動作可能に

3. API変更

BREAKING CHANGE

  • ResolveIncludesOptions.maxDepth を削除 → maxIterations に置換(デフォルト: 10)
  • 循環includeのエラー文言("Circular include detected")を廃止

追加

  • AsyncIncludeFetcher
  • resolveIncludesAsync 関数

Test plan

  • 同期版テスト 26件通過
  • 非同期版テスト 20件通過
  • 全体テスト 1158件通過
  • lint / format / typecheck 通過
  • 同期版・非同期版の結果一致テスト
  • 相互循環include → maxIterationsで停止
  • 自己参照include → 変化なし検出で即停止
  • 同一ページ・異なる変数のキャッシュ動作テスト

r74tech added 2 commits March 17, 2026 16:39
非同期fetcherに対応したinclude展開関数を追加。
Cloudflare Workers + D1等の非同期DB環境で、
ページを1つずつ非同期取得しながらinclude展開が可能になる。

- AsyncIncludeFetcher型を追加
- resolveIncludesAsync関数を追加(while + RegExp.exec + awaitで実装)
- 既存の同期API (resolveIncludes, IncludeFetcher) は変更なし
- テスト17件追加(同期版との結果一致、循環検出、maxDepth等)
DFS再帰方式からWikidotと同じdo-whileイテレーティブ方式に変更。
各イテレーションでソース全体の全includeを1段だけ一括置換し、
変化がなくなるかmaxIterationsに到達するまで繰り返す。

- expandText/expandTextAsync再帰を廃止
- expandIterative/expandIterativeAsync(forループ方式)に置換
- trace配列(循環検出)を削除(maxIterations + 変化なし検出で停止)
- ResolveIncludesOptions: maxDepth削除 → maxIterations追加(デフォルト10)
- inc-loopパターン(同一ページ・異なる変数での再帰include)が動作可能に

BREAKING CHANGE: maxDepthオプション削除、循環includeのエラー文言廃止
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
wdpr-demo-v1-files c0084e9 Commit Preview URL

Branch Preview URL
Mar 17 2026, 08:40 AM

@r74tech r74tech merged commit b9c5fa6 into develop Mar 17, 2026
9 checks passed
@r74tech r74tech deleted the feature/resolve-includes-async branch March 17, 2026 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant