@luxexchange/sessions 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/project.json +1 -1
- package/src/challenge-solvers/createChallengeSolverService.ts +5 -5
- package/src/challenge-solvers/createHashcashMockSolver.ts +1 -1
- package/src/challenge-solvers/createHashcashSolver.test.ts +4 -4
- package/src/challenge-solvers/createHashcashSolver.ts +4 -4
- package/src/challenge-solvers/createTurnstileMockSolver.ts +1 -1
- package/src/challenge-solvers/createTurnstileSolver.ts +5 -5
- package/src/challenge-solvers/hashcash/core.native.ts +4 -4
- package/src/challenge-solvers/hashcash/core.ts +4 -4
- package/src/challenge-solvers/hashcash/core.web.ts +4 -4
- package/src/challenge-solvers/hashcash/createWorkerHashcashSolver.test.ts +3 -3
- package/src/challenge-solvers/hashcash/createWorkerHashcashSolver.ts +4 -4
- package/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel.native.ts +2 -2
- package/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel.ts +2 -2
- package/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel.web.ts +2 -2
- package/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel.native.ts +2 -2
- package/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel.ts +2 -2
- package/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel.web.ts +2 -2
- package/src/challenge-solvers/hashcash/worker/types.ts +1 -1
- package/src/challenge-solvers/turnstileErrors.ts +1 -1
- package/src/challenge-solvers/turnstileScriptLoader.ts +2 -2
- package/src/challenge-solvers/turnstileSolver.integration.test.ts +3 -3
- package/src/challenge-solvers/types.ts +2 -2
- package/src/challengeFlow.integration.test.ts +8 -8
- package/src/index.ts +45 -45
- package/src/lux-identifier/luxIdentifierQuery.ts +3 -3
- package/src/oauth-service/createOAuthService.ts +2 -2
- package/src/performance/createNoopPerformanceTracker.ts +2 -2
- package/src/performance/createPerformanceTracker.ts +1 -1
- package/src/performance/index.ts +3 -3
- package/src/session-initialization/createSessionInitializationService.test.ts +4 -4
- package/src/session-initialization/createSessionInitializationService.ts +5 -5
- package/src/session-repository/createSessionRepository.test.ts +3 -3
- package/src/session-repository/createSessionRepository.ts +5 -5
- package/src/session-repository/errors.ts +1 -1
- package/src/session-service/createSessionService.ts +5 -5
- package/src/session-service/types.ts +2 -2
- package/src/session.integration.test.ts +14 -14
package/package.json
CHANGED
package/project.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ChallengeType } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
2
|
-
import { createHashcashMockSolver } from '@
|
|
3
|
-
import { createNoneMockSolver } from '@
|
|
4
|
-
import { createTurnstileMockSolver } from '@
|
|
5
|
-
import type { ChallengeSolver, ChallengeSolverService } from '@
|
|
6
|
-
import type { Logger } from 'utilities/src/logger/logger'
|
|
2
|
+
import { createHashcashMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createHashcashMockSolver'
|
|
3
|
+
import { createNoneMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createNoneMockSolver'
|
|
4
|
+
import { createTurnstileMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createTurnstileMockSolver'
|
|
5
|
+
import type { ChallengeSolver, ChallengeSolverService } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
6
|
+
import type { Logger } from '@luxfi/utilities/src/logger/logger'
|
|
7
7
|
|
|
8
8
|
interface CreateChallengeSolverServiceContext {
|
|
9
9
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChallengeData, ChallengeSolver } from '@luxfi/sessions/src/challenge-solvers/types'
|
|
2
|
-
import { sleep } from 'utilities/src/time/timing'
|
|
2
|
+
import { sleep } from '@luxfi/utilities/src/time/timing'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Creates a mock Hashcash proof-of-work solver for development/testing
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ChallengeType } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
2
|
-
import { createHashcashSolver } from '@
|
|
3
|
-
import type { HashcashWorkerChannel } from '@
|
|
4
|
-
import type { ChallengeData } from '@
|
|
5
|
-
import type { PerformanceTracker } from '@
|
|
2
|
+
import { createHashcashSolver } from '@luxexchange/sessions/src/challenge-solvers/createHashcashSolver'
|
|
3
|
+
import type { HashcashWorkerChannel } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
4
|
+
import type { ChallengeData } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
5
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
6
6
|
import { describe, expect, it, vi } from 'vitest'
|
|
7
7
|
|
|
8
8
|
// Mock performance tracker for testing
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { findProof, type HashcashChallenge } from '@
|
|
2
|
-
import type { HashcashWorkerChannelFactory } from '@
|
|
3
|
-
import type { ChallengeData, ChallengeSolver } from '@
|
|
4
|
-
import type { PerformanceTracker } from '@
|
|
1
|
+
import { findProof, type HashcashChallenge } from '@luxexchange/sessions/src/challenge-solvers/hashcash/core'
|
|
2
|
+
import type { HashcashWorkerChannelFactory } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
3
|
+
import type { ChallengeData, ChallengeSolver } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
4
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
5
5
|
import { z } from 'zod'
|
|
6
6
|
|
|
7
7
|
/** Error type for analytics classification */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChallengeData, ChallengeSolver } from '@luxfi/sessions/src/challenge-solvers/types'
|
|
2
|
-
import { sleep } from 'utilities/src/time/timing'
|
|
2
|
+
import { sleep } from '@luxfi/utilities/src/time/timing'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Creates a mock Turnstile challenge solver for development/testing
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
TurnstileScriptLoadError,
|
|
5
5
|
TurnstileTimeoutError,
|
|
6
6
|
TurnstileTokenExpiredError,
|
|
7
|
-
} from '@
|
|
8
|
-
import { ensureTurnstileScript } from '@
|
|
7
|
+
} from '@luxexchange/sessions/src/challenge-solvers/turnstileErrors'
|
|
8
|
+
import { ensureTurnstileScript } from '@luxexchange/sessions/src/challenge-solvers/turnstileScriptLoader'
|
|
9
9
|
import type {
|
|
10
10
|
ChallengeData,
|
|
11
11
|
ChallengeSolver,
|
|
12
12
|
TurnstileScriptOptions,
|
|
13
|
-
} from '@
|
|
14
|
-
import type { PerformanceTracker } from '@
|
|
15
|
-
import type { Logger } from 'utilities/src/logger/logger'
|
|
13
|
+
} from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
14
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
15
|
+
import type { Logger } from '@luxfi/utilities/src/logger/logger'
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Analytics data for Turnstile solve attempts.
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
* @see packages/hashcash-native for the native implementation
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { NotImplementedError } from 'utilities/src/errors'
|
|
10
|
+
import { NotImplementedError } from '@luxfi/utilities/src/errors'
|
|
11
11
|
|
|
12
|
-
export type { HashcashChallenge, ProofResult } from '@
|
|
12
|
+
export type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
13
13
|
// Re-export shared types and platform-agnostic functions
|
|
14
|
-
export { checkDifficulty, formatHashcashString } from '@
|
|
14
|
+
export { checkDifficulty, formatHashcashString } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
15
15
|
|
|
16
|
-
import type { HashcashChallenge, ProofResult } from '@
|
|
16
|
+
import type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
17
17
|
|
|
18
18
|
export async function computeHash(_params: { subject: string; nonce: string; counter: number }): Promise<Uint8Array> {
|
|
19
19
|
throw new NotImplementedError('computeHash - mobile uses native Nitro modules')
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
* Shared types and platform-agnostic functions live in shared.ts.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { PlatformSplitStubError } from 'utilities/src/errors'
|
|
11
|
+
import { PlatformSplitStubError } from '@luxfi/utilities/src/errors'
|
|
12
12
|
|
|
13
|
-
export type { HashcashChallenge, ProofResult } from '@
|
|
13
|
+
export type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
14
14
|
// Re-export everything from shared — types, checkDifficulty, formatHashcashString
|
|
15
|
-
export { checkDifficulty, formatHashcashString } from '@
|
|
15
|
+
export { checkDifficulty, formatHashcashString } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
16
16
|
|
|
17
|
-
import type { HashcashChallenge, ProofResult } from '@
|
|
17
|
+
import type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
18
18
|
|
|
19
19
|
export async function computeHash(_params: { subject: string; nonce: string; counter: number }): Promise<Uint8Array> {
|
|
20
20
|
throw new PlatformSplitStubError('computeHash')
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { sha256 } from '@noble/hashes/webcrypto.js'
|
|
10
10
|
|
|
11
|
-
export type { HashcashChallenge, ProofResult } from '@
|
|
11
|
+
export type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
12
12
|
// Re-export shared types and platform-agnostic functions
|
|
13
|
-
export { checkDifficulty, formatHashcashString } from '@
|
|
13
|
+
export { checkDifficulty, formatHashcashString } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
14
14
|
|
|
15
|
-
import type { HashcashChallenge, ProofResult } from '@
|
|
16
|
-
import { checkDifficulty } from '@
|
|
15
|
+
import type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
16
|
+
import { checkDifficulty } from '@luxexchange/sessions/src/challenge-solvers/hashcash/shared'
|
|
17
17
|
|
|
18
18
|
// Pre-allocated TextEncoder for memory efficiency (avoids creating new instance per hash)
|
|
19
19
|
const encoder = new TextEncoder()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChallengeType } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
2
|
-
import { createWorkerHashcashSolver } from '@
|
|
3
|
-
import type { HashcashWorkerChannelFactory } from '@
|
|
4
|
-
import type { ChallengeData } from '@
|
|
2
|
+
import { createWorkerHashcashSolver } from '@luxexchange/sessions/src/challenge-solvers/hashcash/createWorkerHashcashSolver'
|
|
3
|
+
import type { HashcashWorkerChannelFactory } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
4
|
+
import type { ChallengeData } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
5
5
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
6
6
|
|
|
7
7
|
describe('createWorkerHashcashSolver', () => {
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Offloads proof-of-work computation to a Web Worker to avoid
|
|
5
5
|
* blocking the main thread.
|
|
6
6
|
*/
|
|
7
|
-
import { parseHashcashChallenge } from '@
|
|
8
|
-
import type { HashcashChallenge } from '@
|
|
9
|
-
import type { HashcashWorkerChannelFactory } from '@
|
|
10
|
-
import type { ChallengeData, ChallengeSolver } from '@
|
|
7
|
+
import { parseHashcashChallenge } from '@luxexchange/sessions/src/challenge-solvers/createHashcashSolver'
|
|
8
|
+
import type { HashcashChallenge } from '@luxexchange/sessions/src/challenge-solvers/hashcash/core'
|
|
9
|
+
import type { HashcashWorkerChannelFactory } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
10
|
+
import type { ChallengeData, ChallengeSolver } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
11
11
|
|
|
12
12
|
interface CreateWorkerHashcashSolverContext {
|
|
13
13
|
/**
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Web Workers are not available in React Native.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { HashcashWorkerChannel } from '@
|
|
7
|
-
import { NotImplementedError } from 'utilities/src/errors'
|
|
6
|
+
import type { HashcashWorkerChannel } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
7
|
+
import { NotImplementedError } from '@luxfi/utilities/src/errors'
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Configuration for multi-worker hashcash channel.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Platform-specific implementations override this file.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { HashcashWorkerChannel } from '@
|
|
7
|
-
import { PlatformSplitStubError } from 'utilities/src/errors'
|
|
6
|
+
import type { HashcashWorkerChannel } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
7
|
+
import { PlatformSplitStubError } from '@luxfi/utilities/src/errors'
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Configuration for multi-worker hashcash channel.
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
* - 8 workers ~= 8x speedup (diminishing returns beyond core count)
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import type { ProofResult } from '@
|
|
12
|
+
import type { ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/core'
|
|
13
13
|
import type {
|
|
14
14
|
FindProofParams,
|
|
15
15
|
HashcashWorkerAPI,
|
|
16
16
|
HashcashWorkerChannel,
|
|
17
|
-
} from '@
|
|
17
|
+
} from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
18
18
|
import { createChannel } from 'bidc'
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import type {
|
|
7
7
|
CreateHashcashWorkerChannelContext,
|
|
8
8
|
HashcashWorkerChannel,
|
|
9
|
-
} from '@
|
|
10
|
-
import { NotImplementedError } from 'utilities/src/errors'
|
|
9
|
+
} from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
10
|
+
import { NotImplementedError } from '@luxfi/utilities/src/errors'
|
|
11
11
|
|
|
12
12
|
function createHashcashWorkerChannel(_ctx: CreateHashcashWorkerChannelContext): HashcashWorkerChannel {
|
|
13
13
|
throw new NotImplementedError('createHashcashWorkerChannel')
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import type {
|
|
7
7
|
CreateHashcashWorkerChannelContext,
|
|
8
8
|
HashcashWorkerChannel,
|
|
9
|
-
} from '@
|
|
10
|
-
import { PlatformSplitStubError } from 'utilities/src/errors'
|
|
9
|
+
} from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
10
|
+
import { PlatformSplitStubError } from '@luxfi/utilities/src/errors'
|
|
11
11
|
|
|
12
12
|
function createHashcashWorkerChannel(_ctx: CreateHashcashWorkerChannelContext): HashcashWorkerChannel {
|
|
13
13
|
throw new PlatformSplitStubError('createHashcashWorkerChannel')
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
* This is the web platform implementation used by both web app and extension.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import type { ProofResult } from '@
|
|
10
|
+
import type { ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/core'
|
|
11
11
|
import type {
|
|
12
12
|
CreateHashcashWorkerChannelContext,
|
|
13
13
|
FindProofParams,
|
|
14
14
|
HashcashWorkerAPI,
|
|
15
15
|
HashcashWorkerChannel,
|
|
16
|
-
} from '@
|
|
16
|
+
} from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
17
17
|
import { createChannel } from 'bidc'
|
|
18
18
|
|
|
19
19
|
// Singleton worker instance for reuse
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HashcashChallenge, ProofResult } from '@
|
|
1
|
+
import type { HashcashChallenge, ProofResult } from '@luxexchange/sessions/src/challenge-solvers/hashcash/core'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Parameters for finding a hashcash proof
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TurnstileScriptLoadError } from '@
|
|
2
|
-
import type { TurnstileScriptOptions } from '@
|
|
1
|
+
import { TurnstileScriptLoadError } from '@luxexchange/sessions/src/challenge-solvers/turnstileErrors'
|
|
2
|
+
import type { TurnstileScriptOptions } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
3
3
|
|
|
4
4
|
type TurnstileState = 'unloaded' | 'loading' | 'ready'
|
|
5
5
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// @vitest-environment happy-dom
|
|
2
2
|
import { ChallengeType } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
3
|
-
import { createTurnstileSolver } from '@
|
|
4
|
-
import { resetTurnstileState } from '@
|
|
5
|
-
import type { PerformanceTracker } from '@
|
|
3
|
+
import { createTurnstileSolver } from '@luxexchange/sessions/src/challenge-solvers/createTurnstileSolver'
|
|
4
|
+
import { resetTurnstileState } from '@luxexchange/sessions/src/challenge-solvers/turnstileScriptLoader'
|
|
5
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
6
6
|
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
7
7
|
|
|
8
8
|
// Mock performance tracker for testing
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TypedChallengeData } from '@
|
|
2
|
-
import type { ChallengeType } from '@
|
|
1
|
+
import type { TypedChallengeData } from '@luxexchange/sessions/src/session-repository/types'
|
|
2
|
+
import type { ChallengeType } from '@luxexchange/sessions/src/session-service/types'
|
|
3
3
|
|
|
4
4
|
interface ChallengeData {
|
|
5
5
|
challengeId: string
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
VerifyResponse,
|
|
9
9
|
VerifySuccess,
|
|
10
10
|
} from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
11
|
-
import { createChallengeSolverService } from '@
|
|
12
|
-
import type { ChallengeSolver } from '@
|
|
13
|
-
import type { PerformanceTracker } from '@
|
|
11
|
+
import { createChallengeSolverService } from '@luxexchange/sessions/src/challenge-solvers/createChallengeSolverService'
|
|
12
|
+
import type { ChallengeSolver } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
13
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
14
14
|
import {
|
|
15
15
|
createSessionInitializationService,
|
|
16
16
|
type SessionInitializationService,
|
|
17
|
-
} from '@
|
|
18
|
-
import { createSessionRepository } from '@
|
|
19
|
-
import { createSessionService } from '@
|
|
20
|
-
import type { SessionService } from '@
|
|
17
|
+
} from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
|
|
18
|
+
import { createSessionRepository } from '@luxexchange/sessions/src/session-repository/createSessionRepository'
|
|
19
|
+
import { createSessionService } from '@luxexchange/sessions/src/session-service/createSessionService'
|
|
20
|
+
import type { SessionService } from '@luxexchange/sessions/src/session-service/types'
|
|
21
21
|
import {
|
|
22
22
|
createMockSessionClient,
|
|
23
23
|
createTestTransport,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
InMemorySessionStorage,
|
|
26
26
|
InMemoryLuxIdentifierService,
|
|
27
27
|
type MockEndpoints,
|
|
28
|
-
} from '@
|
|
28
|
+
} from '@luxexchange/sessions/src/test-utils'
|
|
29
29
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
30
30
|
|
|
31
31
|
// Helper: create a VerifyResponse with a success outcome (proto3 validation requires outcome.case)
|
package/src/index.ts
CHANGED
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
// Device ID
|
|
12
|
-
export { createDeviceIdService } from '@
|
|
13
|
-
export type { DeviceIdService } from '@
|
|
12
|
+
export { createDeviceIdService } from '@luxexchange/sessions/src/device-id/createDeviceIdService'
|
|
13
|
+
export type { DeviceIdService } from '@luxexchange/sessions/src/device-id/types'
|
|
14
14
|
// Lux Identifier
|
|
15
|
-
export { createLuxIdentifierService } from '@
|
|
16
|
-
export { luxIdentifierQuery } from '@
|
|
17
|
-
export type { LuxIdentifierService } from '@
|
|
15
|
+
export { createLuxIdentifierService } from '@luxexchange/sessions/src/lux-identifier/createLuxIdentifierService'
|
|
16
|
+
export { luxIdentifierQuery } from '@luxexchange/sessions/src/lux-identifier/luxIdentifierQuery'
|
|
17
|
+
export type { LuxIdentifierService } from '@luxexchange/sessions/src/lux-identifier/types'
|
|
18
18
|
// Session Repository
|
|
19
|
-
export { createSessionRepository } from '@
|
|
20
|
-
export { ChallengeRejectedError } from '@
|
|
21
|
-
export { ChallengeFailureReason, VerifyFailureReason } from '@
|
|
19
|
+
export { createSessionRepository } from '@luxexchange/sessions/src/session-repository/createSessionRepository'
|
|
20
|
+
export { ChallengeRejectedError } from '@luxexchange/sessions/src/session-repository/errors'
|
|
21
|
+
export { ChallengeFailureReason, VerifyFailureReason } from '@luxexchange/sessions/src/session-repository/types'
|
|
22
22
|
export type {
|
|
23
23
|
SessionRepository,
|
|
24
24
|
ChallengeTypeConfig,
|
|
@@ -26,11 +26,11 @@ export type {
|
|
|
26
26
|
TurnstileChallengeData,
|
|
27
27
|
HashCashChallengeData,
|
|
28
28
|
GitHubChallengeData,
|
|
29
|
-
} from '@
|
|
29
|
+
} from '@luxexchange/sessions/src/session-repository/types'
|
|
30
30
|
|
|
31
31
|
// Session Service
|
|
32
|
-
export { createNoopSessionService } from '@
|
|
33
|
-
export { createSessionService } from '@
|
|
32
|
+
export { createNoopSessionService } from '@luxexchange/sessions/src/session-service/createNoopSessionService'
|
|
33
|
+
export { createSessionService } from '@luxexchange/sessions/src/session-service/createSessionService'
|
|
34
34
|
export type {
|
|
35
35
|
SessionService,
|
|
36
36
|
InitSessionResponse,
|
|
@@ -38,74 +38,74 @@ export type {
|
|
|
38
38
|
ChallengeResponse,
|
|
39
39
|
VerifySessionRequest,
|
|
40
40
|
VerifySessionResponse,
|
|
41
|
-
} from '@
|
|
41
|
+
} from '@luxexchange/sessions/src/session-service/types'
|
|
42
42
|
|
|
43
43
|
// Session Storage
|
|
44
|
-
export { createSessionStorage } from '@
|
|
45
|
-
export type { SessionStorage, SessionState } from '@
|
|
44
|
+
export { createSessionStorage } from '@luxexchange/sessions/src/session-storage/createSessionStorage'
|
|
45
|
+
export type { SessionStorage, SessionState } from '@luxexchange/sessions/src/session-storage/types'
|
|
46
46
|
|
|
47
47
|
// Session Client
|
|
48
|
-
export { createSessionClient } from '@
|
|
49
|
-
export type { SessionServiceClient } from '@
|
|
48
|
+
export { createSessionClient } from '@luxexchange/sessions/src/session-repository/createSessionClient'
|
|
49
|
+
export type { SessionServiceClient } from '@luxexchange/sessions/src/session-repository/createSessionClient'
|
|
50
50
|
|
|
51
51
|
// Session Initialization
|
|
52
|
-
export { createSessionInitializationService } from '@
|
|
52
|
+
export { createSessionInitializationService } from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
|
|
53
53
|
export {
|
|
54
54
|
SessionError,
|
|
55
55
|
MaxChallengeRetriesError,
|
|
56
56
|
NoSolverAvailableError,
|
|
57
|
-
} from '@
|
|
57
|
+
} from '@luxexchange/sessions/src/session-initialization/sessionErrors'
|
|
58
58
|
export type {
|
|
59
59
|
SessionInitializationService,
|
|
60
60
|
SessionInitOptions,
|
|
61
61
|
SessionInitResult,
|
|
62
62
|
SessionInitAnalytics,
|
|
63
|
-
} from '@
|
|
63
|
+
} from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
|
|
64
64
|
|
|
65
65
|
// Challenge Solvers
|
|
66
|
-
export { createChallengeSolverService } from '@
|
|
67
|
-
export { createTurnstileMockSolver } from '@
|
|
68
|
-
export { createHashcashMockSolver } from '@
|
|
69
|
-
export { createNoneMockSolver } from '@
|
|
70
|
-
export { createTurnstileSolver } from '@
|
|
71
|
-
export { createHashcashSolver } from '@
|
|
72
|
-
export { createWorkerHashcashSolver } from '@
|
|
66
|
+
export { createChallengeSolverService } from '@luxexchange/sessions/src/challenge-solvers/createChallengeSolverService'
|
|
67
|
+
export { createTurnstileMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createTurnstileMockSolver'
|
|
68
|
+
export { createHashcashMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createHashcashMockSolver'
|
|
69
|
+
export { createNoneMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createNoneMockSolver'
|
|
70
|
+
export { createTurnstileSolver } from '@luxexchange/sessions/src/challenge-solvers/createTurnstileSolver'
|
|
71
|
+
export { createHashcashSolver } from '@luxexchange/sessions/src/challenge-solvers/createHashcashSolver'
|
|
72
|
+
export { createWorkerHashcashSolver } from '@luxexchange/sessions/src/challenge-solvers/hashcash/createWorkerHashcashSolver'
|
|
73
73
|
export {
|
|
74
74
|
TurnstileScriptLoadError,
|
|
75
75
|
TurnstileApiNotAvailableError,
|
|
76
76
|
TurnstileTimeoutError,
|
|
77
77
|
TurnstileError,
|
|
78
78
|
TurnstileTokenExpiredError,
|
|
79
|
-
} from '@
|
|
79
|
+
} from '@luxexchange/sessions/src/challenge-solvers/turnstileErrors'
|
|
80
80
|
export type {
|
|
81
81
|
ChallengeSolver,
|
|
82
82
|
ChallengeSolverService,
|
|
83
83
|
ChallengeData,
|
|
84
84
|
TurnstileScriptOptions,
|
|
85
|
-
} from '@
|
|
85
|
+
} from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
86
86
|
export type {
|
|
87
87
|
CreateTurnstileSolverContext,
|
|
88
88
|
TurnstileSolveAnalytics,
|
|
89
|
-
} from '@
|
|
89
|
+
} from '@luxexchange/sessions/src/challenge-solvers/createTurnstileSolver'
|
|
90
90
|
export type {
|
|
91
91
|
CreateHashcashWorkerChannelContext,
|
|
92
92
|
HashcashWorkerChannel,
|
|
93
93
|
HashcashWorkerChannelFactory,
|
|
94
|
-
} from '@
|
|
95
|
-
export { createHashcashWorkerChannel } from '@
|
|
96
|
-
export { createHashcashMultiWorkerChannel } from '@
|
|
97
|
-
export type { MultiWorkerConfig } from '@
|
|
98
|
-
export type { CreateWorkerHashcashSolverContext } from '@
|
|
94
|
+
} from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/types'
|
|
95
|
+
export { createHashcashWorkerChannel } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel'
|
|
96
|
+
export { createHashcashMultiWorkerChannel } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel'
|
|
97
|
+
export type { MultiWorkerConfig } from '@luxexchange/sessions/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel'
|
|
98
|
+
export type { CreateWorkerHashcashSolverContext } from '@luxexchange/sessions/src/challenge-solvers/hashcash/createWorkerHashcashSolver'
|
|
99
99
|
export type {
|
|
100
100
|
CreateHashcashSolverContext,
|
|
101
101
|
HashcashSolveAnalytics,
|
|
102
|
-
} from '@
|
|
102
|
+
} from '@luxexchange/sessions/src/challenge-solvers/createHashcashSolver'
|
|
103
103
|
|
|
104
|
-
export { ChallengeType } from '@
|
|
104
|
+
export { ChallengeType } from '@luxexchange/sessions/src/session-service/types'
|
|
105
105
|
|
|
106
106
|
// OAuth Service
|
|
107
|
-
export { createOAuthService } from '@
|
|
108
|
-
export type { CreateOAuthServiceContext } from '@
|
|
107
|
+
export { createOAuthService } from '@luxexchange/sessions/src/oauth-service/createOAuthService'
|
|
108
|
+
export type { CreateOAuthServiceContext } from '@luxexchange/sessions/src/oauth-service/createOAuthService'
|
|
109
109
|
export type {
|
|
110
110
|
OAuthService,
|
|
111
111
|
OAuthInitiationResult,
|
|
@@ -114,24 +114,24 @@ export type {
|
|
|
114
114
|
OAuthInitiateParams,
|
|
115
115
|
OAuthVerifyParams,
|
|
116
116
|
OAuthUserInfo,
|
|
117
|
-
} from '@
|
|
117
|
+
} from '@luxexchange/sessions/src/oauth-service/types'
|
|
118
118
|
|
|
119
119
|
// Performance Tracking
|
|
120
|
-
export type { PerformanceTracker } from '@
|
|
120
|
+
export type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
121
121
|
export {
|
|
122
122
|
createPerformanceTracker,
|
|
123
123
|
PERFORMANCE_TRACKING_DISABLED,
|
|
124
|
-
} from '@
|
|
125
|
-
export type { CreatePerformanceTrackerContext } from '@
|
|
126
|
-
export { createNoopPerformanceTracker } from '@
|
|
124
|
+
} from '@luxexchange/sessions/src/performance/createPerformanceTracker'
|
|
125
|
+
export type { CreatePerformanceTrackerContext } from '@luxexchange/sessions/src/performance/createPerformanceTracker'
|
|
126
|
+
export { createNoopPerformanceTracker } from '@luxexchange/sessions/src/performance/createNoopPerformanceTracker'
|
|
127
127
|
|
|
128
128
|
// Test utilities (for integration testing)
|
|
129
129
|
export {
|
|
130
130
|
InMemorySessionStorage,
|
|
131
131
|
InMemoryDeviceIdService,
|
|
132
132
|
InMemoryLuxIdentifierService,
|
|
133
|
-
} from '@
|
|
133
|
+
} from '@luxexchange/sessions/src/test-utils'
|
|
134
134
|
export {
|
|
135
135
|
createCookieJar,
|
|
136
136
|
createLocalCookieTransport,
|
|
137
|
-
} from '@
|
|
137
|
+
} from '@luxexchange/sessions/src/test-utils/createLocalCookieTransport'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { queryOptions } from '@tanstack/react-query'
|
|
2
|
-
import type { LuxIdentifierService } from '@
|
|
3
|
-
import { ReactQueryCacheKey } from 'utilities/src/reactQuery/cache'
|
|
4
|
-
import type { QueryOptionsResult } from 'utilities/src/reactQuery/queryOptions'
|
|
2
|
+
import type { LuxIdentifierService } from '@luxexchange/sessions/src/lux-identifier/types'
|
|
3
|
+
import { ReactQueryCacheKey } from '@luxfi/utilities/src/reactQuery/cache'
|
|
4
|
+
import type { QueryOptionsResult } from '@luxfi/utilities/src/reactQuery/queryOptions'
|
|
5
5
|
|
|
6
6
|
type LuxIdentifierQueryOptions = QueryOptionsResult<
|
|
7
7
|
string | null,
|
|
@@ -5,8 +5,8 @@ import type {
|
|
|
5
5
|
OAuthService,
|
|
6
6
|
OAuthVerificationResult,
|
|
7
7
|
OAuthVerifyParams,
|
|
8
|
-
} from '@
|
|
9
|
-
import type { SessionRepository } from '@
|
|
8
|
+
} from '@luxexchange/sessions/src/oauth-service/types'
|
|
9
|
+
import type { SessionRepository } from '@luxexchange/sessions/src/session-repository/types'
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Context (dependencies) for creating an OAuthService
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PERFORMANCE_TRACKING_DISABLED } from '@
|
|
2
|
-
import type { PerformanceTracker } from '@
|
|
1
|
+
import { PERFORMANCE_TRACKING_DISABLED } from '@luxexchange/sessions/src/performance/createPerformanceTracker'
|
|
2
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Creates a noop performance tracker that always returns the disabled sentinel.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PerformanceTracker } from '@
|
|
1
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
2
2
|
|
|
3
3
|
/** Sentinel value indicating performance tracking is disabled */
|
|
4
4
|
export const PERFORMANCE_TRACKING_DISABLED = -1
|
package/src/performance/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable check-file/no-index */
|
|
2
|
-
export type { CreatePerformanceTrackerContext } from '@
|
|
2
|
+
export type { CreatePerformanceTrackerContext } from '@luxexchange/sessions/src/performance/createPerformanceTracker'
|
|
3
3
|
export {
|
|
4
4
|
createPerformanceTracker,
|
|
5
5
|
PERFORMANCE_TRACKING_DISABLED,
|
|
6
|
-
} from '@
|
|
7
|
-
export type { PerformanceTracker } from '@
|
|
6
|
+
} from '@luxexchange/sessions/src/performance/createPerformanceTracker'
|
|
7
|
+
export type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { PerformanceTracker } from '@
|
|
2
|
-
import { createSessionInitializationService } from '@
|
|
3
|
-
import { ChallengeType } from '@
|
|
1
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
2
|
+
import { createSessionInitializationService } from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
|
|
3
|
+
import { ChallengeType } from '@luxexchange/sessions/src/session-service/types'
|
|
4
4
|
import {
|
|
5
5
|
createMockChallengeSolverService,
|
|
6
6
|
createMockSessionService,
|
|
7
7
|
TestScenarios,
|
|
8
|
-
} from '@
|
|
8
|
+
} from '@luxexchange/sessions/src/test-utils/mocks'
|
|
9
9
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
10
10
|
|
|
11
11
|
// Mock performance tracker for testing
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { ChallengeSolverService } from '@
|
|
2
|
-
import type { PerformanceTracker } from '@
|
|
1
|
+
import type { ChallengeSolverService } from '@luxexchange/sessions/src/challenge-solvers/types'
|
|
2
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
3
3
|
import {
|
|
4
4
|
MaxChallengeRetriesError,
|
|
5
5
|
NoSolverAvailableError,
|
|
6
|
-
} from '@
|
|
7
|
-
import type { SessionService } from '@
|
|
8
|
-
import type { Logger } from 'utilities/src/logger/logger'
|
|
6
|
+
} from '@luxexchange/sessions/src/session-initialization/sessionErrors'
|
|
7
|
+
import type { SessionService } from '@luxexchange/sessions/src/session-service/types'
|
|
8
|
+
import type { Logger } from '@luxfi/utilities/src/logger/logger'
|
|
9
9
|
|
|
10
10
|
interface SessionInitResult {
|
|
11
11
|
sessionId: string | null
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
InitSessionResponse,
|
|
9
9
|
SignoutResponse,
|
|
10
10
|
} from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
11
|
-
import { createSessionRepository } from '@
|
|
12
|
-
import { ChallengeRejectedError } from '@
|
|
13
|
-
import { ChallengeType } from '@
|
|
11
|
+
import { createSessionRepository } from '@luxexchange/sessions/src/session-repository/createSessionRepository'
|
|
12
|
+
import { ChallengeRejectedError } from '@luxexchange/sessions/src/session-repository/errors'
|
|
13
|
+
import { ChallengeType } from '@luxexchange/sessions/src/session-service/types'
|
|
14
14
|
import { describe, expect, it, type MockedFunction, vi } from 'vitest'
|
|
15
15
|
|
|
16
16
|
type MockedClient = {
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
ChallengeFailure_Reason,
|
|
3
3
|
VerifyFailure_Reason,
|
|
4
4
|
} from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
5
|
-
import type { SessionServiceClient } from '@
|
|
6
|
-
import { ChallengeRejectedError } from '@
|
|
7
|
-
import type { SessionRepository, TypedChallengeData } from '@
|
|
8
|
-
import { ChallengeFailureReason, VerifyFailureReason } from '@
|
|
9
|
-
import type { Logger } from 'utilities/src/logger/logger'
|
|
5
|
+
import type { SessionServiceClient } from '@luxexchange/sessions/src/session-repository/createSessionClient'
|
|
6
|
+
import { ChallengeRejectedError } from '@luxexchange/sessions/src/session-repository/errors'
|
|
7
|
+
import type { SessionRepository, TypedChallengeData } from '@luxexchange/sessions/src/session-repository/types'
|
|
8
|
+
import { ChallengeFailureReason, VerifyFailureReason } from '@luxexchange/sessions/src/session-repository/types'
|
|
9
|
+
import type { Logger } from '@luxfi/utilities/src/logger/logger'
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Creates a session repository that handles communication with the session service.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { DeviceIdService } from '@
|
|
2
|
-
import type { SessionRepository } from '@
|
|
1
|
+
import type { DeviceIdService } from '@luxexchange/sessions/src/device-id/types'
|
|
2
|
+
import type { SessionRepository } from '@luxexchange/sessions/src/session-repository/types'
|
|
3
3
|
import type {
|
|
4
4
|
ChallengeRequest,
|
|
5
5
|
ChallengeResponse,
|
|
@@ -7,9 +7,9 @@ import type {
|
|
|
7
7
|
SessionService,
|
|
8
8
|
VerifySessionRequest,
|
|
9
9
|
VerifySessionResponse,
|
|
10
|
-
} from '@
|
|
11
|
-
import type { SessionStorage } from '@
|
|
12
|
-
import type { LuxIdentifierService } from '@
|
|
10
|
+
} from '@luxexchange/sessions/src/session-service/types'
|
|
11
|
+
import type { SessionStorage } from '@luxexchange/sessions/src/session-storage/types'
|
|
12
|
+
import type { LuxIdentifierService } from '@luxexchange/sessions/src/lux-identifier/types'
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Creates a Session Service instance.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChallengeType } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
|
|
2
|
-
import type { TypedChallengeData } from '@
|
|
3
|
-
import { SessionState } from '@
|
|
2
|
+
import type { TypedChallengeData } from '@luxexchange/sessions/src/session-repository/types'
|
|
3
|
+
import { SessionState } from '@luxexchange/sessions/src/session-storage/types'
|
|
4
4
|
|
|
5
5
|
interface InitSessionResponse {
|
|
6
6
|
sessionId?: string
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { createChallengeSolverService } from '@
|
|
2
|
-
import { createHashcashSolver } from '@
|
|
3
|
-
import { createNoneMockSolver } from '@
|
|
4
|
-
import { createTurnstileMockSolver } from '@
|
|
5
|
-
import type { PerformanceTracker } from '@
|
|
6
|
-
import { createSessionInitializationService } from '@
|
|
7
|
-
import { createSessionClient } from '@
|
|
8
|
-
import { createSessionRepository } from '@
|
|
9
|
-
import { createSessionService } from '@
|
|
10
|
-
import type { SessionService } from '@
|
|
11
|
-
import { ChallengeType } from '@
|
|
1
|
+
import { createChallengeSolverService } from '@luxexchange/sessions/src/challenge-solvers/createChallengeSolverService'
|
|
2
|
+
import { createHashcashSolver } from '@luxexchange/sessions/src/challenge-solvers/createHashcashSolver'
|
|
3
|
+
import { createNoneMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createNoneMockSolver'
|
|
4
|
+
import { createTurnstileMockSolver } from '@luxexchange/sessions/src/challenge-solvers/createTurnstileMockSolver'
|
|
5
|
+
import type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
|
|
6
|
+
import { createSessionInitializationService } from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
|
|
7
|
+
import { createSessionClient } from '@luxexchange/sessions/src/session-repository/createSessionClient'
|
|
8
|
+
import { createSessionRepository } from '@luxexchange/sessions/src/session-repository/createSessionRepository'
|
|
9
|
+
import { createSessionService } from '@luxexchange/sessions/src/session-service/createSessionService'
|
|
10
|
+
import type { SessionService } from '@luxexchange/sessions/src/session-service/types'
|
|
11
|
+
import { ChallengeType } from '@luxexchange/sessions/src/session-service/types'
|
|
12
12
|
import {
|
|
13
13
|
InMemoryDeviceIdService,
|
|
14
14
|
InMemorySessionStorage,
|
|
15
15
|
InMemoryLuxIdentifierService,
|
|
16
|
-
} from '@
|
|
16
|
+
} from '@luxexchange/sessions/src/test-utils'
|
|
17
17
|
import {
|
|
18
18
|
createCookieJar,
|
|
19
19
|
createLocalCookieTransport,
|
|
20
|
-
} from '@
|
|
21
|
-
import { createLocalHeaderTransport } from '@
|
|
20
|
+
} from '@luxexchange/sessions/src/test-utils/createLocalCookieTransport'
|
|
21
|
+
import { createLocalHeaderTransport } from '@luxexchange/sessions/src/test-utils/createLocalHeaderTransport'
|
|
22
22
|
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
23
23
|
|
|
24
24
|
// Mock performance tracker for testing
|