tudada-sdk-types 0.0.1 → 0.1.2

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.
Files changed (3) hide show
  1. package/README.md +8 -7
  2. package/index.d.ts +127 -4
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -10,22 +10,23 @@ npm install tudada-sdk-types
10
10
 
11
11
  ## Usage
12
12
 
13
- ### With Script Tag (Global)
13
+ ### Global Types (Recommended)
14
14
 
15
- When using TudadaSDK via script tag, the types are automatically available globally:
16
-
17
- ```html
18
- <script src="https://your-cdn-url.com/tudadaGameSDK.js"></script>
19
- ```
15
+ After installing `tudada-sdk-types`, global types are **automatically available** without any import:
20
16
 
21
17
  ```typescript
22
- // Types are available globally
18
+ // No import needed! Types are automatically recognized
23
19
  TudadaSDK.login({
24
20
  success: (res) => console.log('Login code:', res.code),
25
21
  fail: (err) => console.error('Login failed:', err.errMsg),
26
22
  });
23
+
24
+ const systemInfo = TudadaSDK.getSystemInfoSync();
25
+ console.log('Platform:', systemInfo.platform);
27
26
  ```
28
27
 
28
+ This works because the package includes `global.d.ts` which declares the global `TudadaSDK` and `tudadaSDK` variables.
29
+
29
30
  ### Import Types
30
31
 
31
32
  You can also import types directly:
package/index.d.ts CHANGED
@@ -13,6 +13,7 @@
13
13
  * - **UI**: UI 정보 (getMenuButtonBoundingClientRect)
14
14
  * - **Device**: 디바이스 제어 (vibrateShort, vibrateLong, showKeyboard, hideKeyboard, onKeyboardInput, offKeyboardInput, onKeyboardConfirm, offKeyboardConfirm, onKeyboardComplete, offKeyboardComplete)
15
15
  * - **Clipboard**: 클립보드 (setClipboardData, getClipboardData)
16
+ * - **Audio**: 오디오 (createInnerAudioContext)
16
17
  * - **Ad**: 광고 (createRewardedVideoAd)
17
18
  * - **Lifecycle**: 앱 라이프사이클 (onShow, onHide, exitMiniProgram, restartMiniProgram)
18
19
  *
