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.
- package/README.md +8 -7
- package/index.d.ts +127 -4
- 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
|
-
###
|
|
13
|
+
### Global Types (Recommended)
|
|
14
14
|
|
|
15
|
-
|
|
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
|
|
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:
|
|
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
|
|
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 {
|