UNPKG

@kingstinct/react-native-healthkit

Version:
226 lines (225 loc) 15.2 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBiologicalSexAsync = exports.useStatisticsForQuantity = exports.useSources = exports.useIsHealthDataAvailable = exports.useHealthkitAuthorization = exports.useSubscribeToChanges = exports.useMostRecentWorkout = exports.useMostRecentQuantitySample = exports.getPreferredUnit = exports.getMostRecentWorkout = exports.getMostRecentQuantitySample = exports.saveStateOfMindSample = exports.queryStateOfMindSamples = exports.startWatchApp = exports.saveWorkoutSample = exports.queryWorkoutSamplesWithAnchor = exports.queryWorkoutSamples = exports.queryHeartbeatSeriesSamplesWithAnchor = exports.queryHeartbeatSeriesSamples = exports.saveCorrelationSample = exports.queryCorrelationSamples = exports.saveCategorySample = exports.isQuantityCompatibleWithUnit = exports.saveQuantitySample = exports.queryStatisticsCollectionForQuantity = exports.queryStatisticsForQuantity = exports.queryQuantitySamplesWithAnchor = exports.queryQuantitySamples = exports.getWheelchairUse = exports.getFitzpatrickSkinType = exports.getDateOfBirth = exports.getBloodType = exports.getBiologicalSex = exports.areObjectTypesAvailableAsync = exports.areObjectTypesAvailable = exports.isObjectTypeAvailableAsync = exports.isObjectTypeAvailable = exports.isProtectedDataAvailable = exports.subscribeToChanges = exports.deleteObjects = exports.requestAuthorization = exports.querySources = exports.isHealthDataAvailableAsync = exports.isHealthDataAvailable = exports.getRequestStatusForAuthorization = exports.getPreferredUnits = exports.enableBackgroundDelivery = exports.disableBackgroundDelivery = exports.disableAllBackgroundDelivery = exports.authorizationStatusFor = void 0; exports.unsubscribeQueries = exports.getWheelchairUseAsync = exports.getFitzpatrickSkinTypeAsync = exports.getDateOfBirthAsync = exports.getBloodTypeAsync = void 0; exports.queryCategorySamples = queryCategorySamples; exports.queryCategorySamplesWithAnchor = queryCategorySamplesWithAnchor; exports.getMostRecentCategorySample = getMostRecentCategorySample; exports.useMostRecentCategorySample = useMostRecentCategorySample; const react_native_1 = require("react-native"); const Auth_1 = require("./types/Auth"); const Characteristics_1 = require("./types/Characteristics"); __exportStar(require("./types"), exports); const notAvailableError = `[@kingstinct/react-native-healthkit] Platform "${react_native_1.Platform.OS}" not supported. HealthKit is only available on iOS.`; let hasWarned = false; // @ts-ignore function UnavailableFnFromModule(_fn, defaultValue) { // @ts-ignore return () => { if (react_native_1.Platform.OS !== 'ios' && !hasWarned) { console.warn(notAvailableError); hasWarned = true; } return defaultValue; }; } // --- Mock Implementations for exported functions --- // CoreModule functions exports.authorizationStatusFor = UnavailableFnFromModule('authorizationStatusFor', Auth_1.AuthorizationStatus.notDetermined); exports.disableAllBackgroundDelivery = UnavailableFnFromModule('disableAllBackgroundDelivery', Promise.resolve(false)); exports.disableBackgroundDelivery = UnavailableFnFromModule('disableBackgroundDelivery', Promise.resolve(false)); exports.enableBackgroundDelivery = UnavailableFnFromModule('enableBackgroundDelivery', Promise.resolve(false)); exports.getPreferredUnits = UnavailableFnFromModule('getPreferredUnits', Promise.resolve([])); exports.getRequestStatusForAuthorization = UnavailableFnFromModule('getRequestStatusForAuthorization', Promise.resolve(Auth_1.AuthorizationRequestStatus.unknown)); exports.isHealthDataAvailable = UnavailableFnFromModule('isHealthDataAvailable', false); // Original was synchronous exports.isHealthDataAvailableAsync = UnavailableFnFromModule('isHealthDataAvailableAsync', Promise.resolve(false)); // Added for consistency if needed exports.querySources = UnavailableFnFromModule('querySources', Promise.resolve([])); exports.requestAuthorization = UnavailableFnFromModule('requestAuthorization', Promise.resolve(false)); exports.deleteObjects = UnavailableFnFromModule('deleteObjects', Promise.resolve(0)); exports.subscribeToChanges = UnavailableFnFromModule('subscribeToChanges', 'dummy-query-uuid'); // Mocking the observer query UUID exports.isProtectedDataAvailable = UnavailableFnFromModule('isProtectedDataAvailable', false); exports.isObjectTypeAvailable = UnavailableFnFromModule('isObjectTypeAvailable', false); exports.isObjectTypeAvailableAsync = UnavailableFnFromModule('isObjectTypeAvailableAsync', Promise.resolve(false)); exports.areObjectTypesAvailable = UnavailableFnFromModule('areObjectTypesAvailable', {}); exports.areObjectTypesAvailableAsync = UnavailableFnFromModule('areObjectTypesAvailableAsync', Promise.resolve({})); // CharacteristicTypeModule functions exports.getBiologicalSex = UnavailableFnFromModule('getBiologicalSex', Characteristics_1.BiologicalSex.notSet); exports.getBloodType = UnavailableFnFromModule('getBloodType', Characteristics_1.BloodType.notSet); exports.getDateOfBirth = UnavailableFnFromModule('getDateOfBirth', new Date(0)); // Assuming string for date exports.getFitzpatrickSkinType = UnavailableFnFromModule('getFitzpatrickSkinType', Characteristics_1.FitzpatrickSkinType.notSet); exports.getWheelchairUse = UnavailableFnFromModule('getWheelchairUse', Characteristics_1.WheelchairUse.notSet); // QuantityTypeModule functions exports.queryQuantitySamples = UnavailableFnFromModule('queryQuantitySamples', Promise.resolve([])); exports.queryQuantitySamplesWithAnchor = UnavailableFnFromModule('queryQuantitySamplesWithAnchor', Promise.resolve({ samples: [], deletedSamples: [], newAnchor: '', })); exports.queryStatisticsForQuantity = UnavailableFnFromModule('queryStatisticsForQuantity', Promise.resolve({})); exports.queryStatisticsCollectionForQuantity = UnavailableFnFromModule('queryStatisticsCollectionForQuantity', Promise.resolve([])); exports.saveQuantitySample = UnavailableFnFromModule('saveQuantitySample', Promise.resolve(false)); exports.isQuantityCompatibleWithUnit = UnavailableFnFromModule('isQuantityCompatibleWithUnit', false); // CategoryTypeModule functions function queryCategorySamples(_categoryTypeIdentifier) { if (react_native_1.Platform.OS !== 'ios' && !hasWarned) { console.warn(notAvailableError); hasWarned = true; } return Promise.resolve([]); } function queryCategorySamplesWithAnchor(_categoryTypeIdentifier, _options) { if (react_native_1.Platform.OS !== 'ios' && !hasWarned) { console.warn(notAvailableError); hasWarned = true; } return Promise.resolve({ samples: [], deletedSamples: [], newAnchor: '', }); } exports.saveCategorySample = UnavailableFnFromModule('saveCategorySample', Promise.resolve(false)); // CorrelationTypeModule functions exports.queryCorrelationSamples = UnavailableFnFromModule('queryCorrelationSamples', Promise.resolve([])); exports.saveCorrelationSample = UnavailableFnFromModule('saveCorrelationSample', Promise.resolve(false)); // HeartbeatSeriesModule functions exports.queryHeartbeatSeriesSamples = UnavailableFnFromModule('queryHeartbeatSeriesSamples', Promise.resolve([])); exports.queryHeartbeatSeriesSamplesWithAnchor = UnavailableFnFromModule('queryHeartbeatSeriesSamplesWithAnchor', Promise.resolve({ samples: [], deletedSamples: [], newAnchor: '', })); // WorkoutsModule functions exports.queryWorkoutSamples = UnavailableFnFromModule('queryWorkoutSamples', Promise.resolve([])); exports.queryWorkoutSamplesWithAnchor = UnavailableFnFromModule('queryWorkoutSamplesWithAnchor', Promise.resolve({ workouts: [], deletedSamples: [], newAnchor: '', })); exports.saveWorkoutSample = UnavailableFnFromModule('saveWorkoutSample', Promise.resolve('')); exports.startWatchApp = UnavailableFnFromModule('startWatchApp', Promise.resolve(false)); // StateOfMindModule functions exports.queryStateOfMindSamples = UnavailableFnFromModule('queryStateOfMindSamples', Promise.resolve([])); exports.saveStateOfMindSample = UnavailableFnFromModule('saveStateOfMindSample', Promise.resolve(false)); // Utility functions (from original export list) function getMostRecentCategorySample(_identifier) { if (react_native_1.Platform.OS !== 'ios' && !hasWarned) { console.warn(notAvailableError); hasWarned = true; } return Promise.resolve(undefined); } exports.getMostRecentQuantitySample = UnavailableFnFromModule('getMostRecentQuantitySample', // biome-ignore lint/suspicious/noExplicitAny: it works Promise.resolve(undefined)); exports.getMostRecentWorkout = UnavailableFnFromModule('getMostRecentWorkout', // biome-ignore lint/suspicious/noExplicitAny: it works Promise.resolve(undefined)); exports.getPreferredUnit = UnavailableFnFromModule('getPreferredUnit', Promise.resolve('count')); // Defaulting to 'count' // Hooks (from original export list) function useMostRecentCategorySample(_categoryTypeIdentifier) { if (react_native_1.Platform.OS !== 'ios' && !hasWarned) { console.warn(notAvailableError); hasWarned = true; } return undefined; } exports.useMostRecentQuantitySample = UnavailableFnFromModule('useMostRecentQuantitySample', undefined); exports.useMostRecentWorkout = UnavailableFnFromModule('useMostRecentWorkout', undefined); exports.useSubscribeToChanges = UnavailableFnFromModule('useSubscribeToChanges', undefined); // Mocking callback structure exports.useHealthkitAuthorization = UnavailableFnFromModule('useHealthkitAuthorization', [ Auth_1.AuthorizationRequestStatus.unknown, () => Promise.resolve(Auth_1.AuthorizationRequestStatus.unknown), ]); exports.useIsHealthDataAvailable = UnavailableFnFromModule('useIsHealthDataAvailable', false); exports.useSources = UnavailableFnFromModule('useSources', null); exports.useStatisticsForQuantity = UnavailableFnFromModule('useStatisticsForQuantity', null); exports.getBiologicalSexAsync = UnavailableFnFromModule('getBiologicalSexAsync', Promise.resolve(Characteristics_1.BiologicalSex.notSet)); exports.getBloodTypeAsync = UnavailableFnFromModule('getBloodTypeAsync', Promise.resolve(Characteristics_1.BloodType.notSet)); exports.getDateOfBirthAsync = UnavailableFnFromModule('getDateOfBirthAsync', Promise.resolve(new Date(0))); // Assuming string for date exports.getFitzpatrickSkinTypeAsync = UnavailableFnFromModule('getFitzpatrickSkinTypeAsync', Promise.resolve(Characteristics_1.FitzpatrickSkinType.notSet)); exports.getWheelchairUseAsync = UnavailableFnFromModule('getWheelchairUseAsync', Promise.resolve(Characteristics_1.WheelchairUse.notSet)); exports.unsubscribeQueries = UnavailableFnFromModule('unsubscribeQueries', 0); // --- Default Export --- // This attempts to match the structure of the default export from index.ios.ts const HealthkitModule = { // All named exports are also part of the default export object authorizationStatusFor: exports.authorizationStatusFor, isObjectTypeAvailable: exports.isObjectTypeAvailable, unsubscribeQueries: exports.unsubscribeQueries, isObjectTypeAvailableAsync: exports.isObjectTypeAvailableAsync, areObjectTypesAvailable: exports.areObjectTypesAvailable, areObjectTypesAvailableAsync: exports.areObjectTypesAvailableAsync, isQuantityCompatibleWithUnit: exports.isQuantityCompatibleWithUnit, disableAllBackgroundDelivery: exports.disableAllBackgroundDelivery, disableBackgroundDelivery: exports.disableBackgroundDelivery, enableBackgroundDelivery: exports.enableBackgroundDelivery, getBiologicalSex: exports.getBiologicalSex, getBloodType: exports.getBloodType, getDateOfBirth: exports.getDateOfBirth, getFitzpatrickSkinType: exports.getFitzpatrickSkinType, getMostRecentCategorySample, getMostRecentQuantitySample: exports.getMostRecentQuantitySample, getMostRecentWorkout: exports.getMostRecentWorkout, getPreferredUnits: exports.getPreferredUnits, getPreferredUnit: exports.getPreferredUnit, getRequestStatusForAuthorization: exports.getRequestStatusForAuthorization, getWheelchairUse: exports.getWheelchairUse, isHealthDataAvailable: exports.isHealthDataAvailable, isHealthDataAvailableAsync: exports.isHealthDataAvailableAsync, queryCategorySamples, queryCategorySamplesWithAnchor, queryCorrelationSamples: exports.queryCorrelationSamples, queryHeartbeatSeriesSamples: exports.queryHeartbeatSeriesSamples, queryHeartbeatSeriesSamplesWithAnchor: exports.queryHeartbeatSeriesSamplesWithAnchor, queryQuantitySamples: exports.queryQuantitySamples, queryQuantitySamplesWithAnchor: exports.queryQuantitySamplesWithAnchor, queryStatisticsForQuantity: exports.queryStatisticsForQuantity, queryStatisticsCollectionForQuantity: exports.queryStatisticsCollectionForQuantity, queryWorkoutSamples: exports.queryWorkoutSamples, queryWorkoutSamplesWithAnchor: exports.queryWorkoutSamplesWithAnchor, querySources: exports.querySources, requestAuthorization: exports.requestAuthorization, deleteObjects: exports.deleteObjects, saveCategorySample: exports.saveCategorySample, saveCorrelationSample: exports.saveCorrelationSample, saveQuantitySample: exports.saveQuantitySample, saveWorkoutSample: exports.saveWorkoutSample, subscribeToChanges: exports.subscribeToChanges, startWatchApp: exports.startWatchApp, isProtectedDataAvailable: exports.isProtectedDataAvailable, queryStateOfMindSamples: exports.queryStateOfMindSamples, saveStateOfMindSample: exports.saveStateOfMindSample, // Hooks useMostRecentCategorySample, useMostRecentQuantitySample: exports.useMostRecentQuantitySample, useMostRecentWorkout: exports.useMostRecentWorkout, useSubscribeToChanges: exports.useSubscribeToChanges, useHealthkitAuthorization: exports.useHealthkitAuthorization, useIsHealthDataAvailable: exports.useIsHealthDataAvailable, useSources: exports.useSources, useStatisticsForQuantity: exports.useStatisticsForQuantity, getBiologicalSexAsync: exports.getBiologicalSexAsync, getBloodTypeAsync: exports.getBloodTypeAsync, getDateOfBirthAsync: exports.getDateOfBirthAsync, getFitzpatrickSkinTypeAsync: exports.getFitzpatrickSkinTypeAsync, getWheelchairUseAsync: exports.getWheelchairUseAsync, }; exports.default = { ...HealthkitModule, default: HealthkitModule, };