@youversion/platform-react-hooks 0.6.0 → 0.7.0

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 (84) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +38 -0
  3. package/README.md +3 -3
  4. package/dist/__tests__/mocks/auth.d.ts +12 -0
  5. package/dist/__tests__/mocks/auth.d.ts.map +1 -0
  6. package/dist/__tests__/mocks/auth.js +44 -0
  7. package/dist/__tests__/mocks/auth.js.map +1 -0
  8. package/dist/__tests__/utils/test-utils.d.ts +15 -0
  9. package/dist/__tests__/utils/test-utils.d.ts.map +1 -0
  10. package/dist/__tests__/utils/test-utils.js +24 -0
  11. package/dist/__tests__/utils/test-utils.js.map +1 -0
  12. package/dist/context/YouVersionAuthContext.d.ts +4 -0
  13. package/dist/context/YouVersionAuthContext.d.ts.map +1 -0
  14. package/dist/context/YouVersionAuthContext.js +13 -0
  15. package/dist/context/YouVersionAuthContext.js.map +1 -0
  16. package/dist/context/YouVersionAuthProvider.d.ts +8 -0
  17. package/dist/context/YouVersionAuthProvider.d.ts.map +1 -0
  18. package/dist/context/YouVersionAuthProvider.js +80 -0
  19. package/dist/context/YouVersionAuthProvider.js.map +1 -0
  20. package/dist/context/YouVersionContext.d.ts +8 -0
  21. package/dist/context/YouVersionContext.d.ts.map +1 -0
  22. package/dist/context/YouVersionContext.js +4 -0
  23. package/dist/context/YouVersionContext.js.map +1 -0
  24. package/dist/context/YouVersionProvider.d.ts +17 -0
  25. package/dist/context/YouVersionProvider.d.ts.map +1 -0
  26. package/dist/context/YouVersionProvider.js +25 -0
  27. package/dist/context/YouVersionProvider.js.map +1 -0
  28. package/dist/context/index.d.ts +2 -2
  29. package/dist/context/index.d.ts.map +1 -1
  30. package/dist/context/index.js +2 -2
  31. package/dist/context/index.js.map +1 -1
  32. package/dist/index.d.ts +4 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +5 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/types/auth.d.ts +18 -0
  37. package/dist/types/auth.d.ts.map +1 -0
  38. package/dist/types/auth.js +2 -0
  39. package/dist/types/auth.js.map +1 -0
  40. package/dist/useBibleClient.js +3 -3
  41. package/dist/useBibleClient.js.map +1 -1
  42. package/dist/useHighlights.js +3 -3
  43. package/dist/useHighlights.js.map +1 -1
  44. package/dist/useLanguages.js +3 -3
  45. package/dist/useLanguages.js.map +1 -1
  46. package/dist/usePassage.d.ts +3 -3
  47. package/dist/usePassage.d.ts.map +1 -1
  48. package/dist/usePassage.js +5 -5
  49. package/dist/usePassage.js.map +1 -1
  50. package/dist/useYVAuth.d.ts +97 -0
  51. package/dist/useYVAuth.d.ts.map +1 -0
  52. package/dist/useYVAuth.js +135 -0
  53. package/dist/useYVAuth.js.map +1 -0
  54. package/package.json +5 -5
  55. package/src/__tests__/mocks/auth.ts +48 -0
  56. package/src/__tests__/utils/test-utils.tsx +43 -0
  57. package/src/context/YouVersionAuthContext.test.tsx +88 -0
  58. package/src/context/YouVersionAuthContext.tsx +20 -0
  59. package/src/context/YouVersionAuthProvider.test.tsx +373 -0
  60. package/src/context/YouVersionAuthProvider.tsx +90 -0
  61. package/src/context/{BibleSDKContext.tsx → YouVersionContext.tsx} +2 -2
  62. package/src/context/YouVersionProvider.tsx +65 -0
  63. package/src/context/index.ts +2 -2
  64. package/src/index.ts +6 -0
  65. package/src/types/auth.ts +20 -0
  66. package/src/useBibleClient.test.tsx +14 -14
  67. package/src/useBibleClient.ts +3 -3
  68. package/src/useHighlights.test.tsx +6 -6
  69. package/src/useHighlights.ts +3 -3
  70. package/src/useLanguages.test.tsx +6 -6
  71. package/src/useLanguages.ts +3 -3
  72. package/src/usePassage.ts +8 -15
  73. package/src/useVOTD.test.tsx +6 -6
  74. package/src/useYVAuth.test.tsx +378 -0
  75. package/src/useYVAuth.ts +179 -0
  76. package/dist/context/BibleSDKContext.d.ts +0 -8
  77. package/dist/context/BibleSDKContext.d.ts.map +0 -1
  78. package/dist/context/BibleSDKContext.js +0 -4
  79. package/dist/context/BibleSDKContext.js.map +0 -1
  80. package/dist/context/BibleSDKProvider.d.ts +0 -9
  81. package/dist/context/BibleSDKProvider.d.ts.map +0 -1
  82. package/dist/context/BibleSDKProvider.js +0 -18
  83. package/dist/context/BibleSDKProvider.js.map +0 -1
  84. package/src/context/BibleSDKProvider.tsx +0 -35
