@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +38 -0
- package/README.md +3 -3
- package/dist/__tests__/mocks/auth.d.ts +12 -0
- package/dist/__tests__/mocks/auth.d.ts.map +1 -0
- package/dist/__tests__/mocks/auth.js +44 -0
- package/dist/__tests__/mocks/auth.js.map +1 -0
- package/dist/__tests__/utils/test-utils.d.ts +15 -0
- package/dist/__tests__/utils/test-utils.d.ts.map +1 -0
- package/dist/__tests__/utils/test-utils.js +24 -0
- package/dist/__tests__/utils/test-utils.js.map +1 -0
- package/dist/context/YouVersionAuthContext.d.ts +4 -0
- package/dist/context/YouVersionAuthContext.d.ts.map +1 -0
- package/dist/context/YouVersionAuthContext.js +13 -0
- package/dist/context/YouVersionAuthContext.js.map +1 -0
- package/dist/context/YouVersionAuthProvider.d.ts +8 -0
- package/dist/context/YouVersionAuthProvider.d.ts.map +1 -0
- package/dist/context/YouVersionAuthProvider.js +80 -0
- package/dist/context/YouVersionAuthProvider.js.map +1 -0
- package/dist/context/YouVersionContext.d.ts +8 -0
- package/dist/context/YouVersionContext.d.ts.map +1 -0
- package/dist/context/YouVersionContext.js +4 -0
- package/dist/context/YouVersionContext.js.map +1 -0
- package/dist/context/YouVersionProvider.d.ts +17 -0
- package/dist/context/YouVersionProvider.d.ts.map +1 -0
- package/dist/context/YouVersionProvider.js +25 -0
- package/dist/context/YouVersionProvider.js.map +1 -0
- package/dist/context/index.d.ts +2 -2
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +2 -2
- package/dist/context/index.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/types/auth.d.ts +18 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/useBibleClient.js +3 -3
- package/dist/useBibleClient.js.map +1 -1
- package/dist/useHighlights.js +3 -3
- package/dist/useHighlights.js.map +1 -1
- package/dist/useLanguages.js +3 -3
- package/dist/useLanguages.js.map +1 -1
- package/dist/usePassage.d.ts +3 -3
- package/dist/usePassage.d.ts.map +1 -1
- package/dist/usePassage.js +5 -5
- package/dist/usePassage.js.map +1 -1
- package/dist/useYVAuth.d.ts +97 -0
- package/dist/useYVAuth.d.ts.map +1 -0
- package/dist/useYVAuth.js +135 -0
- package/dist/useYVAuth.js.map +1 -0
- package/package.json +5 -5
- package/src/__tests__/mocks/auth.ts +48 -0
- package/src/__tests__/utils/test-utils.tsx +43 -0
- package/src/context/YouVersionAuthContext.test.tsx +88 -0
- package/src/context/YouVersionAuthContext.tsx +20 -0
- package/src/context/YouVersionAuthProvider.test.tsx +373 -0
- package/src/context/YouVersionAuthProvider.tsx +90 -0
- package/src/context/{BibleSDKContext.tsx → YouVersionContext.tsx} +2 -2
- package/src/context/YouVersionProvider.tsx +65 -0
- package/src/context/index.ts +2 -2
- package/src/index.ts +6 -0
- package/src/types/auth.ts +20 -0
- package/src/useBibleClient.test.tsx +14 -14
- package/src/useBibleClient.ts +3 -3
- package/src/useHighlights.test.tsx +6 -6
- package/src/useHighlights.ts +3 -3
- package/src/useLanguages.test.tsx +6 -6
- package/src/useLanguages.ts +3 -3
- package/src/usePassage.ts +8 -15
- package/src/useVOTD.test.tsx +6 -6
- package/src/useYVAuth.test.tsx +378 -0
- package/src/useYVAuth.ts +179 -0
- package/dist/context/BibleSDKContext.d.ts +0 -8
- package/dist/context/BibleSDKContext.d.ts.map +0 -1
- package/dist/context/BibleSDKContext.js +0 -4
- package/dist/context/BibleSDKContext.js.map +0 -1
- package/dist/context/BibleSDKProvider.d.ts +0 -9
- package/dist/context/BibleSDKProvider.d.ts.map +0 -1
- package/dist/context/BibleSDKProvider.js +0 -18
- package/dist/context/BibleSDKProvider.js.map +0 -1
- package/src/context/BibleSDKProvider.tsx +0 -35
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @youversion/platform-react-hooks@0.
|
|
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 {
|
|
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
|
-
<
|
|
40
|
+
<YouVersionProvider appKey="YOUR_APP_KEY">
|
|
41
41
|
<BibleVerse />
|
|
42
|
-
</
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/context/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,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"}
|
package/dist/context/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":""}
|
package/dist/useBibleClient.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useContext, useMemo } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { YouVersionContext } from './context';
|
|
4
4
|
import { BibleClient, ApiClient } from '@youversion/platform-core';
|
|
5
5
|
export function useBibleClient() {
|
|
6
|
-
const context = useContext(
|
|
6
|
+
const context = useContext(YouVersionContext);
|
|
7
7
|
return useMemo(() => {
|
|
8
8
|
if (!context?.appKey) {
|
|
9
|
-
throw new Error('
|
|
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,
|
|
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"}
|
package/dist/useHighlights.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useMemo, useCallback } from 'react';
|
|
3
3
|
import { useContext } from 'react';
|
|
4
|
-
import {
|
|
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(
|
|
9
|
+
const context = useContext(YouVersionContext);
|
|
10
10
|
const highlightsClient = useMemo(() => {
|
|
11
11
|
if (!context?.appKey) {
|
|
12
|
-
throw new Error('
|
|
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,
|
|
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"}
|
package/dist/useLanguages.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { useContext } from 'react';
|
|
4
|
-
import {
|
|
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(
|
|
9
|
+
const context = useContext(YouVersionContext);
|
|
10
10
|
const languagesClient = useMemo(() => {
|
|
11
11
|
if (!context?.appKey) {
|
|
12
|
-
throw new Error('
|
|
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,
|
package/dist/useLanguages.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/usePassage.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type UseApiDataOptions } from
|
|
2
|
-
import type { BiblePassage } from
|
|
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?:
|
|
6
|
+
format?: 'html' | 'text';
|
|
7
7
|
include_headings?: boolean;
|
|
8
8
|
include_notes?: boolean;
|
|
9
9
|
options?: UseApiDataOptions;
|
package/dist/usePassage.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|