@ait-co/devtools 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -2
- package/dist/mock/index.d.ts +35 -1
- package/dist/mock/index.d.ts.map +1 -1
- package/dist/mock/index.js +19 -3
- package/dist/mock/index.js.map +1 -1
- package/dist/panel/index.d.ts.map +1 -1
- package/dist/panel/index.js +778 -3
- package/dist/panel/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
- **60+ SDK API mock** — 인증, 결제, IAP, 위치, 카메라, 스토리지 등
|
|
10
10
|
- **Device API 모드 시스템** — mock / web / prompt 세 가지 모드로 디바이스 API 동작 전환
|
|
11
|
-
- **
|
|
11
|
+
- **Device simulation** — iPhone/Galaxy 프리셋 + orientation 토글로 데스크탑 브라우저에서 모바일 뷰포트 시뮬레이션
|
|
12
|
+
- **Floating DevTools Panel** — 브라우저에서 SDK 상태를 실시간으로 제어 (9개 탭)
|
|
12
13
|
- **모든 번들러 지원** — [unplugin](https://github.com/unjs/unplugin) 기반 Vite, Webpack, Rspack, esbuild, Rollup 통합
|
|
13
14
|
|
|
14
15
|
## 설치
|
|
@@ -244,11 +245,12 @@ mock 모드에서 카메라/앨범 API는 더미 이미지를 반환합니다.
|
|
|
244
245
|
|
|
245
246
|
플러그인 사용 시 진입점 파일에 패널이 자동 주입됩니다. 화면 우하단의 **'AIT' 버튼**을 클릭하면 토글됩니다.
|
|
246
247
|
|
|
247
|
-
###
|
|
248
|
+
### 9개 탭
|
|
248
249
|
|
|
249
250
|
| 탭 | 설명 |
|
|
250
251
|
|---|---|
|
|
251
252
|
| **Environment** | 플랫폼 OS (ios/android), 앱 버전, 환경 (toss/sandbox), 로케일, 네트워크 상태, Safe Area Insets |
|
|
253
|
+
| **Viewport** | 디바이스 프리셋(iPhone/Galaxy) + orientation 토글로 모바일 뷰포트 시뮬레이션 |
|
|
252
254
|
| **Permissions** | camera, photos, geolocation, clipboard, contacts, microphone 권한 상태 제어 (allowed/denied/notDetermined) |
|
|
253
255
|
| **Location** | 위도, 경도, 정확도 설정 |
|
|
254
256
|
| **Device** | API 모드 전환 (mock/web/prompt), 더미 이미지 관리 (추가/제거/기본값/초기화) |
|
|
@@ -259,6 +261,93 @@ mock 모드에서 카메라/앨범 API는 더미 이미지를 반환합니다.
|
|
|
259
261
|
|
|
260
262
|
> **prompt 모드 자동 열림**: prompt 모드로 설정된 API가 호출되면, Panel이 자동으로 Device 탭을 열고 사용자 입력 UI를 표시합니다.
|
|
261
263
|
|
|
264
|
+
## Device simulation (Viewport 탭)
|
|
265
|
+
|
|
266
|
+
데스크탑 브라우저에서 모바일 미니앱을 개발할 때, 실제 디바이스 해상도/safe area/노치/홈 인디케이터/앱인토스 nav bar를 반영해 레이아웃을 검증할 수 있습니다.
|
|
267
|
+
|
|
268
|
+
### 프리셋 (2026)
|
|
269
|
+
|
|
270
|
+
| 카테고리 | 기기 |
|
|
271
|
+
|---|---|
|
|
272
|
+
| Apple | iPhone SE (3rd gen), iPhone 16e, iPhone 17, iPhone Air, iPhone 17 Pro, iPhone 17 Pro Max |
|
|
273
|
+
| Samsung | Galaxy S26, S26+, S26 Ultra, Z Flip7, Z Fold7 (folded / unfolded) |
|
|
274
|
+
| 기타 | Custom (width/height 직접 입력), None (기본) |
|
|
275
|
+
|
|
276
|
+
> iPhone 17 시리즈는 2025-09에 출시되었습니다. Samsung Galaxy S26 시리즈는 2026-04 기준 미출시이므로 현재 S25 기반 값을 담고 있으며, 실제 출시 후 갱신 예정입니다.
|
|
277
|
+
|
|
278
|
+
각 프리셋은 다음 정보를 포함합니다:
|
|
279
|
+
- **CSS viewport** (portrait `width × height`)
|
|
280
|
+
- **DPR** (devicePixelRatio: 2, 3, 3.5 등)
|
|
281
|
+
- **Notch** 종류 (`none` / `notch` / `dynamic-island` / `punch-hole-center`)
|
|
282
|
+
- **OS-level safe area insets** (status bar / 홈 인디케이터 / 노치 회전에 따른 좌우 인셋)
|
|
283
|
+
|
|
284
|
+
### Orientation
|
|
285
|
+
|
|
286
|
+
- **auto** (기본) — Panel이 강제하지 않음. 앱의 `setDeviceOrientation` 호출이 별도 필드(`appOrientation`)에 기록되어 effective orientation 결정에 쓰입니다. 같은 앱이 여러 번 호출해도 매번 정상 반영됩니다.
|
|
287
|
+
- **portrait / landscape** — Panel이 override. 앱의 `setDeviceOrientation` 호출은 무시되고 `console.warn`으로 알림.
|
|
288
|
+
|
|
289
|
+
Landscape로 전환하면:
|
|
290
|
+
- CSS viewport width/height가 swap됩니다.
|
|
291
|
+
- iPhone(notch/Dynamic Island) 프리셋은 safe area의 top이 0이 되고, **Notch side** 토글(left/right, default left)에 따라 한쪽 변에만 인셋이 생깁니다 (실 기기 동작과 일치).
|
|
292
|
+
- Android(punch-hole) 프리셋은 status bar가 top에 유지됩니다.
|
|
293
|
+
|
|
294
|
+
### Frame + 노치 + 홈 인디케이터 + 앱인토스 nav bar
|
|
295
|
+
|
|
296
|
+
**Show frame** 토글을 켜면:
|
|
297
|
+
- 디바이스 베젤을 모사하는 border-radius + box-shadow
|
|
298
|
+
- Notch / Dynamic Island / punch-hole 오버레이 (body 상단에 절대 배치)
|
|
299
|
+
- 홈 인디케이터 pill (iPhone 등 `safeAreaBottom > 0` 디바이스에 한정, body 하단에 배치)
|
|
300
|
+
- 앱 이름은 `aitState.brand.displayName`을 사용 (Environment 탭에서 변경 가능, 자동 갱신)
|
|
301
|
+
- 뒤로가기 버튼은 `__ait:backEvent`를 트리거하고, X 버튼은 `closeView()`를 호출 — 실제 SDK 이벤트 플러밍을 패널에서 직접 검증할 수 있습니다.
|
|
302
|
+
|
|
303
|
+
**Show Apps in Toss nav bar** 토글(기본 on)을 켜면:
|
|
304
|
+
- 토스 호스트의 상단 nav bar(뒤로가기 / 앱 아이콘·이름 / ⋯ / ×)를 48px 높이로 오버레이
|
|
305
|
+
- status bar 바로 아래, safe area top 이후에 배치
|
|
306
|
+
- **중요**: 이 48px는 `env(safe-area-inset-top)` 및 `SafeAreaInsets.get().top`에 **포함되지 않습니다** (공식 SDK 동작). 토스 공식 예제들도 `insets.top + 48` 패턴으로 보정합니다.
|
|
307
|
+
|
|
308
|
+
### 콘솔에서 직접 조작
|
|
309
|
+
|
|
310
|
+
```js
|
|
311
|
+
// iPhone 17 Pro 세로 + 프레임 켜기
|
|
312
|
+
__ait.patch('viewport', { preset: 'iphone-17-pro', orientation: 'auto', frame: true });
|
|
313
|
+
|
|
314
|
+
// Landscape 강제 (앱의 setDeviceOrientation 호출은 무시됨)
|
|
315
|
+
__ait.patch('viewport', { orientation: 'landscape' });
|
|
316
|
+
|
|
317
|
+
// Landscape 시 노치 위치 (iOS 기본 'left')
|
|
318
|
+
__ait.patch('viewport', { landscapeSide: 'right' });
|
|
319
|
+
|
|
320
|
+
// Custom 크기 (1 ≤ value ≤ 4096으로 자동 클램프)
|
|
321
|
+
__ait.patch('viewport', { preset: 'custom', customWidth: 360, customHeight: 740 });
|
|
322
|
+
|
|
323
|
+
// 앱인토스 nav bar 숨기기 (순수 뷰포트만 보고 싶을 때)
|
|
324
|
+
__ait.patch('viewport', { aitNavBar: false });
|
|
325
|
+
|
|
326
|
+
// 해제
|
|
327
|
+
__ait.patch('viewport', { preset: 'none' });
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Status 패널
|
|
331
|
+
|
|
332
|
+
Viewport 탭 하단에 현재 적용된 값을 실시간으로 보여줍니다:
|
|
333
|
+
- **CSS / physical**: `402×874@3x | 1206×2622 portrait (auto)`
|
|
334
|
+
- **Safe area**: `T59 R0 B34 L0`
|
|
335
|
+
- **AIT nav bar**: `48px (excl. SafeArea)`
|
|
336
|
+
|
|
337
|
+
### 영속성 + 기술 세부
|
|
338
|
+
|
|
339
|
+
- 상태는 sessionStorage(`__ait_viewport`)에 저장되어 페이지 reload 시 복원됩니다.
|
|
340
|
+
- 프리셋 선택 시 `aitState.safeAreaInsets`도 자동 업데이트 → SDK의 `SafeAreaInsets.get()` / `.subscribe()`가 따라갑니다.
|
|
341
|
+
- 뷰포트는 `document.body`에 `max-width`/`max-height` + `margin:auto`로 적용됩니다. iframe을 쓰지 않으므로 앱 JS/CSS가 그대로 실행되고, 콘솔·DevTools도 정상 접근 가능합니다.
|
|
342
|
+
- body에 `isolation: isolate`를 적용해 노치/nav bar/홈 인디케이터의 z-index가 stacking context 밖으로 새지 않습니다 (DevTools 패널이 그 위에 떠 있음).
|
|
343
|
+
- 패널을 동적으로 제거하고 싶다면 `disposeViewport()`를 export로 제공합니다.
|
|
344
|
+
- User-Agent spoofing / touch event emulation / network throttling은 하지 않습니다 (Chrome DevTools가 이미 제공).
|
|
345
|
+
|
|
346
|
+
### Known limitations
|
|
347
|
+
|
|
348
|
+
- **Body가 스크롤 컨테이너가 됩니다** — 뷰포트 활성화 중에는 스크롤이 `window`가 아닌 `document.body`에서 발생합니다. `window.addEventListener('scroll', ...)`나 root에 붙은 `IntersectionObserver`는 실 디바이스와 다른 동작을 보일 수 있습니다. 미니앱 코드에서 스크롤을 다룬다면 `body`도 함께 검증하세요.
|
|
349
|
+
- **추정 프리셋(`(est)` 라벨)** — iPhone Air, Galaxy S26 시리즈는 미출시 또는 공식 스펙 미공개. 출시 후 갱신 예정. QA 시 절대값으로 신뢰하지 마세요.
|
|
350
|
+
|
|
262
351
|
## `window.__ait` 콘솔 API
|
|
263
352
|
|
|
264
353
|
브라우저 콘솔에서 `window.__ait`(또는 `__ait`)로 mock 상태를 직접 제어할 수 있습니다:
|
package/dist/mock/index.d.ts
CHANGED
|
@@ -178,6 +178,39 @@ interface SafeAreaInsets$1 {
|
|
|
178
178
|
left: number;
|
|
179
179
|
right: number;
|
|
180
180
|
}
|
|
181
|
+
type ViewportPresetId = 'none' | 'iphone-se-3' | 'iphone-16e' | 'iphone-17' | 'iphone-air' | 'iphone-17-pro' | 'iphone-17-pro-max' | 'galaxy-s26' | 'galaxy-s26-plus' | 'galaxy-s26-ultra' | 'galaxy-z-flip7' | 'galaxy-z-fold7-folded' | 'galaxy-z-fold7-unfolded' | 'custom';
|
|
182
|
+
/**
|
|
183
|
+
* Panel의 orientation 선택.
|
|
184
|
+
* - `auto` — Panel이 강제하지 않음. 앱의 SDK `setDeviceOrientation` 호출을 그대로 따름.
|
|
185
|
+
* 호출 값은 별도로 `viewport.appOrientation`에 기록되며, `viewport.orientation`은
|
|
186
|
+
* 계속 `auto`로 유지된다 — 같은 앱이 여러 번 호출해도 매번 정상 반영됨.
|
|
187
|
+
* - `portrait` / `landscape` — Panel이 강제. SDK 호출은 무시됨 (로그만 남김).
|
|
188
|
+
*/
|
|
189
|
+
type ViewportOrientation = 'auto' | 'portrait' | 'landscape';
|
|
190
|
+
/**
|
|
191
|
+
* `setDeviceOrientation`이 한 번도 호출되지 않은 초기 상태는 `null`.
|
|
192
|
+
* SDK가 받을 수 있는 값과 일치하므로 portrait/landscape만 허용.
|
|
193
|
+
*/
|
|
194
|
+
type AppOrientation = 'portrait' | 'landscape' | null;
|
|
195
|
+
/** Landscape 시 노치/Dynamic Island가 어느 쪽으로 가는지. iOS 기본은 landscape-left. */
|
|
196
|
+
type LandscapeSide = 'left' | 'right';
|
|
197
|
+
interface ViewportState {
|
|
198
|
+
preset: ViewportPresetId;
|
|
199
|
+
/** User-controlled orientation. `auto`이면 `appOrientation`을 따른다. */
|
|
200
|
+
orientation: ViewportOrientation;
|
|
201
|
+
/**
|
|
202
|
+
* SDK가 마지막으로 요청한 orientation. `setDeviceOrientation` 호출 시 갱신.
|
|
203
|
+
* `orientation === 'auto'`일 때 실제 화면 방향 결정에 쓰인다. 초기값 `null`.
|
|
204
|
+
*/
|
|
205
|
+
appOrientation: AppOrientation;
|
|
206
|
+
/** Landscape 시 노치/Dynamic Island가 어느 쪽으로 갈지. */
|
|
207
|
+
landscapeSide: LandscapeSide;
|
|
208
|
+
customWidth: number;
|
|
209
|
+
customHeight: number;
|
|
210
|
+
frame: boolean;
|
|
211
|
+
/** Render the Apps in Toss host nav bar (back / app name / ··· / close) inside the frame. */
|
|
212
|
+
aitNavBar: boolean;
|
|
213
|
+
}
|
|
181
214
|
//#endregion
|
|
182
215
|
//#region src/mock/device/camera.d.ts
|
|
183
216
|
/**
|
|
@@ -448,7 +481,7 @@ declare function getTossShareLink(path: string, _ogImageUrl?: string): Promise<s
|
|
|
448
481
|
declare function setIosSwipeGestureEnabled(_options: {
|
|
449
482
|
isEnabled: boolean;
|
|
450
483
|
}): Promise<void>;
|
|
451
|
-
declare function setDeviceOrientation(
|
|
484
|
+
declare function setDeviceOrientation(options: {
|
|
452
485
|
type: 'portrait' | 'landscape';
|
|
453
486
|
}): Promise<void>;
|
|
454
487
|
declare function setScreenAwakeMode(options: {
|
|
@@ -643,6 +676,7 @@ interface AitDevtoolsState {
|
|
|
643
676
|
deviceModes: DeviceModes;
|
|
644
677
|
mockData: MockData;
|
|
645
678
|
panelEditable: boolean;
|
|
679
|
+
viewport: ViewportState;
|
|
646
680
|
}
|
|
647
681
|
declare class AitStateManager {
|
|
648
682
|
private _state;
|
package/dist/mock/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/mock/ads/index.ts","../../src/mock/analytics/index.ts","../../src/mock/auth/index.ts","../../src/mock/device/_helpers.ts","../../src/mock/types.ts","../../src/mock/device/camera.ts","../../src/mock/device/clipboard.ts","../../src/mock/device/contacts.ts","../../src/mock/device/haptic.ts","../../src/mock/device/location.ts","../../src/mock/device/storage.ts","../../src/mock/game/index.ts","../../src/mock/iap/index.ts","../../src/mock/navigation/index.ts","../../src/mock/partner/index.ts","../../src/mock/permissions.ts","../../src/mock/state.ts"],"mappings":";;AAgBA;;cAAa,WAAA;;IAGP,OAAA,GAAU,IAAA;MAAQ,IAAA;MAAc,IAAA;IAAA;IAChC,OAAA,GAAU,KAAA,EAAO,KAAA;IACjB,OAAA;MAAY,SAAA;IAAA;EAAA;;;;IAYZ,OAAA,GAAU,IAAA;MAAQ,IAAA;MAAc,IAAA;IAAA;IAChC,OAAA,GAAU,KAAA,EAAO,KAAA;IACjB,OAAA;MAAY,SAAA;IAAA;EAAA;;;;IAqBK,SAAA;EAAA,MAAuB,OAAA;;;;cAMjC,OAAA;;;;gCAKU,MAAA,WAAmB,WAAA,EAAW,QAAA;;;sCAY9B,MAAA,WAAmB,WAAA,EAAW,QAAA;;;;;;;;;;;;cAkBxC,gBAAA,IAAgB,IAAA;EAEzB,OAAA,GAAU,IAAA;IAAQ,IAAA;IAAc,IAAA;EAAA;EAChC,OAAA,GAAU,KAAA,EAAO,KAAA;EACjB,OAAA;IAAY,SAAA;EAAA;AAAA;;;cAUH,gBAAA,IAAgB,IAAA;EAEzB,OAAA,GAAU,IAAA;IAAQ,IAAA;IAAc,IAAA;EAAA;EAChC,OAAA,GAAU,KAAA,EAAO,KAAA;EACjB,OAAA;IAAY,SAAA;EAAA;AAAA;;;;;;AAnGhB;;KCVK,WAAA;AAAA,KACA,YAAA;EAAiB,QAAA;AAAA,IAAsB,MAAA,SAAe,WAAA;AAAA,cAI9C,SAAA;oBACO,YAAA,KAAe,OAAA;wBAIX,YAAA,KAAe,OAAA;mBAIpB,YAAA,KAAe,OAAA;AAAA;AAAA,iBAMZ,QAAA,CAAS,MAAA;EAC7B,QAAA;EACA,QAAA;EACA,MAAA,EAAQ,MAAA,SAAe,WAAA;AAAA,IACrB,OAAA;;;;ADdJ;;iBEVsB,QAAA,CAAA,GAAY,OAAA;EAChC,iBAAA;EACA,QAAA;AAAA;AAAA,iBAQoB,+BAAA,CAAA,GAAmC,OAAA;AAAA,iBAInC,iBAAA,CAAA,GAAqB,OAAA;EACvC,IAAA;EAAc,IAAA;AAAA;AAAA,UAMD,4BAAA;EACf,IAAA;AAAA;AAAA,iBAGoB,sBAAA,CAAuB,OAAA,EAAS,4BAAA,GAA+B,OAAA;;;;AFfrF;;iBGyBgB,2BAAA,CAAA;;;KCzCJ,SAAA;AAAA,KAEA,UAAA;AAAA,KACA,sBAAA;AAAA,KACA,aAAA;AAAA,KACA,gBAAA;AAAA,KACA,cAAA;AAAA,KAOA,kBAAA;AAAA,KAYA,aAAA;AAAA,UAEK,WAAA;EACf,MAAA,EAAQ,aAAA;EACR,MAAA,EAAQ,aAAA;EACR,QAAA,EAAU,aAAA;EACV,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,QAAA;EACf,MAAA;EACA,aAAA;AAAA;AAAA,UAGe,cAAA;EACf,QAAA;EACA,SAAA;EACA,QAAA;EACA,QAAA;EACA,gBAAA;EACA,OAAA;AAAA;AAAA,UAGe,YAAA;EACf,MAAA,EAAQ,cAAA;EACR,SAAA;EACA,cAAA;AAAA;AAAA,UAGe,WAAA;EACf,IAAA;EACA,WAAA;AAAA;AAAA,UAGe,cAAA;EACf,GAAA;EACA,IAAA;EACA,WAAA;EACA,aAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AAAA;AAAA,KAGU,aAAA;AAAA,UASK,iBAAA;EACf,SAAA;EACA,IAAA;EACA,MAAA,EAAQ,MAAA;AAAA;AAAA,UAGO,gBAAA;EACf,GAAA;EACA,MAAA;EACA,IAAA;EACA,KAAA;AAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/mock/ads/index.ts","../../src/mock/analytics/index.ts","../../src/mock/auth/index.ts","../../src/mock/device/_helpers.ts","../../src/mock/types.ts","../../src/mock/device/camera.ts","../../src/mock/device/clipboard.ts","../../src/mock/device/contacts.ts","../../src/mock/device/haptic.ts","../../src/mock/device/location.ts","../../src/mock/device/storage.ts","../../src/mock/game/index.ts","../../src/mock/iap/index.ts","../../src/mock/navigation/index.ts","../../src/mock/partner/index.ts","../../src/mock/permissions.ts","../../src/mock/state.ts"],"mappings":"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"}
|
package/dist/mock/index.js
CHANGED
|
@@ -111,7 +111,17 @@ const DEFAULT_STATE = {
|
|
|
111
111
|
images: [],
|
|
112
112
|
clipboardText: ""
|
|
113
113
|
},
|
|
114
|
-
panelEditable: true
|
|
114
|
+
panelEditable: true,
|
|
115
|
+
viewport: {
|
|
116
|
+
preset: "none",
|
|
117
|
+
orientation: "auto",
|
|
118
|
+
appOrientation: null,
|
|
119
|
+
landscapeSide: "left",
|
|
120
|
+
customWidth: 402,
|
|
121
|
+
customHeight: 874,
|
|
122
|
+
frame: false,
|
|
123
|
+
aitNavBar: true
|
|
124
|
+
}
|
|
115
125
|
};
|
|
116
126
|
function generateDeviceId() {
|
|
117
127
|
const stored = localStorage.getItem("__ait_device_id");
|
|
@@ -968,8 +978,14 @@ async function getTossShareLink(path, _ogImageUrl) {
|
|
|
968
978
|
async function setIosSwipeGestureEnabled(_options) {
|
|
969
979
|
console.log("[@ait-co/devtools] setIosSwipeGestureEnabled:", _options.isEnabled);
|
|
970
980
|
}
|
|
971
|
-
async function setDeviceOrientation(
|
|
972
|
-
|
|
981
|
+
async function setDeviceOrientation(options) {
|
|
982
|
+
const current = aitState.state.viewport.orientation;
|
|
983
|
+
if (current === "auto") {
|
|
984
|
+
console.log("[@ait-co/devtools] setDeviceOrientation:", options.type);
|
|
985
|
+
aitState.patch("viewport", { appOrientation: options.type });
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
console.warn(`[@ait-co/devtools] setDeviceOrientation(${options.type}) ignored — Panel is forcing "${current}". Change the Viewport tab's orientation to "auto" to let the app control rotation.`);
|
|
973
989
|
}
|
|
974
990
|
async function setScreenAwakeMode(options) {
|
|
975
991
|
console.log("[@ait-co/devtools] setScreenAwakeMode:", options.enabled);
|