@@ -1,4 +1,4 @@
1
1
 
2
- > @youversion/platform-react-hooks@0.6.0 build /home/runner/work/platform-sdk-react/platform-sdk-react/packages/hooks
2
+ > @youversion/platform-react-hooks@0.7.0 build /home/runner/work/platform-sdk-react/platform-sdk-react/packages/hooks
3
3
  > tsc -p tsconfig.build.json
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # @youversion/platform-react-hooks
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b7e337d: 🔄 Authentication System Overhaul
8
+ - Replaced old authentication strategy with new PKCE-based OAuth flow
9
+ - Removed AuthenticationStrategy.ts and WebAuthenticationStrategy.ts
10
+ - Added SignInWithYouVersionPKCE.ts for secure OAuth implementation
11
+ - Enhanced Users.ts with comprehensive auth token management (+469 lines)
12
+
13
+ 🏗️ Context/Provider Architecture Refactor
14
+ - Renamed BibleSDKContext/Provider → YouVersionContext/Provider
15
+ - Removed UI-level YVPProvider, YVPErrorBoundary
16
+ - Added dedicated auth providers: YouVersionAuthProvider and YouVersionAuthContext
17
+ - Consolidated authentication logic into hooks package
18
+
19
+ 🪝 New Hooks Implementation
20
+ - Added useYVAuth hook for authentication state management
21
+ - Updated existing hooks (useBibleClient, useHighlights, etc.) to use new context
22
+ - Enhanced configuration management in YouVersionPlatformConfiguration
23
+
24
+ 🔧 Infrastructure Improvements
25
+ - Added token refresh capabilities
26
+ - Improved memory leak prevention in auth provider
27
+ - Enhanced type definitions and exports
28
+
29
+ Applications using this SDK will need to:
30
+ 1. Update all context/provider imports and names
31
+ 2. Migrate from old authentication patterns to new PKCE flow
32
+ 3. Update provider setup in application roots
33
+ 4. Adjust any direct usage of removed authentication classes
34
+ 5. Update package imports for auth-related functionality
35
+
36
+ ### Patch Changes
37
+
38
+ - Updated dependencies [b7e337d]
39
+ - @youversion/platform-core@0.7.0
40
+
3
41
  ## 0.6.0
4
42
 
5
43
  ### Minor Changes
