@luxexchange/sessions 1.0.1 → 1.0.3

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 (68) hide show
  1. package/.depcheckrc +20 -0
  2. package/.eslintrc.js +21 -0
  3. package/README.md +1 -0
  4. package/env.d.ts +12 -0
  5. package/package.json +3 -4
  6. package/project.json +2 -8
  7. package/src/challenge-solvers/createChallengeSolverService.ts +5 -5
  8. package/src/challenge-solvers/createHashcashMockSolver.ts +1 -1
  9. package/src/challenge-solvers/createHashcashSolver.test.ts +10 -10
  10. package/src/challenge-solvers/createHashcashSolver.ts +22 -7
  11. package/src/challenge-solvers/createNoneMockSolver.ts +1 -1
  12. package/src/challenge-solvers/createTurnstileMockSolver.ts +1 -1
  13. package/src/challenge-solvers/createTurnstileSolver.ts +12 -8
  14. package/src/challenge-solvers/hashcash/core.native.ts +3 -3
  15. package/src/challenge-solvers/hashcash/core.test.ts +10 -10
  16. package/src/challenge-solvers/hashcash/core.ts +3 -3
  17. package/src/challenge-solvers/hashcash/core.web.ts +4 -4
  18. package/src/challenge-solvers/hashcash/createWorkerHashcashSolver.test.ts +7 -7
  19. package/src/challenge-solvers/hashcash/createWorkerHashcashSolver.ts +4 -4
  20. package/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel.native.ts +1 -1
  21. package/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel.ts +1 -1
  22. package/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel.web.ts +2 -2
  23. package/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel.native.ts +1 -1
  24. package/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel.ts +1 -1
  25. package/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel.web.ts +2 -2
  26. package/src/challenge-solvers/hashcash/worker/hashcash.worker.ts +3 -3
  27. package/src/challenge-solvers/hashcash/worker/types.ts +1 -1
  28. package/src/challenge-solvers/turnstileErrors.ts +1 -1
  29. package/src/challenge-solvers/turnstileScriptLoader.ts +2 -2
  30. package/src/challenge-solvers/turnstileSolver.integration.test.ts +4 -4
  31. package/src/challenge-solvers/types.ts +2 -2
  32. package/src/challengeFlow.integration.test.ts +49 -49
  33. package/src/device-id/createDeviceIdService.ts +1 -1
  34. package/src/index.ts +50 -48
  35. package/src/oauth-service/createOAuthService.ts +2 -2
  36. package/src/oauth-service/types.ts +1 -1
  37. package/src/performance/createNoopPerformanceTracker.ts +2 -2
  38. package/src/performance/createPerformanceTracker.ts +1 -1
  39. package/src/performance/index.ts +3 -3
  40. package/src/session-initialization/createSessionInitializationService.test.ts +4 -4
  41. package/src/session-initialization/createSessionInitializationService.ts +32 -41
  42. package/src/session-repository/createSessionClient.ts +1 -1
  43. package/src/session-repository/createSessionRepository.test.ts +5 -5
  44. package/src/session-repository/createSessionRepository.ts +14 -14
  45. package/src/session-repository/errors.ts +1 -1
  46. package/src/session-repository/types.ts +1 -1
  47. package/src/session-service/createNoopSessionService.ts +2 -2
  48. package/src/session-service/createSessionService.test.ts +29 -29
  49. package/src/session-service/createSessionService.ts +8 -8
  50. package/src/session-service/types.ts +3 -3
  51. package/src/session-storage/createSessionStorage.ts +1 -1
  52. package/src/session.integration.test.ts +130 -94
  53. package/src/sessionLifecycle.integration.test.ts +22 -22
  54. package/src/test-utils/createLocalCookieTransport.ts +1 -1
  55. package/src/test-utils/createLocalHeaderTransport.ts +1 -1
  56. package/src/test-utils/mocks.ts +3 -3
  57. package/src/test-utils.ts +24 -24
  58. package/src/uniswap-identifier/createUniswapIdentifierService.ts +19 -0
  59. package/src/uniswap-identifier/types.ts +11 -0
  60. package/src/uniswap-identifier/uniswapIdentifierQuery.ts +20 -0
  61. package/tsconfig.json +10 -3
  62. package/tsconfig.lint.json +8 -0
  63. package/tsconfig.spec.json +8 -0
  64. package/vitest.config.ts +20 -0
  65. package/vitest.integration.config.ts +14 -0
  66. package/src/lux-identifier/createLuxIdentifierService.ts +0 -19
  67. package/src/lux-identifier/luxIdentifierQuery.ts +0 -20
  68. package/src/lux-identifier/types.ts +0 -11