@@ -501,6 +502,9 @@ export interface GetClipboardDataOption {
501
502
  /** 플랫폼 타입 */
502
503
  export type Platform = 'ios' | 'android' | 'windows' | 'mac' | 'devtools';
503
504
 
505
+ /** 접속 환경 */
506
+ export type Environment = 'prod' | 'dev';
507
+
504
508
  /** 안전 영역 정보 */
505
509
  export interface SafeArea {
506
510
  /** 안전 영역 좌상단 X 좌표 */
@@ -530,6 +534,8 @@ export interface SystemInfo {
530
534
  fontSizeSetting: Mock<16>;
531
535
  /** 호스트 앱 정보 */
532
536
  host: { appId: string };
537
+ /** 접속 환경 */
538
+ environment: Environment;
533
539
  /** 디바이스 픽셀 비율 */
534
540
  pixelRatio: number;
535
541
  /** 화면 너비 (px) */
@@ -582,8 +588,8 @@ export interface SystemInfo {
582
588
  bluetoothEnabled: Mock<false>;
583
589
  /** 위치 서비스 활성화 상태 - 호환용 */
584
590
  locationEnabled: Mock<false>;
585
- /** Wi-Fi 활성화 상태 - 호환용 */
586
- wifiEnabled: Mock<false>;
591
+ /** Wi-Fi 활성화 상태 */
592
+ wifiEnabled: boolean;
587
593
  /** 정밀도 낮은 위치 사용 여부 - 호환용 */
588
594
  locationReducedAccuracy?: Mock<false>;
589
595
  }
@@ -640,12 +646,14 @@ export interface AppBaseInfo {
640
646
  fontSizeSetting: Mock<16>;
641
647
  /** 호스트 앱 정보 */
642
648
  host: { appId: string };
649
+ /** 접속 환경 */
650
+ environment: Environment;
643
651
  /** 글꼴 크기 확대 비율 - 호환용 */
644
652
  fontSizeScaleFactor: Mock<1>;
645
653
  /** 사용자 설정 언어 - 호환용 */
646
654
  language: Mock<'KO'>;
647
655
  /** 테마 설정 */
648
- theme?: 'light' | 'dark';
656
+ theme: 'light' | 'dark';
649
657
  }
650
658
 
651
659
  /** getAppBaseInfo 옵션 */
@@ -722,6 +730,8 @@ export interface LoginSuccessResult {
722
730
  errCode?: number;
723
731
  /** 사용자 로그인 코드 */
724
732
  code: string;
733
+ /** 사용자 고유 ID */
734
+ userId: string;
725
735
  }
726
736
 
727
737
  /** 로그인 옵션 */
@@ -796,6 +806,107 @@ export interface GetUserInfoOption {
796
806
  complete?: (res: GetUserInfoSuccessResult | GeneralCallbackResult) => void;
797
807
  }
798
808
 
809
+ // ============================================
810
+ // Audio API 타입
811
+ // ============================================
812
+
813
+ /** InnerAudioContext 에러 결과 */
814
+ export interface InnerAudioContextError {
815
+ /** 에러 코드 */
816
+ errCode: number;
817
+ /** 에러 메시지 */
818
+ errMsg: string;
819
+ }
820
+
821
+ /**
822
+ * InnerAudioContext 인스턴스
823
+ *
824
+ * HTML5 Audio를 래핑하여 WeChat InnerAudioContext 호환 인터페이스를 제공합니다.
825
+ *
826
+ * @see https://developers.weixin.qq.com/minigame/dev/api/media/audio/InnerAudioContext.html
827
+ */
828
+ export interface InnerAudioContext {
829
+ /** 오디오 리소스 URL */
830
+ src: string;
831
+ /** 재생 시작 위치 (초 단위) */
832
+ startTime: number;
833
+ /** 자동 재생 여부 */
834
+ autoplay: boolean;
835
+ /** 반복 재생 여부 */
836
+ loop: boolean;
837
+ /**
838
+ * 볼륨 (0~1)
839
+ *
840
+ * @remarks
841
+ * iOS Safari에서는 HTMLAudioElement.volume이 무시됩니다 (하드웨어 버튼으로만 제어 가능).
842
+ */
843
+ volume: number;
844
+ /** 재생 속도 (0.5~2.0) */
845
+ playbackRate: number;
846
+
847
+ /** 총 재생 시간 (초 단위, 읽기 전용) */
848
+ readonly duration: number;
849
+ /** 현재 재생 위치 (초 단위, 읽기 전용) */
850
+ readonly currentTime: number;
851
+ /** 일시정지 상태 여부 (읽기 전용) */
852
+ readonly paused: boolean;
853
+ /** 버퍼링된 시간 (초 단위, 읽기 전용) */
854
+ readonly buffered: number;
855
+
856
+ /** 재생 */
857
+ play(): void;
858
+ /** 일시정지 */
859
+ pause(): void;
860
+ /** 정지 (재생 위치를 0으로 초기화) */
861
+ stop(): void;
862
+ /** 특정 위치로 이동 (초 단위) */
863
+ seek(position: number): void;
864
+ /** 인스턴스 파괴 및 리소스 해제 */
865
+ destroy(): void;
866
+
867
+ /** 재생 가능 상태 이벤트 */
868
+ onCanplay(callback: () => void): void;
869
+ /** 재생 시작 이벤트 */
870
+ onPlay(callback: () => void): void;
871
+ /** 일시정지 이벤트 */
872
+ onPause(callback: () => void): void;
873
+ /** 정지 이벤트 */
874
+ onStop(callback: () => void): void;
875
+ /** 재생 완료 이벤트 */
876
+ onEnded(callback: () => void): void;
877
+ /** 재생 시간 업데이트 이벤트 */
878
+ onTimeUpdate(callback: () => void): void;
879
+ /** 에러 이벤트 */
880
+ onError(callback: (res: InnerAudioContextError) => void): void;
881
+ /** 버퍼링 대기 이벤트 */
882
+ onWaiting(callback: () => void): void;
883
+ /** 탐색 시작 이벤트 */
884
+ onSeeking(callback: () => void): void;
885
+ /** 탐색 완료 이벤트 */
886
+ onSeeked(callback: () => void): void;
887
+
888
+ /** 재생 가능 상태 이벤트 해제 */
889
+ offCanplay(callback?: () => void): void;
890
+ /** 재생 시작 이벤트 해제 */
891
+ offPlay(callback?: () => void): void;
892
+ /** 일시정지 이벤트 해제 */
893
+ offPause(callback?: () => void): void;
894
+ /** 정지 이벤트 해제 */
895
+ offStop(callback?: () => void): void;
896
+ /** 재생 완료 이벤트 해제 */
897
+ offEnded(callback?: () => void): void;
898
+ /** 재생 시간 업데이트 이벤트 해제 */
899
+ offTimeUpdate(callback?: () => void): void;
900
+ /** 에러 이벤트 해제 */
901
+ offError(callback?: (res: InnerAudioContextError) => void): void;
902
+ /** 버퍼링 대기 이벤트 해제 */
903
+ offWaiting(callback?: () => void): void;
904
+ /** 탐색 시작 이벤트 해제 */
905
+ offSeeking(callback?: () => void): void;
906
+ /** 탐색 완료 이벤트 해제 */
907
+ offSeeked(callback?: () => void): void;
908
+ }
909
+
799
910
  // ============================================
800
911
  // Ad API 타입
801
912
  // ============================================
@@ -1112,6 +1223,18 @@ export interface ITudadaSDK {
1112
1223
  */
1113
1224
  getClipboardData(options?: GetClipboardDataOption): void;
1114
1225
 
1226
+ // ============================================
1227
+ // Audio API
1228
+ // ============================================
1229
+
1230
+ /**
1231
+ * InnerAudioContext 인스턴스 생성
1232
+ *
1233
+ * HTML5 Audio를 래핑한 오디오 재생 객체를 생성합니다.
1234
+ * 매 호출마다 새로운 인스턴스를 반환합니다.
1235
+ */
1236
+ createInnerAudioContext(): InnerAudioContext;
1237
+
1115
1238
  // ============================================
1116
1239
  // Ad API
1117
1240
  // ============================================
@@ -1163,7 +1286,7 @@ export interface ITudadaSDK {
1163
1286
  declare global {
1164
1287
  /** TudadaSDK 글로벌 인스턴스 */
1165
1288
  const TudadaSDK: ITudadaSDK;
1166
- /** TudadaSDK 글로벌 인스턴스 (별칭) */
1289
+ /** TudadaSDK 글로벌 인스턴스 (소문자) */
1167
1290
  const tudadaSDK: ITudadaSDK;
1168
1291
 
1169
1292
  interface Window {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tudada-sdk-types",
3
- "version": "0.0.1",
3
+ "version": "0.1.2",
4
4
  "description": "TypeScript type definitions for TudadaSDK - H5 web game SDK for Tudada platform",
5
5
  "keywords": [
6
6
  "tudada",