package/README.md CHANGED
@@ -27,7 +27,7 @@ Get your App Key at [platform.youversion.com](https://platform.youversion.com/)
27
27
  ## Usage
28
28
 
29
29
  ```tsx
30
- import { BibleSDKProvider, usePassage } from '@youversion/platform-react-hooks';
30
+ import { YouVersionProvider, usePassage } from '@youversion/platform-react-hooks';
31
31
 
32
32
  function BibleVerse() {
33
33
  const { passage, loading } = usePassage({ versionId: 111, usfm: 'JHN.3.16' });
@@ -37,9 +37,9 @@ function BibleVerse() {
37
37
 
38
38
  function App() {
39
39
  return (
40
- <BibleSDKProvider appKey="YOUR_APP_KEY">
40
+ <YouVersionProvider appKey="YOUR_APP_KEY">
41
41
  <BibleVerse />
42
- </BibleSDKProvider>
42
+ </YouVersionProvider>
43
43
  );
44
44
  }
45
45
  ```
@@ -0,0 +1,12 @@
1
+ import { SignInWithYouVersionResult, YouVersionUserInfo } from '@youversion/platform-core';
2
+ /**
3
+ * Creates a mock user info object for testing
4
+ * @param overrides Optional properties to override the default values
5
+ */
6
+ export declare const createMockUserInfo: (overrides?: Record<string, any>) => YouVersionUserInfo;
7
+ /**
8
+ * Creates a mock auth result for testing
9
+ * @param overrides Optional properties to override the default values
10
+ */
11
+ export declare const createMockAuthResult: (overrides?: Record<string, unknown>) => SignInWithYouVersionResult;
12
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE3F;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,YAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,KAAG,kBAmBxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,KACtC,0BAaF,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { vi } from 'vitest';
2
+ import { SignInWithYouVersionResult, YouVersionUserInfo } from '@youversion/platform-core';
3
+ /**
4
+ * Creates a mock user info object for testing
5
+ * @param overrides Optional properties to override the default values
6
+ */
7
+ export const createMockUserInfo = (overrides = {}) => {
8
+ const mockUserInfo = new YouVersionUserInfo({
9
+ id: '123',
10
+ name: 'John Doe',
11
+ email: 'john@example.com',
12
+ avatar_url: 'https://example.com/avatar.jpg?w={width}&h={height}',
13
+ ...overrides,
14
+ });
15
+ // Mock the getAvatarUrl method for testing
16
+ vi.spyOn(mockUserInfo, 'getAvatarUrl').mockImplementation((width = 200, height = 200) => {
17
+ try {
18
+ return new URL(`https://example.com/avatar.jpg?w=${width}&h=${height}`);
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ });
24
+ return mockUserInfo;
25
+ };
26
+ /**
27
+ * Creates a mock auth result for testing
28
+ * @param overrides Optional properties to override the default values
29
+ */
30
+ export const createMockAuthResult = (overrides = {}) => {
31
+ const mockUserInfo = createMockUserInfo();
32
+ return new SignInWithYouVersionResult({
33
+ ...mockUserInfo,
34
+ accessToken: 'access-token',
35
+ idToken: 'id-token',
36
+ refreshToken: 'refresh-token',
37
+ expiresIn: 3600,
38
+ permissions: ['bibles', 'highlights'],
39
+ yvpUserId: 'test-yvp-user-id',
40
+ profilePicture: 'https://example.com/profile.jpg',
41
+ ...overrides,
42
+ });
43
+ };
44
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/__tests__/mocks/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE3F;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,YAAiC,EAAE,EAAsB,EAAE;IAC5F,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC;QAC1C,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,kBAAkB;QACzB,UAAU,EAAE,qDAAqD;QACjE,GAAG,SAAS;KACb,CAAC,CAAC;IAEH,2CAA2C;IAC3C,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QACtF,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,oCAAoC,KAAK,MAAM,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAAqC,EAAE,EACX,EAAE;IAC9B,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,OAAO,IAAI,0BAA0B,CAAC;QACpC,GAAG,YAAY;QACf,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,eAAe;QAC7B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;QACrC,SAAS,EAAE,kBAAkB;QAC7B,cAAc,EAAE,iCAAiC;QACjD,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ /**
3
+ * Creates a test wrapper component with YouVersionAuthProvider
4
+ * @param config Optional auth configuration
5
+ */
6
+ export declare const createAuthProviderWrapper: () => React.ComponentType<{
7
+ children: React.ReactNode;
8
+ }>;
9
+ /**
10
+ * Test component to access auth context for testing
11
+ */
12
+ export declare function TestAuthChild({ onRender }: {
13
+ onRender?: (data: any) => void;
14
+ }): React.JSX.Element;
15
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/test-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAO,KAAK,CAAC,aAAa,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAW7F,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBjG"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { YouVersionProvider } from '../../context/YouVersionProvider';
4
+ import { useYouVersionAuthContext } from '../../context/YouVersionAuthContext';
5
+ /**
6
+ * Creates a test wrapper component with YouVersionAuthProvider
7
+ * @param config Optional auth configuration
8
+ */
9
+ export const createAuthProviderWrapper = () => {
10
+ return ({ children }) => (_jsx(YouVersionProvider, { appKey: "test-app-key", apiHost: "test-api.example.com", includeAuth: true, authRedirectUrl: "http://test.example.com", children: children }));
11
+ };
12
+ /**
13
+ * Test component to access auth context for testing
14
+ */
15
+ export function TestAuthChild({ onRender }) {
16
+ const context = useYouVersionAuthContext();
17
+ React.useEffect(() => {
18
+ if (onRender) {
19
+ onRender(context);
20
+ }
21
+ }, [context, onRender]);
22
+ return (_jsxs("div", { children: [_jsx("div", { "data-testid": "user-info", children: context.userInfo ? JSON.stringify(context.userInfo) : 'null' }), _jsx("div", { "data-testid": "is-loading", children: context.isLoading.toString() }), _jsx("div", { "data-testid": "error", children: context.error ? context.error.message : 'null' })] }));
23
+ }
24
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/__tests__/utils/test-utils.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAuD,EAAE;IAChG,OAAO,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CACtD,KAAC,kBAAkB,IACjB,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,sBAAsB,EAC9B,WAAW,EAAE,IAAI,EACjB,eAAe,EAAC,yBAAyB,YAExC,QAAQ,GACU,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAsC;IAC5E,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAC;IAE3C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,CACL,0BACE,6BAAiB,WAAW,YACzB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GACzD,EACN,6BAAiB,YAAY,YAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAO,EAClE,6BAAiB,OAAO,YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAO,IAC3E,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AuthContextValue } from '../types/auth';
2
+ export declare const YouVersionAuthContext: import("react").Context<AuthContextValue | null>;
3
+ export declare function useYouVersionAuthContext(): AuthContextValue;
4
+ //# sourceMappingURL=YouVersionAuthContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionAuthContext.d.ts","sourceRoot":"","sources":["../../src/context/YouVersionAuthContext.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,eAAO,MAAM,qBAAqB,kDAA+C,CAAC;AAElF,wBAAgB,wBAAwB,IAAI,gBAAgB,CAY3D"}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import { createContext, useContext } from 'react';
3
+ export const YouVersionAuthContext = createContext(null);
4
+ export function useYouVersionAuthContext() {
5
+ const context = useContext(YouVersionAuthContext);
6
+ if (!context) {
7
+ throw new Error('useYouVersionAuthContext must be used within an auth provider. ' +
8
+ 'Make sure your app is wrapped with <YouVersionAuthProvider> from @youversion/platform-react-hooks ' +
9
+ 'or create your own provider using YouVersionAuthContext from @youversion/platform-react-hooks.');
10
+ }
11
+ return context;
12
+ }
13
+ //# sourceMappingURL=YouVersionAuthContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionAuthContext.js","sourceRoot":"","sources":["../../src/context/YouVersionAuthContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAElF,MAAM,UAAU,wBAAwB;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,oGAAoG;YACpG,gGAAgG,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import type { AuthConfig } from '../types/auth';
3
+ export interface YouVersionAuthProviderProps {
4
+ config: AuthConfig;
5
+ children: ReactNode;
6
+ }
7
+ export default function YouVersionAuthProvider({ config, children, }: YouVersionAuthProviderProps): React.ReactElement;
8
+ //# sourceMappingURL=YouVersionAuthProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionAuthProvider.d.ts","sourceRoot":"","sources":["../../src/context/YouVersionAuthProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOnE,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAElE,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,MAAM,EACN,QAAQ,GACT,EAAE,2BAA2B,GAAG,KAAK,CAAC,YAAY,CAsElD"}
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import React, { useEffect, useState } from 'react';
4
+ import { YouVersionAPIUsers, YouVersionPlatformConfiguration, } from '@youversion/platform-core';
5
+ import { YouVersionAuthContext } from './YouVersionAuthContext';
6
+ export default function YouVersionAuthProvider({ config, children, }) {
7
+ const [userInfo, setUserInfo] = useState(null);
8
+ const [isLoading, setIsLoading] = useState(true);
9
+ const [error, setError] = useState(null);
10
+ useEffect(() => {
11
+ let mounted = true;
12
+ const initAuth = async () => {
13
+ // Set configuration
14
+ YouVersionPlatformConfiguration.appKey = config.appKey;
15
+ YouVersionPlatformConfiguration.apiHost = config.apiHost ?? 'api.youversion.com';
16
+ if (typeof window !== 'undefined') {
17
+ // Check for OAuth callback
18
+ const urlParams = new URLSearchParams(window.location.search);
19
+ const isOAuthCallback = urlParams.has('state') || urlParams.has('error');
20
+ if (isOAuthCallback) {
21
+ try {
22
+ const result = await YouVersionAPIUsers.handleAuthCallback();
23
+ if (result && YouVersionPlatformConfiguration.idToken) {
24
+ const info = YouVersionAPIUsers.userInfo(YouVersionPlatformConfiguration.idToken);
25
+ if (!mounted)
26
+ return;
27
+ setUserInfo(info);
28
+ }
29
+ }
30
+ catch (err) {
31
+ if (!mounted)
32
+ return;
33
+ setError(err);
34
+ }
35
+ }
36
+ else {
37
+ // Check for existing token
38
+ const refreshToken = YouVersionPlatformConfiguration.refreshToken;
39
+ if (refreshToken) {
40
+ try {
41
+ await YouVersionAPIUsers.refreshTokenIfNeeded();
42
+ const idToken = YouVersionPlatformConfiguration.idToken;
43
+ if (idToken) {
44
+ const info = YouVersionAPIUsers.userInfo(idToken);
45
+ if (!mounted)
46
+ return;
47
+ setUserInfo(info);
48
+ }
49
+ else {
50
+ if (!mounted)
51
+ return;
52
+ setUserInfo(null);
53
+ }
54
+ }
55
+ catch {
56
+ if (!mounted)
57
+ return;
58
+ setUserInfo(null);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ if (!mounted)
64
+ return;
65
+ setIsLoading(false);
66
+ };
67
+ void initAuth();
68
+ return () => {
69
+ mounted = false;
70
+ };
71
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
72
+ const value = {
73
+ userInfo,
74
+ setUserInfo,
75
+ isLoading,
76
+ error,
77
+ };
78
+ return _jsx(YouVersionAuthContext.Provider, { value: value, children: children });
79
+ }
80
+ //# sourceMappingURL=YouVersionAuthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionAuthProvider.js","sourceRoot":"","sources":["../../src/context/YouVersionAuthProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ type YouVersionContextData = {
2
+ appKey: string;
3
+ apiHost?: string;
4
+ installationId?: string;
5
+ };
6
+ export declare const YouVersionContext: import("react").Context<YouVersionContextData | null>;
7
+ export {};
8
+ //# sourceMappingURL=YouVersionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionContext.d.ts","sourceRoot":"","sources":["../../src/context/YouVersionContext.tsx"],"names":[],"mappings":"AAIA,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,uDAAoD,CAAC"}
@@ -0,0 +1,4 @@
1
+ 'use client';
2
+ import { createContext } from 'react';
3
+ export const YouVersionContext = createContext(null);
4
+ //# sourceMappingURL=YouVersionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionContext.js","sourceRoot":"","sources":["../../src/context/YouVersionContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { PropsWithChildren, ReactNode } from 'react';
2
+ interface YouVersionProviderPropsBase {
3
+ children: ReactNode;
4
+ appKey: string;
5
+ apiHost?: string;
6
+ }
7
+ interface YouVersionProviderPropsWithAuth extends YouVersionProviderPropsBase {
8
+ authRedirectUrl: string;
9
+ includeAuth: true;
10
+ }
11
+ interface YouVersionProviderPropsWithoutAuth extends YouVersionProviderPropsBase {
12
+ includeAuth?: false;
13
+ authRedirectUrl?: never;
14
+ }
15
+ export declare function YouVersionProvider(props: PropsWithChildren<YouVersionProviderPropsWithAuth | YouVersionProviderPropsWithoutAuth>): React.ReactElement;
16
+ export {};
17
+ //# sourceMappingURL=YouVersionProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionProvider.d.ts","sourceRoot":"","sources":["../../src/context/YouVersionProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,UAAU,2BAA2B;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,+BAAgC,SAAQ,2BAA2B;IAC3E,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,IAAI,CAAC;CACnB;AAED,UAAU,kCAAmC,SAAQ,2BAA2B;IAC9E,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAID,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,CAAC,+BAA+B,GAAG,kCAAkC,CAAC,GAC7F,KAAK,CAAC,YAAY,CAqCpB"}
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { lazy, Suspense, useEffect } from 'react';
4
+ import { YouVersionContext } from './YouVersionContext';
5
+ import { YouVersionPlatformConfiguration } from '@youversion/platform-core';
6
+ const AuthProvider = lazy(() => import('./YouVersionAuthProvider'));
7
+ export function YouVersionProvider(props) {
8
+ const { appKey, apiHost = 'api.youversion.com', includeAuth, children } = props;
9
+ // Syncing appKey and apiHost to YouVersionPlatformConfiguration
10
+ // so that this can be in sync with any other code that uses
11
+ // the YouVersionPlatformConfiguration, of which a lot of our
12
+ // core package uses this configuration.
13
+ useEffect(() => {
14
+ YouVersionPlatformConfiguration.appKey = appKey;
15
+ YouVersionPlatformConfiguration.apiHost = apiHost;
16
+ }, [appKey, apiHost]);
17
+ if (includeAuth) {
18
+ const { authRedirectUrl } = props;
19
+ // Installation ID gets set automatically by YouVersionPlatformConfiguration
20
+ return (_jsx(YouVersionContext.Provider, { value: { appKey, apiHost, installationId: YouVersionPlatformConfiguration.installationId }, children: _jsx(Suspense, { children: _jsx(AuthProvider, { config: { appKey, apiHost, redirectUri: authRedirectUrl }, children: children }) }) }));
21
+ }
22
+ // Installation ID gets set automatically by YouVersionPlatformConfiguration
23
+ return (_jsx(YouVersionContext.Provider, { value: { appKey, apiHost, installationId: YouVersionPlatformConfiguration.installationId }, children: children }));
24
+ }
25
+ //# sourceMappingURL=YouVersionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouVersionProvider.js","sourceRoot":"","sources":["../../src/context/YouVersionProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAkB5E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAEpE,MAAM,UAAU,kBAAkB,CAChC,KAA8F;IAE9F,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEhF,gEAAgE;IAChE,4DAA4D;IAC5D,6DAA6D;IAC7D,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,+BAA+B,CAAC,MAAM,GAAG,MAAM,CAAC;QAChD,+BAA+B,CAAC,OAAO,GAAG,OAAO,CAAC;IACpD,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;QAElC,4EAA4E;QAC5E,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,+BAA+B,CAAC,cAAc,EAAE,YAE1F,KAAC,QAAQ,cACP,KAAC,YAAY,IAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YACpE,QAAQ,GACI,GACN,GACgB,CAC9B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,+BAA+B,CAAC,cAAc,EAAE,YAEzF,QAAQ,GACkB,CAC9B,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- export * from './BibleSDKContext';
2
- export * from './BibleSDKProvider';
1
+ export * from './YouVersionContext';
2
+ export * from './YouVersionProvider';
3
3
  export * from './ReaderContext';
4
4
  export * from './ReaderProvider';
5
5
  export * from './VerseSelectionProvider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
@@ -1,5 +1,5 @@
1
- export * from './BibleSDKContext';
2
- export * from './BibleSDKProvider';
1
+ export * from './YouVersionContext';
2
+ export * from './YouVersionProvider';
3
3
  export * from './ReaderContext';
4
4
  export * from './ReaderProvider';
5
5
  export * from './VerseSelectionProvider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -18,4 +18,8 @@ export * from './usePassage';
18
18
  export * from './useVOTD';
19
19
  export * from './useHighlights';
20
20
  export * from './useLanguages';
21
+ export * from './useYVAuth';
22
+ export * from './context/YouVersionAuthContext';
23
+ export * from './context/YouVersionAuthProvider';
24
+ export * from './types/auth';
21
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -18,4 +18,9 @@ export * from './usePassage';
18
18
  export * from './useVOTD';
19
19
  export * from './useHighlights';
20
20
  export * from './useLanguages';
21
+ // Auth hooks
22
+ export * from './useYVAuth';
23
+ export * from './context/YouVersionAuthContext';
24
+ export * from './context/YouVersionAuthProvider';
25
+ export * from './types/auth';
21
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAE/B,aAAa;AACb,cAAc,aAAa,CAAC;AAC5B,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { YouVersionUserInfo } from '@youversion/platform-core';
2
+ import type { Dispatch, SetStateAction } from 'react';
3
+ export interface AuthConfig {
4
+ appKey: string;
5
+ apiHost?: string;
6
+ redirectUri?: string;
7
+ }
8
+ export interface AuthContextValue {
9
+ userInfo: YouVersionUserInfo | null;
10
+ setUserInfo: Dispatch<SetStateAction<YouVersionUserInfo | null>>;
11
+ isLoading: boolean;
12
+ error: Error | null;
13
+ }
14
+ export interface AuthProviderProps {
15
+ config: AuthConfig;
16
+ children: React.ReactNode;
17
+ }
18
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":""}
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  import { useContext, useMemo } from 'react';
3
- import { BibleSDKContext } from './context';
3
+ import { YouVersionContext } from './context';
4
4
  import { BibleClient, ApiClient } from '@youversion/platform-core';
5
5
  export function useBibleClient() {
6
- const context = useContext(BibleSDKContext);
6
+ const context = useContext(YouVersionContext);
7
7
  return useMemo(() => {
8
8
  if (!context?.appKey) {
9
- throw new Error('BibleSDK context not found. Make sure your component is wrapped with BibleSDKProvider and an API key is provided.');
9
+ throw new Error('YouVersion context not found. Make sure your component is wrapped with YouVersionProvider and an API key is provided.');
10
10
  }
11
11
  return new BibleClient(new ApiClient({
12
12
  appKey: context.appKey,
@@ -1 +1 @@
1
- {"version":3,"file":"useBibleClient.js","sourceRoot":"","sources":["../src/useBibleClient.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE5C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,WAAW,CACpB,IAAI,SAAS,CAAC;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"useBibleClient.js","sourceRoot":"","sources":["../src/useBibleClient.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,WAAW,CACpB,IAAI,SAAS,CAAC;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import { useMemo, useCallback } from 'react';
3
3
  import { useContext } from 'react';
4
- import { BibleSDKContext } from './context';
4
+ import { YouVersionContext } from './context';
5
5
  import { HighlightsClient, ApiClient } from '@youversion/platform-core';
6
6
  import { useApiData } from './useApiData';
7
7
  import {} from '@youversion/platform-core';
8
8
  export function useHighlights(options, apiOptions) {
9
- const context = useContext(BibleSDKContext);
9
+ const context = useContext(YouVersionContext);
10
10
  const highlightsClient = useMemo(() => {
11
11
  if (!context?.appKey) {
12
- throw new Error('BibleSDK context not found. Make sure your component is wrapped with BibleSDKProvider and an API key is provided.');
12
+ throw new Error('YouVersion context not found. Make sure your component is wrapped with YouVersionProvider and an API key is provided.');
13
13
  }
14
14
  return new HighlightsClient(new ApiClient({
15
15
  appKey: context.appKey,
@@ -1 +1 @@
1
- {"version":3,"file":"useHighlights.js","sourceRoot":"","sources":["../src/useHighlights.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAClE,OAAO,EAMN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,UAAU,aAAa,CAC3B,OAA8B,EAC9B,UAA8B;IAS9B,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,gBAAgB,CACzB,IAAI,SAAS,CAAC;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAClD,GAAG,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAC7C,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAC5D;QACE,OAAO,EAAE,UAAU,EAAE,OAAO,KAAK,KAAK;KACvC,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,IAAqB,EAAsB,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAC5B,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,SAAiB,EAAE,aAAsC,EAAiB,EAAE;QACjF,MAAM,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC,EACD,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAC5B,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,OAAO;QACP,KAAK;QACL,OAAO;QACP,eAAe;QACf,eAAe;KAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useHighlights.js","sourceRoot":"","sources":["../src/useHighlights.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAClE,OAAO,EAMN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,UAAU,aAAa,CAC3B,OAA8B,EAC9B,UAA8B;IAS9B,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,gBAAgB,CACzB,IAAI,SAAS,CAAC;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAClD,GAAG,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAC7C,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAC5D;QACE,OAAO,EAAE,UAAU,EAAE,OAAO,KAAK,KAAK;KACvC,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,IAAqB,EAAsB,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAC5B,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,SAAiB,EAAE,aAAsC,EAAiB,EAAE;QACjF,MAAM,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC,EACD,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAC5B,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,OAAO;QACP,KAAK;QACL,OAAO;QACP,eAAe;QACf,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import { useMemo } from 'react';
3
3
  import { useContext } from 'react';
4
- import { BibleSDKContext } from './context';
4
+ import { YouVersionContext } from './context';
5
5
  import { LanguagesClient, ApiClient } from '@youversion/platform-core';
6
6
  import { useApiData } from './useApiData';
7
7
  import {} from '@youversion/platform-core';
8
8
  export function useLanguages(options, apiOptions) {
9
- const context = useContext(BibleSDKContext);
9
+ const context = useContext(YouVersionContext);
10
10
  const languagesClient = useMemo(() => {
11
11
  if (!context?.appKey) {
12
- throw new Error('BibleSDK context not found. Make sure your component is wrapped with BibleSDKProvider and an API key is provided.');
12
+ throw new Error('YouVersion context not found. Make sure your component is wrapped with YouVersionProvider and an API key is provided.');
13
13
  }
14
14
  return new LanguagesClient(new ApiClient({
15
15
  appKey: context.appKey,
@@ -1 +1 @@
1
- {"version":3,"file":"useLanguages.js","sourceRoot":"","sources":["../src/useLanguages.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAClE,OAAO,EAIN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,UAAU,YAAY,CAC1B,OAA4B,EAC5B,UAA8B;IAO9B,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,eAAe,CACxB,IAAI,SAAS,CAAC;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAClD,GAAG,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,EAC3C,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,EAC5E;QACE,OAAO,EAAE,UAAU,EAAE,OAAO,KAAK,KAAK;KACvC,CACF,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO;QACP,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useLanguages.js","sourceRoot":"","sources":["../src/useLanguages.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAClE,OAAO,EAIN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,UAAU,YAAY,CAC1B,OAA4B,EAC5B,UAA8B;IAO9B,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE9C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,eAAe,CACxB,IAAI,SAAS,CAAC;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAClD,GAAG,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,EAC3C,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,EAC5E;QACE,OAAO,EAAE,UAAU,EAAE,OAAO,KAAK,KAAK;KACvC,CACF,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO;QACP,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -1,9 +1,9 @@
1
- import { type UseApiDataOptions } from "./useApiData";
2
- import type { BiblePassage } from "@youversion/platform-core";
1
+ import { type UseApiDataOptions } from './useApiData';
2
+ import type { BiblePassage } from '@youversion/platform-core';
3
3
  type usePassageProps = {
4
4
  versionId: number;
5
5
  usfm: string;
6
- format?: "html" | "text";
6
+ format?: 'html' | 'text';
7
7
  include_headings?: boolean;
8
8
  include_notes?: boolean;
9
9
  options?: UseApiDataOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"usePassage.d.ts","sourceRoot":"","sources":["../src/usePassage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,IAAI,EACJ,MAAe,EACf,gBAAwB,EACxB,aAAqB,EACrB,OAAO,GACR,EAAE,eAAe,GAAG;IACnB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAoBA"}
1
+ {"version":3,"file":"usePassage.d.ts","sourceRoot":"","sources":["../src/usePassage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,IAAI,EACJ,MAAe,EACf,gBAAwB,EACxB,aAAqB,EACrB,OAAO,GACR,EAAE,eAAe,GAAG;IACnB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAaA"}