@@ -7,25 +7,25 @@ import {
7
7
  SignoutResponse,
8
8
  VerifyResponse,
9
9
  VerifySuccess,
10
- } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
11
- import { createChallengeSolverService } from '@universe/sessions/src/challenge-solvers/createChallengeSolverService'
12
- import type { ChallengeSolver } from '@universe/sessions/src/challenge-solvers/types'
13
- import type { PerformanceTracker } from '@universe/sessions/src/performance/types'
10
+ } from '@luxamm/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
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 '@universe/sessions/src/session-initialization/createSessionInitializationService'
18
- import { createSessionRepository } from '@universe/sessions/src/session-repository/createSessionRepository'
19
- import { createSessionService } from '@universe/sessions/src/session-service/createSessionService'
20
- import type { SessionService } from '@universe/sessions/src/session-service/types'
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,
24
24
  InMemoryDeviceIdService,
25
25
  InMemorySessionStorage,
26
- InMemoryLuxIdentifierService,
26
+ InMemoryLxIdentifierService,
27
27
  type MockEndpoints,
28
- } from '@universe/sessions/src/test-utils'
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)
@@ -52,7 +52,7 @@ const mockTurnstileSolve = vi.fn()
52
52
  describe('Challenge Flow Integration Tests', () => {
53
53
  let sessionStorage: InMemorySessionStorage
54
54
  let deviceIdService: InMemoryDeviceIdService
55
- let luxIdentifierService: InMemoryLuxIdentifierService
55
+ let lxIdentifierService: InMemoryLxIdentifierService
56
56
  let sessionService: SessionService
57
57
  let sessionInitializationService: SessionInitializationService
58
58
  let mockEndpoints: MockEndpoints
@@ -61,18 +61,18 @@ describe('Challenge Flow Integration Tests', () => {
61
61
  // Initialize in-memory storage
62
62
  sessionStorage = new InMemorySessionStorage()
63
63
  deviceIdService = new InMemoryDeviceIdService()
64
- luxIdentifierService = new InMemoryLuxIdentifierService()
64
+ lxIdentifierService = new InMemoryLxIdentifierService()
65
65
 
66
66
  // Set up mock endpoints with default responses
67
67
  mockEndpoints = {
68
- '/lux.platformservice.v1.SessionService/InitSession': async (): Promise<InitSessionResponse> => {
68
+ '/uniswap.platformservice.v1.SessionService/InitSession': async (): Promise<InitSessionResponse> => {
69
69
  return new InitSessionResponse({
70
70
  sessionId: 'test-session-123',
71
71
  needChallenge: true,
72
72
  extra: {},
73
73
  })
74
74
  },
75
- '/lux.platformservice.v1.SessionService/Challenge': async (): Promise<ChallengeResponse> => {
75
+ '/uniswap.platformservice.v1.SessionService/Challenge': async (): Promise<ChallengeResponse> => {
76
76
  return new ChallengeResponse({
77
77
  challengeId: '02c241f3-8d45-4a88-842a-d364c30a6c44',
78
78
  challengeType: ChallengeType.TURNSTILE,
@@ -81,16 +81,16 @@ describe('Challenge Flow Integration Tests', () => {
81
81
  },
82
82
  })
83
83
  },
84
- '/lux.platformservice.v1.SessionService/Verify': async (): Promise<VerifyResponse> => {
84
+ '/uniswap.platformservice.v1.SessionService/Verify': async (): Promise<VerifyResponse> => {
85
85
  return createSuccessVerifyResponse()
86
86
  },
87
- '/lux.platformservice.v1.SessionService/DeleteSession': async (): Promise<DeleteSessionResponse> => {
87
+ '/uniswap.platformservice.v1.SessionService/DeleteSession': async (): Promise<DeleteSessionResponse> => {
88
88
  return new DeleteSessionResponse({})
89
89
  },
90
- '/lux.platformservice.v1.SessionService/GetChallengeTypes': async (): Promise<GetChallengeTypesResponse> => {
90
+ '/uniswap.platformservice.v1.SessionService/GetChallengeTypes': async (): Promise<GetChallengeTypesResponse> => {
91
91
  return new GetChallengeTypesResponse({ challengeTypes: [] })
92
92
  },
93
- '/lux.platformservice.v1.SessionService/Signout': async (): Promise<SignoutResponse> => {
93
+ '/uniswap.platformservice.v1.SessionService/Signout': async (): Promise<SignoutResponse> => {
94
94
  return new SignoutResponse({})
95
95
  },
96
96
  } as unknown as MockEndpoints
@@ -110,7 +110,7 @@ describe('Challenge Flow Integration Tests', () => {
110
110
  sessionService = createSessionService({
111
111
  sessionStorage,
112
112
  deviceIdService,
113
- luxIdentifierService,
113
+ lxIdentifierService,
114
114
  sessionRepository,
115
115
  })
116
116
 
@@ -149,7 +149,7 @@ describe('Challenge Flow Integration Tests', () => {
149
149
 
150
150
  it('initializes a session with needChallenge: true and completes challenge flow', async () => {
151
151
  // Update mock to return needChallenge: true
152
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
152
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
153
153
  async (): Promise<InitSessionResponse> => {
154
154
  return new InitSessionResponse({
155
155
  sessionId: '776973bd-bbc2-452b-9c35-1b72c475afbd',
@@ -164,8 +164,8 @@ describe('Challenge Flow Integration Tests', () => {
164
164
  const verifyCalls: Array<{ request: any; headers: Record<string, string> }> = []
165
165
 
166
166
  // Wrap handlers to track calls
167
- const originalInit = mockEndpoints['/lux.platformservice.v1.SessionService/InitSession']
168
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] = async (
167
+ const originalInit = mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession']
168
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] = async (
169
169
  request,
170
170
  headers,
171
171
  ): Promise<InitSessionResponse> => {
@@ -173,8 +173,8 @@ describe('Challenge Flow Integration Tests', () => {
173
173
  return originalInit(request, headers)
174
174
  }
175
175
 
176
- const originalChallenge = mockEndpoints['/lux.platformservice.v1.SessionService/Challenge']
177
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (
176
+ const originalChallenge = mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge']
177
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (
178
178
  request,
179
179
  headers,
180
180
  ): Promise<ChallengeResponse> => {
@@ -182,8 +182,8 @@ describe('Challenge Flow Integration Tests', () => {
182
182
  return originalChallenge(request, headers)
183
183
  }
184
184
 
185
- const originalVerify = mockEndpoints['/lux.platformservice.v1.SessionService/Verify']
186
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (
185
+ const originalVerify = mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify']
186
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (
187
187
  request,
188
188
  headers,
189
189
  ): Promise<VerifyResponse> => {
@@ -254,7 +254,7 @@ describe('Challenge Flow Integration Tests', () => {
254
254
 
255
255
  // Track calls
256
256
  let initCallCount = 0
257
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
257
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
258
258
  async (): Promise<InitSessionResponse> => {
259
259
  initCallCount++
260
260
  // Backend returns the same session ID (simulating session reuse)
@@ -279,7 +279,7 @@ describe('Challenge Flow Integration Tests', () => {
279
279
 
280
280
  it('handles challenge retry when upgrade fails', async () => {
281
281
  // Set up to require challenge
282
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
282
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
283
283
  async (): Promise<InitSessionResponse> => {
284
284
  return new InitSessionResponse({
285
285
  sessionId: 'retry-session-123',
@@ -290,7 +290,7 @@ describe('Challenge Flow Integration Tests', () => {
290
290
 
291
291
  // Make first verify attempt fail with retry
292
292
  let verifyAttempts = 0
293
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
293
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
294
294
  verifyAttempts++
295
295
  if (verifyAttempts === 1) {
296
296
  return new VerifyResponse({ retry: true })
@@ -300,8 +300,8 @@ describe('Challenge Flow Integration Tests', () => {
300
300
 
301
301
  // Track challenge calls
302
302
  const challengeCalls: any[] = []
303
- const originalChallenge = mockEndpoints['/lux.platformservice.v1.SessionService/Challenge']
304
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (
303
+ const originalChallenge = mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge']
304
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (
305
305
  request,
306
306
  headers,
307
307
  ): Promise<ChallengeResponse> => {
@@ -323,7 +323,7 @@ describe('Challenge Flow Integration Tests', () => {
323
323
 
324
324
  it('respects maximum retry limit for challenges', async () => {
325
325
  // Set up to require challenge
326
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
326
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
327
327
  async (): Promise<InitSessionResponse> => {
328
328
  return new InitSessionResponse({
329
329
  sessionId: 'max-retry-session',
@@ -333,7 +333,7 @@ describe('Challenge Flow Integration Tests', () => {
333
333
  }
334
334
 
335
335
  // Always return retry: true
336
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
336
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
337
337
  return new VerifyResponse({ retry: true })
338
338
  }
339
339
 
@@ -341,8 +341,8 @@ describe('Challenge Flow Integration Tests', () => {
341
341
  const challengeCalls: any[] = []
342
342
  const verifyCalls: any[] = []
343
343
 
344
- const originalChallenge = mockEndpoints['/lux.platformservice.v1.SessionService/Challenge']
345
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (
344
+ const originalChallenge = mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge']
345
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (
346
346
  request,
347
347
  headers,
348
348
  ): Promise<ChallengeResponse> => {
@@ -350,8 +350,8 @@ describe('Challenge Flow Integration Tests', () => {
350
350
  return originalChallenge(request, headers)
351
351
  }
352
352
 
353
- const originalVerify = mockEndpoints['/lux.platformservice.v1.SessionService/Verify']
354
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (
353
+ const originalVerify = mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify']
354
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (
355
355
  request,
356
356
  headers,
357
357
  ): Promise<VerifyResponse> => {
@@ -374,8 +374,8 @@ describe('Challenge Flow Integration Tests', () => {
374
374
 
375
375
  // Track challenge request to verify headers
376
376
  let capturedHeaders: Record<string, string> = {}
377
- const originalChallenge = mockEndpoints['/lux.platformservice.v1.SessionService/Challenge']
378
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (
377
+ const originalChallenge = mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge']
378
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (
379
379
  request,
380
380
  headers,
381
381
  ): Promise<ChallengeResponse> => {
@@ -397,8 +397,8 @@ describe('Challenge Flow Integration Tests', () => {
397
397
 
398
398
  // Track challenge request to verify headers
399
399
  let capturedHeaders: Record<string, string> = {}
400
- const originalChallenge = mockEndpoints['/lux.platformservice.v1.SessionService/Challenge']
401
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (
400
+ const originalChallenge = mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge']
401
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (
402
402
  request,
403
403
  headers,
404
404
  ): Promise<ChallengeResponse> => {
@@ -416,7 +416,7 @@ describe('Challenge Flow Integration Tests', () => {
416
416
 
417
417
  it('submits empty solution when solver throws, allowing verify-retry fallback', async () => {
418
418
  // Set up to require challenge
419
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
419
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
420
420
  async (): Promise<InitSessionResponse> => {
421
421
  return new InitSessionResponse({
422
422
  sessionId: 'error-session-123',
@@ -430,7 +430,7 @@ describe('Challenge Flow Integration Tests', () => {
430
430
 
431
431
  // Verify endpoint accepts empty solution (no retry needed for this test)
432
432
  const verifyCalls: Array<{ request: any }> = []
433
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (request): Promise<VerifyResponse> => {
433
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (request): Promise<VerifyResponse> => {
434
434
  verifyCalls.push({ request })
435
435
  return createSuccessVerifyResponse()
436
436
  }
@@ -462,7 +462,7 @@ describe('Challenge Flow Integration Tests', () => {
462
462
 
463
463
  it('Turnstile solver fails → empty verify → retry → Hashcash succeeds end-to-end', async () => {
464
464
  // Set up to require challenge
465
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
465
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
466
466
  async (): Promise<InitSessionResponse> => {
467
467
  return new InitSessionResponse({
468
468
  sessionId: 'fallback-e2e-session',
@@ -473,7 +473,7 @@ describe('Challenge Flow Integration Tests', () => {
473
473
 
474
474
  // First challenge returns Turnstile, second returns Hashcash
475
475
  let challengeRequestCount = 0
476
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (): Promise<ChallengeResponse> => {
476
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (): Promise<ChallengeResponse> => {
477
477
  challengeRequestCount++
478
478
  if (challengeRequestCount === 1) {
479
479
  return new ChallengeResponse({
@@ -495,7 +495,7 @@ describe('Challenge Flow Integration Tests', () => {
495
495
 
496
496
  // First verify rejects empty solution, second succeeds
497
497
  let verifyCount = 0
498
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
498
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
499
499
  verifyCount++
500
500
  if (verifyCount === 1) {
501
501
  return new VerifyResponse({ retry: true })
@@ -544,7 +544,7 @@ describe('Challenge Flow Integration Tests', () => {
544
544
 
545
545
  it('falls back to Hashcash via verify-retry when mock Turnstile token is rejected', async () => {
546
546
  // Set up to require challenge
547
- mockEndpoints['/lux.platformservice.v1.SessionService/InitSession'] =
547
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/InitSession'] =
548
548
  async (): Promise<InitSessionResponse> => {
549
549
  return new InitSessionResponse({
550
550
  sessionId: 'fallback-session-123',
@@ -556,7 +556,7 @@ describe('Challenge Flow Integration Tests', () => {
556
556
  // First challenge returns Turnstile, second returns Hashcash
557
557
  // (backend switches after failed verification)
558
558
  let challengeRequestCount = 0
559
- mockEndpoints['/lux.platformservice.v1.SessionService/Challenge'] = async (): Promise<ChallengeResponse> => {
559
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Challenge'] = async (): Promise<ChallengeResponse> => {
560
560
  challengeRequestCount++
561
561
  if (challengeRequestCount === 1) {
562
562
  return new ChallengeResponse({
@@ -578,7 +578,7 @@ describe('Challenge Flow Integration Tests', () => {
578
578
 
579
579
  // First verify rejects mock token, second succeeds
580
580
  let verifyCount = 0
581
- mockEndpoints['/lux.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
581
+ mockEndpoints['/uniswap.platformservice.v1.SessionService/Verify'] = async (): Promise<VerifyResponse> => {
582
582
  verifyCount++
583
583
  if (verifyCount === 1) {
584
584
  return new VerifyResponse({ retry: true })
@@ -1,4 +1,4 @@
1
- import type { DeviceIdService } from '@luxfi/sessions/src/device-id/types'
1
+ import type { DeviceIdService } from '@luxexchange/sessions/src/device-id/types'
2
2
 
3
3
  function createDeviceIdService(ctx: {
4
4
  getDeviceId: () => Promise<string>
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /** biome-ignore-all assist/source/organizeImports: we want to manually group exports by category */
2
2
 
3
3
  /**
4
- * @universe/sessions
4
+ * @luxexchange/sessions
5
5
  *
6
6
  * This is the ONLY public entry point for the Sessions package.
7
7
  * All exports must be explicitly listed here.
@@ -9,16 +9,16 @@
9
9
  */
10
10
 
11
11
  // Device ID
12
- export { createDeviceIdService } from '@universe/sessions/src/device-id/createDeviceIdService'
13
- export type { DeviceIdService } from '@universe/sessions/src/device-id/types'
14
- // Lux Identifier
15
- export { createLuxIdentifierService } from '@universe/sessions/src/lux-identifier/createLuxIdentifierService'
16
- export { luxIdentifierQuery } from '@universe/sessions/src/lux-identifier/luxIdentifierQuery'
17
- export type { LuxIdentifierService } from '@universe/sessions/src/lux-identifier/types'
12
+ export { createDeviceIdService } from '@luxexchange/sessions/src/device-id/createDeviceIdService'
13
+ export type { DeviceIdService } from '@luxexchange/sessions/src/device-id/types'
14
+ // Uniswap Identifier
15
+ export { createLxIdentifierService } from '@luxexchange/sessions/src/uniswap-identifier/createLxIdentifierService'
16
+ export { lxIdentifierQuery } from '@luxexchange/sessions/src/uniswap-identifier/lxIdentifierQuery'
17
+ export type { LxIdentifierService } from '@luxexchange/sessions/src/uniswap-identifier/types'
18
18
  // Session Repository
19
- export { createSessionRepository } from '@universe/sessions/src/session-repository/createSessionRepository'
20
- export { ChallengeRejectedError } from '@universe/sessions/src/session-repository/errors'
21
- export { ChallengeFailureReason, VerifyFailureReason } from '@universe/sessions/src/session-repository/types'
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 '@universe/sessions/src/session-repository/types'
29
+ } from '@luxexchange/sessions/src/session-repository/types'
30
30
 
31
31
  // Session Service
32
- export { createNoopSessionService } from '@universe/sessions/src/session-service/createNoopSessionService'
33
- export { createSessionService } from '@universe/sessions/src/session-service/createSessionService'
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 '@universe/sessions/src/session-service/types'
41
+ } from '@luxexchange/sessions/src/session-service/types'
42
42
 
43
43
  // Session Storage
44
- export { createSessionStorage } from '@universe/sessions/src/session-storage/createSessionStorage'
45
- export type { SessionStorage, SessionState } from '@universe/sessions/src/session-storage/types'
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 '@universe/sessions/src/session-repository/createSessionClient'
49
- export type { SessionServiceClient } from '@universe/sessions/src/session-repository/createSessionClient'
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 '@universe/sessions/src/session-initialization/createSessionInitializationService'
52
+ export { createSessionInitializationService } from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
53
53
  export {
54
54
  SessionError,
55
55
  MaxChallengeRetriesError,
56
56
  NoSolverAvailableError,
57
- } from '@universe/sessions/src/session-initialization/sessionErrors'
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 '@universe/sessions/src/session-initialization/createSessionInitializationService'
63
+ } from '@luxexchange/sessions/src/session-initialization/createSessionInitializationService'
64
64
 
65
65
  // Challenge Solvers
66
- export { createChallengeSolverService } from '@universe/sessions/src/challenge-solvers/createChallengeSolverService'
67
- export { createTurnstileMockSolver } from '@universe/sessions/src/challenge-solvers/createTurnstileMockSolver'
68
- export { createHashcashMockSolver } from '@universe/sessions/src/challenge-solvers/createHashcashMockSolver'
69
- export { createNoneMockSolver } from '@universe/sessions/src/challenge-solvers/createNoneMockSolver'
70
- export { createTurnstileSolver } from '@universe/sessions/src/challenge-solvers/createTurnstileSolver'
71
- export { createHashcashSolver } from '@universe/sessions/src/challenge-solvers/createHashcashSolver'
72
- export { createWorkerHashcashSolver } from '@universe/sessions/src/challenge-solvers/hashcash/createWorkerHashcashSolver'
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 '@universe/sessions/src/challenge-solvers/turnstileErrors'
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 '@universe/sessions/src/challenge-solvers/types'
85
+ } from '@luxexchange/sessions/src/challenge-solvers/types'
86
86
  export type {
87
87
  CreateTurnstileSolverContext,
88
88
  TurnstileSolveAnalytics,
89
- } from '@universe/sessions/src/challenge-solvers/createTurnstileSolver'
89
+ } from '@luxexchange/sessions/src/challenge-solvers/createTurnstileSolver'
90
90
  export type {
91
91
  CreateHashcashWorkerChannelContext,
92
92
  HashcashWorkerChannel,
93
93
  HashcashWorkerChannelFactory,
94
- } from '@universe/sessions/src/challenge-solvers/hashcash/worker/types'
95
- export { createHashcashWorkerChannel } from '@universe/sessions/src/challenge-solvers/hashcash/worker/createHashcashWorkerChannel'
96
- export { createHashcashMultiWorkerChannel } from '@universe/sessions/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel'
97
- export type { MultiWorkerConfig } from '@universe/sessions/src/challenge-solvers/hashcash/worker/createHashcashMultiWorkerChannel'
98
- export type { CreateWorkerHashcashSolverContext } from '@universe/sessions/src/challenge-solvers/hashcash/createWorkerHashcashSolver'
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 '@universe/sessions/src/challenge-solvers/createHashcashSolver'
102
+ } from '@luxexchange/sessions/src/challenge-solvers/createHashcashSolver'
103
103
 
104
- export { ChallengeType } from '@universe/sessions/src/session-service/types'
104
+ export { ChallengeType } from '@luxexchange/sessions/src/session-service/types'
105
105
 
106
106
  // OAuth Service
107
- export { createOAuthService } from '@universe/sessions/src/oauth-service/createOAuthService'
108
- export type { CreateOAuthServiceContext } from '@universe/sessions/src/oauth-service/createOAuthService'
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,26 @@ export type {
114
114
  OAuthInitiateParams,
115
115
  OAuthVerifyParams,
116
116
  OAuthUserInfo,
117
- } from '@universe/sessions/src/oauth-service/types'
117
+ } from '@luxexchange/sessions/src/oauth-service/types'
118
118
 
119
119
  // Performance Tracking
120
- export type { PerformanceTracker } from '@universe/sessions/src/performance/types'
120
+ export type { PerformanceTracker } from '@luxexchange/sessions/src/performance/types'
121
121
  export {
122
122
  createPerformanceTracker,
123
123
  PERFORMANCE_TRACKING_DISABLED,
124
- } from '@universe/sessions/src/performance/createPerformanceTracker'
125
- export type { CreatePerformanceTrackerContext } from '@universe/sessions/src/performance/createPerformanceTracker'
126
- export { createNoopPerformanceTracker } from '@universe/sessions/src/performance/createNoopPerformanceTracker'
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
- InMemoryLuxIdentifierService,
133
- } from '@universe/sessions/src/test-utils'
132
+ InMemoryLxIdentifierService,
133
+ } from '@luxexchange/sessions/src/test-utils'
134
134
  export {
135
135
  createCookieJar,
136
136
  createLocalCookieTransport,
137
- } from '@universe/sessions/src/test-utils/createLocalCookieTransport'
137
+ } from '@luxexchange/sessions/src/test-utils/createLocalCookieTransport'
138
+
139
+ export const luxIdentifierQuery = lxIdentifierQuery
@@ -5,8 +5,8 @@ import type {
5
5
  OAuthService,
6
6
  OAuthVerificationResult,
7
7
  OAuthVerifyParams,
8
- } from '@universe/sessions/src/oauth-service/types'
9
- import type { SessionRepository } from '@universe/sessions/src/session-repository/types'
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,4 +1,4 @@
1
- import { ChallengeType } from '@uniswap/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
1
+ import { ChallengeType } from '@luxamm/client-platform-service/dist/uniswap/platformservice/v1/sessionService_pb'
2
2
 
3
3
  /**
4
4
  * Result from initiating an OAuth flow
@@ -1,5 +1,5 @@
1
- import { PERFORMANCE_TRACKING_DISABLED } from '@universe/sessions/src/performance/createPerformanceTracker'
2
- import type { PerformanceTracker } from '@universe/sessions/src/performance/types'
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 '@universe/sessions/src/performance/types'
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
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable check-file/no-index */
2
- export type { CreatePerformanceTrackerContext } from '@universe/sessions/src/performance/createPerformanceTracker'
2
+ export type { CreatePerformanceTrackerContext } from '@luxexchange/sessions/src/performance/createPerformanceTracker'
3
3
  export {
4
4
  createPerformanceTracker,
5
5
  PERFORMANCE_TRACKING_DISABLED,
6
- } from '@universe/sessions/src/performance/createPerformanceTracker'
7
- export type { PerformanceTracker } from '@universe/sessions/src/performance/types'
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 '@universe/sessions/src/performance/types'
2
- import { createSessionInitializationService } from '@universe/sessions/src/session-initialization/createSessionInitializationService'
3
- import { ChallengeType } from '@universe/sessions/src/session-service/types'
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 '@universe/sessions/src/test-utils/mocks'
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