Skip to content

feat(mock): 3.0 bridge-level 디스패처로 역전 — full-barrel alias → utils/web subpath (Option B, GA flip 후) #376

@DaveDev42

Description

@DaveDev42

배경

devtools #371(탐색, 결정 코멘트)에서 실 @apps-in-toss/webview-bridge@3.0.0-beta spec에 대고 bridge-level 디스패처를 프로토타입해 측정했다. 결론: 두 옵션(A: fake global 주입 / B: utils/web subpath alias) 다 기술적으로 성립하고 ~86 손제작 mock 함수를 디스패처 1 + 핸들러 N으로 줄이나, 착수는 web-framework 3.0 GA flip(#370) 직후가 자연스러운 시점이다 — 비공식 seam(raw global + types-only spec)이 GA 라인에 고정되기 전엔 마이너마다 깨질 risk가 최대이고, transitive 패키지(@apps-in-toss/webview-bridge)를 직접 의존으로 승격하는 비용이 GA 전엔 정당화가 약하기 때문.

이 이슈는 #371이 제안한 후속 구현 작업이다. blocked by #370 (GA flip) — GA flip 완료 후 착수한다.

Scope (Option B 권고)

GA flip(#370) 이후, web-framework public-API 대체(full-barrel alias)를 **bridge-level 주입(Option B: @apps-in-toss/webview-bridge/utils/web subpath alias)**으로 역전한다:

  • (a) @apps-in-toss/webview-bridge를 직접 의존으로 추가.
  • (b) spec Map(AsyncMethodsMap/EventMethodsMap/ConstantsMap)으로 타이핑한 디스패처 3함수(callAsyncMethod/callEventMethod/getConstant) 구현 + 단일 utils/web Assert로 __typecheck.ts의 ~80 per-symbol Assert 대체.
  • (c) 디스패처에 observe 로깅 단일화 + 미등록 메서드 throw(현 proxy.ts 트립와이어 승계).
  • (d) 특수케이스 재배선 — device web/prompt fidelity 핸들러, panel state→__appsInTossConstants 패치 reactivity, 이벤트 트리거(callEventMethod 핸들러) 배선. unplugin alias 자산은 현 full-barrel에서 재사용.

Acceptance

  • sdk-example dog-food에서 전 SDK 경로 무에러.
  • e2e fixture green 유지.
  • __typecheck.ts의 per-symbol Assert가 단일 utils/web Assert로 대체되되 타입 커버리지 동등.
  • #371이 식별한 특수케이스(device fidelity·constants reactivity·이벤트 트리거·proxy 트립와이어)가 핸들러로 이동되고 회귀 없음.

참고

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestroadmapharness roadmap 작업 항목 (Project #1)

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions