craft-native 0.0.37
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/LICENSE.md +21 -0
- package/README.md +424 -0
- package/bin/cli.ts +937 -0
- package/dist/api/android-advanced.d.ts +737 -0
- package/dist/api/android-advanced.d.ts.map +1 -0
- package/dist/api/app.d.ts +432 -0
- package/dist/api/app.d.ts.map +1 -0
- package/dist/api/clipboard.d.ts +85 -0
- package/dist/api/clipboard.d.ts.map +1 -0
- package/dist/api/crypto.d.ts +79 -0
- package/dist/api/crypto.d.ts.map +1 -0
- package/dist/api/db.d.ts +427 -0
- package/dist/api/db.d.ts.map +1 -0
- package/dist/api/dialog.d.ts +141 -0
- package/dist/api/dialog.d.ts.map +1 -0
- package/dist/api/fs.d.ts +131 -0
- package/dist/api/fs.d.ts.map +1 -0
- package/dist/api/http.d.ts +196 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/index.d.ts +38 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/ios-advanced.d.ts +833 -0
- package/dist/api/ios-advanced.d.ts.map +1 -0
- package/dist/api/macos-advanced.d.ts +721 -0
- package/dist/api/macos-advanced.d.ts.map +1 -0
- package/dist/api/media.d.ts +233 -0
- package/dist/api/media.d.ts.map +1 -0
- package/dist/api/mobile.d.ts +658 -0
- package/dist/api/mobile.d.ts.map +1 -0
- package/dist/api/process.d.ts +168 -0
- package/dist/api/process.d.ts.map +1 -0
- package/dist/api/sidebar.d.ts +125 -0
- package/dist/api/sidebar.d.ts.map +1 -0
- package/dist/api/tray.d.ts +410 -0
- package/dist/api/tray.d.ts.map +1 -0
- package/dist/api/window.d.ts +462 -0
- package/dist/api/window.d.ts.map +1 -0
- package/dist/api/windows-advanced.d.ts +719 -0
- package/dist/api/windows-advanced.d.ts.map +1 -0
- package/dist/assets/index.d.ts +69 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/binary-resolver.d.ts +39 -0
- package/dist/binary-resolver.d.ts.map +1 -0
- package/dist/bridge/android.d.ts +574 -0
- package/dist/bridge/android.d.ts.map +1 -0
- package/dist/bridge/core.d.ts +474 -0
- package/dist/bridge/core.d.ts.map +1 -0
- package/dist/bridge/ids.d.ts +18 -0
- package/dist/bridge/ids.d.ts.map +1 -0
- package/dist/bridge/ios.d.ts +528 -0
- package/dist/bridge/ios.d.ts.map +1 -0
- package/dist/bridge/webkit-pending.d.ts +50 -0
- package/dist/bridge/webkit-pending.d.ts.map +1 -0
- package/dist/build/bundle-optimizer.d.ts +69 -0
- package/dist/build/bundle-optimizer.d.ts.map +1 -0
- package/dist/components/index.d.ts +719 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/native.d.ts +728 -0
- package/dist/components/native.d.ts.map +1 -0
- package/dist/components/sidebar.d.ts +458 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/dev/devtools.d.ts +118 -0
- package/dist/dev/devtools.d.ts.map +1 -0
- package/dist/dev/error-overlay.d.ts +73 -0
- package/dist/dev/error-overlay.d.ts.map +1 -0
- package/dist/dev/hot-reload.d.ts +127 -0
- package/dist/dev/hot-reload.d.ts.map +1 -0
- package/dist/index.cjs +10253 -0
- package/dist/index.d.cts +59 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10240 -0
- package/dist/logging/index.d.ts +152 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/optimizations/index.d.ts +232 -0
- package/dist/optimizations/index.d.ts.map +1 -0
- package/dist/package.d.ts +90 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/performance/runtime.d.ts +230 -0
- package/dist/performance/runtime.d.ts.map +1 -0
- package/dist/performance/startup.d.ts +223 -0
- package/dist/performance/startup.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +114 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/security/index.d.ts +268 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/signing/index.d.ts +104 -0
- package/dist/signing/index.d.ts.map +1 -0
- package/dist/styles/headwind.d.ts +222 -0
- package/dist/styles/headwind.d.ts.map +1 -0
- package/dist/styles/index.d.ts +31 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/sidebar-templates.d.ts +77 -0
- package/dist/styles/sidebar-templates.d.ts.map +1 -0
- package/dist/styles/sidebars.d.ts +194 -0
- package/dist/styles/sidebars.d.ts.map +1 -0
- package/dist/types.d.ts +1555 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/updater/index.d.ts +164 -0
- package/dist/updater/index.d.ts.map +1 -0
- package/dist/utils/audio.d.ts +40 -0
- package/dist/utils/audio.d.ts.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/native.d.ts +27 -0
- package/dist/utils/native.d.ts.map +1 -0
- package/dist/utils/react.d.ts +157 -0
- package/dist/utils/react.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +35 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/svelte.d.ts +187 -0
- package/dist/utils/svelte.d.ts.map +1 -0
- package/dist/utils/timer.d.ts +57 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/vue.d.ts +157 -0
- package/dist/utils/vue.d.ts.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Craft Mobile API
|
|
3
|
+
* @description Unified cross-platform mobile API for iOS and Android.
|
|
4
|
+
* Provides consistent access to device features, sensors, and native capabilities.
|
|
5
|
+
* @module @craft-native/api/mobile
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { device, haptics, permissions, camera, biometrics, location, share } from '@craft-native/api/mobile'
|
|
10
|
+
*
|
|
11
|
+
* // Get device info
|
|
12
|
+
* const info = await device.getInfo()
|
|
13
|
+
* console.log(`Running on ${info.platform} ${info.osVersion}`)
|
|
14
|
+
*
|
|
15
|
+
* // Request permissions
|
|
16
|
+
* const granted = await permissions.request('camera')
|
|
17
|
+
*
|
|
18
|
+
* // Trigger haptic feedback
|
|
19
|
+
* await haptics.impact('medium')
|
|
20
|
+
*
|
|
21
|
+
* // Take a photo
|
|
22
|
+
* const photo = await camera.takePicture()
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Internal: return a stable device id for the web fallback. Persists in
|
|
27
|
+
* localStorage so two `device.getInfo()` calls in the same session (and
|
|
28
|
+
* across reloads) report the *same* id. The previous implementation
|
|
29
|
+
* generated a fresh `Math.random` id every call, which made
|
|
30
|
+
* `deviceId`-keyed analytics impossible to tie back to a single browser.
|
|
31
|
+
*/
|
|
32
|
+
export declare function _webFallbackDeviceId(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Test-only hook to clear the cached device id.
|
|
35
|
+
*/
|
|
36
|
+
export declare function _resetWebFallbackDeviceIdForTests(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Device information.
|
|
39
|
+
*
|
|
40
|
+
* Optional sub-fields (`screen`, `battery`, `network`) reflect what the
|
|
41
|
+
* native side might omit — e.g. desktop hosts have no battery, headless
|
|
42
|
+
* environments have no screen. Consumers must defensively check before
|
|
43
|
+
* accessing nested properties.
|
|
44
|
+
*/
|
|
45
|
+
export interface DeviceInfo {
|
|
46
|
+
/** Platform: 'ios' | 'android' | 'macos' | 'windows' | 'linux' */
|
|
47
|
+
platform: 'ios' | 'android' | 'macos' | 'windows' | 'linux';
|
|
48
|
+
/** OS version string (e.g., "17.0", "14") */
|
|
49
|
+
osVersion: string;
|
|
50
|
+
/** Device model (e.g., "iPhone 15 Pro", "Pixel 8") */
|
|
51
|
+
model: string;
|
|
52
|
+
/** Device manufacturer */
|
|
53
|
+
manufacturer: string;
|
|
54
|
+
/** Unique device identifier */
|
|
55
|
+
deviceId: string;
|
|
56
|
+
/** Whether device is a tablet */
|
|
57
|
+
isTablet: boolean;
|
|
58
|
+
/** Screen dimensions (omitted by headless or desktop hosts) */
|
|
59
|
+
screen?: {
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
scale: number;
|
|
63
|
+
};
|
|
64
|
+
/** Battery info (omitted on devices without a battery) */
|
|
65
|
+
battery?: {
|
|
66
|
+
level: number;
|
|
67
|
+
isCharging: boolean;
|
|
68
|
+
};
|
|
69
|
+
/** Network status (omitted when the host doesn't report it) */
|
|
70
|
+
network?: {
|
|
71
|
+
type: 'wifi' | 'cellular' | 'ethernet' | 'none';
|
|
72
|
+
isConnected: boolean;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Device capabilities.
|
|
77
|
+
*/
|
|
78
|
+
export interface DeviceCapabilities {
|
|
79
|
+
/** Has camera */
|
|
80
|
+
camera: boolean;
|
|
81
|
+
/** Has biometric authentication */
|
|
82
|
+
biometrics: boolean;
|
|
83
|
+
/** Has NFC */
|
|
84
|
+
nfc: boolean;
|
|
85
|
+
/** Has Bluetooth */
|
|
86
|
+
bluetooth: boolean;
|
|
87
|
+
/** Has GPS */
|
|
88
|
+
gps: boolean;
|
|
89
|
+
/** Has accelerometer */
|
|
90
|
+
accelerometer: boolean;
|
|
91
|
+
/** Has gyroscope */
|
|
92
|
+
gyroscope: boolean;
|
|
93
|
+
/** Has haptic feedback */
|
|
94
|
+
haptics: boolean;
|
|
95
|
+
/** Has AR support */
|
|
96
|
+
ar: boolean;
|
|
97
|
+
/** Has Face ID (iOS) or face unlock */
|
|
98
|
+
faceId: boolean;
|
|
99
|
+
/** Has Touch ID (iOS) or fingerprint */
|
|
100
|
+
touchId: boolean;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Device information and capabilities API.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* // Get device info
|
|
108
|
+
* const info = await device.getInfo()
|
|
109
|
+
* console.log(`Platform: ${info.platform}`)
|
|
110
|
+
* console.log(`Model: ${info.model}`)
|
|
111
|
+
* console.log(`Battery: ${info.battery.level}%`)
|
|
112
|
+
*
|
|
113
|
+
* // Check capabilities
|
|
114
|
+
* const caps = await device.getCapabilities()
|
|
115
|
+
* if (caps.biometrics) {
|
|
116
|
+
* // Enable biometric login
|
|
117
|
+
* }
|
|
118
|
+
*
|
|
119
|
+
* // Check if running on mobile
|
|
120
|
+
* if (device.isMobile()) {
|
|
121
|
+
* // Show mobile-specific UI
|
|
122
|
+
* }
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare const device: {
|
|
126
|
+
/**
|
|
127
|
+
* Get comprehensive device information.
|
|
128
|
+
*
|
|
129
|
+
* @returns Promise resolving to DeviceInfo
|
|
130
|
+
*/
|
|
131
|
+
getInfo(): Promise<DeviceInfo>;
|
|
132
|
+
/**
|
|
133
|
+
* Get device capabilities.
|
|
134
|
+
*
|
|
135
|
+
* @returns Promise resolving to DeviceCapabilities
|
|
136
|
+
*/
|
|
137
|
+
getCapabilities(): Promise<DeviceCapabilities>;
|
|
138
|
+
/**
|
|
139
|
+
* Check if running on a mobile device.
|
|
140
|
+
*/
|
|
141
|
+
isMobile(): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Check if running on iOS.
|
|
144
|
+
*/
|
|
145
|
+
isIOS(): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Check if running on Android.
|
|
148
|
+
*/
|
|
149
|
+
isAndroid(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Get current locale.
|
|
152
|
+
*/
|
|
153
|
+
getLocale(): string;
|
|
154
|
+
/**
|
|
155
|
+
* Get timezone.
|
|
156
|
+
*/
|
|
157
|
+
getTimezone(): string;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Haptic feedback style.
|
|
161
|
+
*/
|
|
162
|
+
export type HapticStyle = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';
|
|
163
|
+
/**
|
|
164
|
+
* Haptic notification type.
|
|
165
|
+
*/
|
|
166
|
+
export type HapticNotificationType = 'success' | 'warning' | 'error';
|
|
167
|
+
/**
|
|
168
|
+
* Haptic feedback API.
|
|
169
|
+
* Provides tactile feedback on supported devices.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* // Impact feedback
|
|
174
|
+
* await haptics.impact('medium')
|
|
175
|
+
*
|
|
176
|
+
* // Notification feedback
|
|
177
|
+
* await haptics.notification('success')
|
|
178
|
+
*
|
|
179
|
+
* // Selection feedback (for UI selection changes)
|
|
180
|
+
* await haptics.selection()
|
|
181
|
+
*
|
|
182
|
+
* // Custom vibration pattern (Android)
|
|
183
|
+
* await haptics.vibrate([100, 50, 100])
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare const haptics: {
|
|
187
|
+
/**
|
|
188
|
+
* Trigger impact haptic feedback.
|
|
189
|
+
*
|
|
190
|
+
* @param style - Impact style intensity
|
|
191
|
+
*/
|
|
192
|
+
impact(style?: HapticStyle): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Trigger notification haptic feedback.
|
|
195
|
+
*
|
|
196
|
+
* @param type - Notification type
|
|
197
|
+
*/
|
|
198
|
+
notification(type?: HapticNotificationType): Promise<void>;
|
|
199
|
+
/**
|
|
200
|
+
* Trigger selection haptic feedback.
|
|
201
|
+
* Use when a selection changes (e.g., picker value change).
|
|
202
|
+
*/
|
|
203
|
+
selection(): Promise<void>;
|
|
204
|
+
/**
|
|
205
|
+
* Vibrate with a custom pattern.
|
|
206
|
+
*
|
|
207
|
+
* @param pattern - Array of durations in ms [vibrate, pause, vibrate, ...]
|
|
208
|
+
*/
|
|
209
|
+
vibrate(pattern: number[]): Promise<void>;
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Permission types.
|
|
213
|
+
*/
|
|
214
|
+
export type PermissionType = 'camera' | 'microphone' | 'photos' | 'location' | 'locationAlways' | 'notifications' | 'contacts' | 'calendar' | 'reminders' | 'bluetooth' | 'motion' | 'health';
|
|
215
|
+
/**
|
|
216
|
+
* Permission status.
|
|
217
|
+
*/
|
|
218
|
+
export type PermissionStatus = 'granted' | 'denied' | 'undetermined' | 'restricted';
|
|
219
|
+
/**
|
|
220
|
+
* Permissions API.
|
|
221
|
+
* Request and check native permissions.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* // Check permission status
|
|
226
|
+
* const status = await permissions.check('camera')
|
|
227
|
+
*
|
|
228
|
+
* // Request permission
|
|
229
|
+
* if (status !== 'granted') {
|
|
230
|
+
* const newStatus = await permissions.request('camera')
|
|
231
|
+
* if (newStatus === 'granted') {
|
|
232
|
+
* // Permission granted, proceed
|
|
233
|
+
* }
|
|
234
|
+
* }
|
|
235
|
+
*
|
|
236
|
+
* // Check multiple permissions
|
|
237
|
+
* const statuses = await permissions.checkMultiple(['camera', 'microphone'])
|
|
238
|
+
*
|
|
239
|
+
* // Request multiple permissions
|
|
240
|
+
* const results = await permissions.requestMultiple(['camera', 'microphone', 'photos'])
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
export declare const permissions: {
|
|
244
|
+
/**
|
|
245
|
+
* Check the status of a permission.
|
|
246
|
+
*
|
|
247
|
+
* @param permission - Permission to check
|
|
248
|
+
* @returns Promise resolving to PermissionStatus
|
|
249
|
+
*/
|
|
250
|
+
check(permission: PermissionType): Promise<PermissionStatus>;
|
|
251
|
+
/**
|
|
252
|
+
* Request a permission.
|
|
253
|
+
*
|
|
254
|
+
* @param permission - Permission to request
|
|
255
|
+
* @returns Promise resolving to new PermissionStatus
|
|
256
|
+
*/
|
|
257
|
+
request(permission: PermissionType): Promise<PermissionStatus>;
|
|
258
|
+
/**
|
|
259
|
+
* Check multiple permissions.
|
|
260
|
+
*
|
|
261
|
+
* @param permissionList - Array of permissions to check
|
|
262
|
+
* @returns Promise resolving to object mapping permissions to statuses
|
|
263
|
+
*/
|
|
264
|
+
checkMultiple(permissionList: PermissionType[]): Promise<Record<PermissionType, PermissionStatus>>;
|
|
265
|
+
/**
|
|
266
|
+
* Request multiple permissions.
|
|
267
|
+
*
|
|
268
|
+
* @param permissionList - Array of permissions to request
|
|
269
|
+
* @returns Promise resolving to object mapping permissions to statuses
|
|
270
|
+
*/
|
|
271
|
+
requestMultiple(permissionList: PermissionType[]): Promise<Record<PermissionType, PermissionStatus>>;
|
|
272
|
+
/**
|
|
273
|
+
* Open app settings (to change permissions manually).
|
|
274
|
+
*/
|
|
275
|
+
openSettings(): Promise<void>;
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* Camera options.
|
|
279
|
+
*/
|
|
280
|
+
export interface CameraOptions {
|
|
281
|
+
/** Camera to use: 'front' | 'back' */
|
|
282
|
+
camera?: 'front' | 'back';
|
|
283
|
+
/** Photo quality: 0-100 */
|
|
284
|
+
quality?: number;
|
|
285
|
+
/** Max width in pixels */
|
|
286
|
+
maxWidth?: number;
|
|
287
|
+
/** Max height in pixels */
|
|
288
|
+
maxHeight?: number;
|
|
289
|
+
/** Save to camera roll */
|
|
290
|
+
saveToGallery?: boolean;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Photo result.
|
|
294
|
+
*/
|
|
295
|
+
export interface PhotoResult {
|
|
296
|
+
/** Base64 encoded image data */
|
|
297
|
+
base64: string;
|
|
298
|
+
/** Image URI/path */
|
|
299
|
+
uri: string;
|
|
300
|
+
/** Image width */
|
|
301
|
+
width: number;
|
|
302
|
+
/** Image height */
|
|
303
|
+
height: number;
|
|
304
|
+
/** MIME type */
|
|
305
|
+
mimeType: string;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Camera and image picker API.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* // Take a photo
|
|
313
|
+
* const photo = await camera.takePicture({ camera: 'back', quality: 80 })
|
|
314
|
+
*
|
|
315
|
+
* // Pick from gallery
|
|
316
|
+
* const image = await camera.pickImage()
|
|
317
|
+
*
|
|
318
|
+
* // Pick multiple images
|
|
319
|
+
* const images = await camera.pickMultiple({ maxCount: 5 })
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
export declare const camera: {
|
|
323
|
+
/**
|
|
324
|
+
* Take a photo with the device camera.
|
|
325
|
+
*
|
|
326
|
+
* @param options - Camera options
|
|
327
|
+
* @returns Promise resolving to PhotoResult
|
|
328
|
+
*/
|
|
329
|
+
takePicture(options?: CameraOptions): Promise<PhotoResult>;
|
|
330
|
+
/**
|
|
331
|
+
* Pick an image from the gallery.
|
|
332
|
+
*
|
|
333
|
+
* @returns Promise resolving to PhotoResult
|
|
334
|
+
*/
|
|
335
|
+
pickImage(): Promise<PhotoResult>;
|
|
336
|
+
/**
|
|
337
|
+
* Pick multiple images from the gallery.
|
|
338
|
+
*
|
|
339
|
+
* @param options - Options including maxCount
|
|
340
|
+
* @returns Promise resolving to array of PhotoResults
|
|
341
|
+
*/
|
|
342
|
+
pickMultiple(options?: {
|
|
343
|
+
maxCount?: number;
|
|
344
|
+
}): Promise<PhotoResult[]>;
|
|
345
|
+
/**
|
|
346
|
+
* Check if camera is available.
|
|
347
|
+
*/
|
|
348
|
+
isAvailable(): Promise<boolean>;
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* Biometric type.
|
|
352
|
+
*/
|
|
353
|
+
export type BiometricType = 'faceId' | 'touchId' | 'fingerprint' | 'face' | 'iris';
|
|
354
|
+
/**
|
|
355
|
+
* Biometric authentication API.
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* ```typescript
|
|
359
|
+
* // Check availability
|
|
360
|
+
* const available = await biometrics.isAvailable()
|
|
361
|
+
* const type = await biometrics.getBiometricType()
|
|
362
|
+
*
|
|
363
|
+
* // Authenticate
|
|
364
|
+
* try {
|
|
365
|
+
* const success = await biometrics.authenticate('Verify your identity')
|
|
366
|
+
* if (success) {
|
|
367
|
+
* // Proceed with authenticated action
|
|
368
|
+
* }
|
|
369
|
+
* }
|
|
370
|
+
catch (error) {
|
|
371
|
+
* console.log('Authentication failed:', error)
|
|
372
|
+
* }
|
|
373
|
+
* ```
|
|
374
|
+
*/
|
|
375
|
+
export declare const biometrics: {
|
|
376
|
+
/**
|
|
377
|
+
* Check if biometric authentication is available.
|
|
378
|
+
*/
|
|
379
|
+
isAvailable(): Promise<boolean>;
|
|
380
|
+
/**
|
|
381
|
+
* Get the type of biometric authentication available.
|
|
382
|
+
*/
|
|
383
|
+
getBiometricType(): Promise<BiometricType | null>;
|
|
384
|
+
/**
|
|
385
|
+
* Authenticate using biometrics.
|
|
386
|
+
*
|
|
387
|
+
* @param reason - Reason shown to user for authentication
|
|
388
|
+
* @returns Promise resolving to true if authenticated
|
|
389
|
+
* @throws Error if authentication fails or is cancelled
|
|
390
|
+
*/
|
|
391
|
+
authenticate(reason: string): Promise<boolean>;
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* Secure storage API for sensitive data.
|
|
395
|
+
* Uses Keychain (iOS) or Keystore (Android).
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* ```typescript
|
|
399
|
+
* // Store sensitive data
|
|
400
|
+
* await secureStorage.set('authToken', 'secret-token-123')
|
|
401
|
+
* await secureStorage.set('userCredentials', JSON.stringify({ user: 'john', pass: '***' }))
|
|
402
|
+
*
|
|
403
|
+
* // Retrieve data
|
|
404
|
+
* const token = await secureStorage.get('authToken')
|
|
405
|
+
*
|
|
406
|
+
* // Delete data
|
|
407
|
+
* await secureStorage.delete('authToken')
|
|
408
|
+
*
|
|
409
|
+
* // Clear all secure storage
|
|
410
|
+
* await secureStorage.clear()
|
|
411
|
+
* ```
|
|
412
|
+
*/
|
|
413
|
+
export declare const secureStorage: {
|
|
414
|
+
/**
|
|
415
|
+
* Store a value securely.
|
|
416
|
+
*
|
|
417
|
+
* @param key - Storage key
|
|
418
|
+
* @param value - Value to store
|
|
419
|
+
*/
|
|
420
|
+
set(key: string, value: string): Promise<void>;
|
|
421
|
+
/**
|
|
422
|
+
* Retrieve a securely stored value.
|
|
423
|
+
*
|
|
424
|
+
* @param key - Storage key
|
|
425
|
+
* @returns Promise resolving to value or null
|
|
426
|
+
*/
|
|
427
|
+
get(key: string): Promise<string | null>;
|
|
428
|
+
/**
|
|
429
|
+
* Delete a securely stored value.
|
|
430
|
+
*
|
|
431
|
+
* @param key - Storage key
|
|
432
|
+
*/
|
|
433
|
+
delete(key: string): Promise<void>;
|
|
434
|
+
/**
|
|
435
|
+
* Clear all securely stored values.
|
|
436
|
+
*/
|
|
437
|
+
clear(): Promise<void>;
|
|
438
|
+
};
|
|
439
|
+
/**
|
|
440
|
+
* Location coordinates.
|
|
441
|
+
*/
|
|
442
|
+
export interface Location {
|
|
443
|
+
latitude: number;
|
|
444
|
+
longitude: number;
|
|
445
|
+
altitude?: number;
|
|
446
|
+
accuracy: number;
|
|
447
|
+
heading?: number;
|
|
448
|
+
speed?: number;
|
|
449
|
+
timestamp: number;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Location options.
|
|
453
|
+
*/
|
|
454
|
+
export interface LocationOptions {
|
|
455
|
+
/** Enable high accuracy (uses more battery) */
|
|
456
|
+
enableHighAccuracy?: boolean;
|
|
457
|
+
/** Timeout in milliseconds */
|
|
458
|
+
timeout?: number;
|
|
459
|
+
/** Maximum age of cached position in milliseconds */
|
|
460
|
+
maximumAge?: number;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Location API.
|
|
464
|
+
*
|
|
465
|
+
* @example
|
|
466
|
+
* ```typescript
|
|
467
|
+
* // Get current location
|
|
468
|
+
* const loc = await location.getCurrentPosition()
|
|
469
|
+
* console.log(`Lat: ${loc.latitude}, Lng: ${loc.longitude}`)
|
|
470
|
+
*
|
|
471
|
+
* // Watch location changes
|
|
472
|
+
* const watchId = location.watchPosition((loc) => {
|
|
473
|
+
* console.log('New position:', loc)
|
|
474
|
+
* })
|
|
475
|
+
*
|
|
476
|
+
* // Stop watching
|
|
477
|
+
* location.clearWatch(watchId)
|
|
478
|
+
* ```
|
|
479
|
+
*/
|
|
480
|
+
export declare const location: {
|
|
481
|
+
/**
|
|
482
|
+
* Get current position.
|
|
483
|
+
*
|
|
484
|
+
* @param options - Location options
|
|
485
|
+
* @returns Promise resolving to Location
|
|
486
|
+
*/
|
|
487
|
+
getCurrentPosition(options?: LocationOptions): Promise<Location>;
|
|
488
|
+
/**
|
|
489
|
+
* Watch position changes.
|
|
490
|
+
*
|
|
491
|
+
* @param callback - Function called on position change
|
|
492
|
+
* @param options - Location options
|
|
493
|
+
* @returns Watch ID to use with clearWatch
|
|
494
|
+
*/
|
|
495
|
+
watchPosition(callback: (location: Location) => void, options?: LocationOptions): number;
|
|
496
|
+
/**
|
|
497
|
+
* Stop watching position.
|
|
498
|
+
*
|
|
499
|
+
* @param watchId - Watch ID returned from watchPosition
|
|
500
|
+
*/
|
|
501
|
+
clearWatch(watchId: number): void;
|
|
502
|
+
};
|
|
503
|
+
/**
|
|
504
|
+
* Share options.
|
|
505
|
+
*/
|
|
506
|
+
export interface ShareOptions {
|
|
507
|
+
/** Text to share */
|
|
508
|
+
text?: string;
|
|
509
|
+
/** URL to share */
|
|
510
|
+
url?: string;
|
|
511
|
+
/** Title for the share */
|
|
512
|
+
title?: string;
|
|
513
|
+
/** File paths/URIs to share */
|
|
514
|
+
files?: string[];
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Share API.
|
|
518
|
+
*
|
|
519
|
+
* @example
|
|
520
|
+
* ```typescript
|
|
521
|
+
* // Share text
|
|
522
|
+
* await share.share({ text: 'Check out this app!' })
|
|
523
|
+
*
|
|
524
|
+
* // Share URL
|
|
525
|
+
* await share.share({ url: 'https://example.com', title: 'Cool Website' })
|
|
526
|
+
*
|
|
527
|
+
* // Share file
|
|
528
|
+
* await share.share({ files: ['/path/to/image.png'] })
|
|
529
|
+
* ```
|
|
530
|
+
*/
|
|
531
|
+
export declare const share: {
|
|
532
|
+
/**
|
|
533
|
+
* Open native share dialog.
|
|
534
|
+
*
|
|
535
|
+
* @param options - Share options
|
|
536
|
+
*/
|
|
537
|
+
share(options: ShareOptions): Promise<void>;
|
|
538
|
+
/**
|
|
539
|
+
* Check if sharing is available.
|
|
540
|
+
*/
|
|
541
|
+
isAvailable(): boolean;
|
|
542
|
+
};
|
|
543
|
+
/**
|
|
544
|
+
* App state.
|
|
545
|
+
*/
|
|
546
|
+
export type AppState = 'active' | 'inactive' | 'background';
|
|
547
|
+
/**
|
|
548
|
+
* App lifecycle events API.
|
|
549
|
+
*
|
|
550
|
+
* @example
|
|
551
|
+
* ```typescript
|
|
552
|
+
* // Listen for app state changes
|
|
553
|
+
* const removeListener = lifecycle.onStateChange((state) => {
|
|
554
|
+
* if (state === 'background') {
|
|
555
|
+
* // Save data, pause tasks
|
|
556
|
+
* }
|
|
557
|
+
else if (state === 'active') {
|
|
558
|
+
* // Refresh data
|
|
559
|
+
* }
|
|
560
|
+
* })
|
|
561
|
+
*
|
|
562
|
+
* // Get current state
|
|
563
|
+
* const state = lifecycle.getState()
|
|
564
|
+
*
|
|
565
|
+
* // Remove listener
|
|
566
|
+
* removeListener()
|
|
567
|
+
* ```
|
|
568
|
+
*/
|
|
569
|
+
export declare const lifecycle: {
|
|
570
|
+
/**
|
|
571
|
+
* Get current app state.
|
|
572
|
+
*/
|
|
573
|
+
getState(): AppState;
|
|
574
|
+
/**
|
|
575
|
+
* Listen for app state changes.
|
|
576
|
+
*
|
|
577
|
+
* @param callback - Function called when state changes
|
|
578
|
+
* @returns Function to remove listener
|
|
579
|
+
*/
|
|
580
|
+
onStateChange(callback: (state: AppState) => void): () => void;
|
|
581
|
+
};
|
|
582
|
+
/**
|
|
583
|
+
* Notification options.
|
|
584
|
+
*/
|
|
585
|
+
export interface NotificationOptions {
|
|
586
|
+
/** Notification title */
|
|
587
|
+
title: string;
|
|
588
|
+
/** Notification body */
|
|
589
|
+
body?: string;
|
|
590
|
+
/** Badge count (iOS) */
|
|
591
|
+
badge?: number;
|
|
592
|
+
/** Sound name */
|
|
593
|
+
sound?: string;
|
|
594
|
+
/** Custom data payload */
|
|
595
|
+
data?: Record<string, unknown>;
|
|
596
|
+
/** Schedule for future (timestamp) */
|
|
597
|
+
scheduleAt?: number;
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Local notifications API.
|
|
601
|
+
*
|
|
602
|
+
* @example
|
|
603
|
+
* ```typescript
|
|
604
|
+
* // Show immediate notification
|
|
605
|
+
* await notifications.show({
|
|
606
|
+
* title: 'Hello!',
|
|
607
|
+
* body: 'This is a notification'
|
|
608
|
+
* })
|
|
609
|
+
*
|
|
610
|
+
* // Schedule notification
|
|
611
|
+
* await notifications.schedule({
|
|
612
|
+
* title: 'Reminder',
|
|
613
|
+
* body: 'Time to take a break',
|
|
614
|
+
* scheduleAt: Date.now() + 3600000 // 1 hour from now
|
|
615
|
+
* })
|
|
616
|
+
*
|
|
617
|
+
* // Cancel all notifications
|
|
618
|
+
* await notifications.cancelAll()
|
|
619
|
+
* ```
|
|
620
|
+
*/
|
|
621
|
+
export declare const notifications: {
|
|
622
|
+
/**
|
|
623
|
+
* Show a local notification immediately.
|
|
624
|
+
*
|
|
625
|
+
* @param options - Notification options
|
|
626
|
+
*/
|
|
627
|
+
show(options: NotificationOptions): Promise<void>;
|
|
628
|
+
/**
|
|
629
|
+
* Schedule a notification for the future.
|
|
630
|
+
*
|
|
631
|
+
* @param options - Notification options with scheduleAt
|
|
632
|
+
*/
|
|
633
|
+
schedule(options: NotificationOptions): Promise<void>;
|
|
634
|
+
/**
|
|
635
|
+
* Cancel all scheduled notifications.
|
|
636
|
+
*/
|
|
637
|
+
cancelAll(): Promise<void>;
|
|
638
|
+
/**
|
|
639
|
+
* Set app badge count (iOS).
|
|
640
|
+
*
|
|
641
|
+
* @param count - Badge count (0 to clear)
|
|
642
|
+
*/
|
|
643
|
+
setBadge(count: number): Promise<void>;
|
|
644
|
+
};
|
|
645
|
+
declare const mobile: {
|
|
646
|
+
device: typeof device;
|
|
647
|
+
haptics: typeof haptics;
|
|
648
|
+
permissions: typeof permissions;
|
|
649
|
+
camera: typeof camera;
|
|
650
|
+
biometrics: typeof biometrics;
|
|
651
|
+
secureStorage: typeof secureStorage;
|
|
652
|
+
location: typeof location;
|
|
653
|
+
share: typeof share;
|
|
654
|
+
lifecycle: typeof lifecycle;
|
|
655
|
+
notifications: typeof notifications;
|
|
656
|
+
};
|
|
657
|
+
export default mobile;
|
|
658
|
+
//# sourceMappingURL=mobile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../src/api/mobile.ts"],"names":[],"mappings":"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"}
|