@levrbet/shared 0.2.44 → 0.2.46

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 (133) hide show
  1. package/README.md +45 -46
  2. package/dist/core/contracts/addresses.d.ts +20 -0
  3. package/dist/core/contracts/addresses.js +33 -13
  4. package/dist/core/contracts/addresses.js.map +1 -1
  5. package/dist/core/contracts/instances.d.ts +7 -2
  6. package/dist/core/contracts/instances.js +20 -1
  7. package/dist/core/contracts/instances.js.map +1 -1
  8. package/dist/core/index.d.ts +1 -0
  9. package/dist/core/index.js +1 -0
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/indexers/envio.test.query.d.ts +5 -2
  12. package/dist/core/indexers/envio.test.query.js +8 -3
  13. package/dist/core/indexers/envio.test.query.js.map +1 -1
  14. package/dist/core/indexers/indexers.service.js +32 -12
  15. package/dist/core/indexers/indexers.service.js.map +1 -1
  16. package/dist/core/indexers/subsquid.test.query.d.ts +4 -1
  17. package/dist/core/indexers/subsquid.test.query.js +22 -2
  18. package/dist/core/indexers/subsquid.test.query.js.map +1 -1
  19. package/dist/core/prisma/index.d.ts +1 -1
  20. package/dist/core/prisma/index.js +7 -4
  21. package/dist/core/prisma/index.js.map +1 -1
  22. package/dist/core/socket.io/events.d.ts +20 -0
  23. package/dist/core/socket.io/events.js +20 -0
  24. package/dist/core/socket.io/events.js.map +1 -0
  25. package/dist/core/socket.io/index.d.ts +2 -0
  26. package/dist/{server/prisma → core/socket.io}/index.js +2 -7
  27. package/dist/core/socket.io/index.js.map +1 -0
  28. package/dist/core/socket.io/rooms.d.ts +6 -0
  29. package/dist/core/socket.io/rooms.js +10 -0
  30. package/dist/core/socket.io/rooms.js.map +1 -0
  31. package/dist/core/types/oracle/market/markets.types.d.ts +4 -4
  32. package/dist/core/types/oracle/market/positions.types.d.ts +17 -1
  33. package/dist/core/types/oracle/requests/game.request.types.d.ts +7 -5
  34. package/dist/core/types/oracle/requests/game.request.types.js +6 -4
  35. package/dist/core/types/oracle/requests/game.request.types.js.map +1 -1
  36. package/dist/core/types/oracle/requests/index.d.ts +2 -0
  37. package/dist/core/types/oracle/requests/index.js +2 -0
  38. package/dist/core/types/oracle/requests/index.js.map +1 -1
  39. package/dist/core/types/oracle/requests/odds.response.types.d.ts +2 -0
  40. package/dist/core/types/oracle/requests/odds.response.types.js +3 -0
  41. package/dist/core/types/oracle/requests/odds.response.types.js.map +1 -0
  42. package/dist/core/types/oracle/requests/user.request.type.d.ts +4 -0
  43. package/dist/core/types/oracle/requests/user.request.type.js +3 -0
  44. package/dist/core/types/oracle/requests/user.request.type.js.map +1 -0
  45. package/dist/core/utils/misc.utils.d.ts +6 -0
  46. package/dist/core/utils/misc.utils.js +17 -1
  47. package/dist/core/utils/misc.utils.js.map +1 -1
  48. package/dist/core/validators/bytes.validators.d.ts +4 -3
  49. package/dist/core/validators/bytes.validators.js +4 -4
  50. package/dist/core/validators/bytes.validators.js.map +1 -1
  51. package/dist/react/hooks/auth/useAuthHeaders.js +2 -1
  52. package/dist/react/hooks/auth/useAuthHeaders.js.map +1 -1
  53. package/dist/react/hooks/contracts/erc20/index.d.ts +6 -0
  54. package/dist/react/hooks/contracts/erc20/index.js +23 -0
  55. package/dist/react/hooks/contracts/erc20/index.js.map +1 -0
  56. package/dist/react/hooks/contracts/erc20/useApproveErc20.d.ts +13 -0
  57. package/dist/react/hooks/contracts/erc20/useApproveErc20.js +28 -0
  58. package/dist/react/hooks/contracts/erc20/useApproveErc20.js.map +1 -0
  59. package/dist/react/hooks/contracts/erc20/useErc20Allowance.d.ts +10 -0
  60. package/dist/react/hooks/contracts/erc20/useErc20Allowance.js +34 -0
  61. package/dist/react/hooks/contracts/erc20/useErc20Allowance.js.map +1 -0
  62. package/dist/react/hooks/contracts/erc20/useErc20Balance.d.ts +22 -0
  63. package/dist/react/hooks/contracts/erc20/useErc20Balance.js +95 -0
  64. package/dist/react/hooks/contracts/erc20/useErc20Balance.js.map +1 -0
  65. package/dist/react/hooks/contracts/erc20/useErc20Decimals.d.ts +8 -0
  66. package/dist/react/hooks/contracts/erc20/useErc20Decimals.js +28 -0
  67. package/dist/react/hooks/contracts/erc20/useErc20Decimals.js.map +1 -0
  68. package/dist/react/hooks/contracts/erc20/useErc20Symbol.d.ts +8 -0
  69. package/dist/react/hooks/contracts/erc20/useErc20Symbol.js +28 -0
  70. package/dist/react/hooks/contracts/erc20/useErc20Symbol.js.map +1 -0
  71. package/dist/react/hooks/contracts/erc20/useTransferErc20.d.ts +13 -0
  72. package/dist/react/hooks/contracts/erc20/useTransferErc20.js +31 -0
  73. package/dist/react/hooks/contracts/erc20/useTransferErc20.js.map +1 -0
  74. package/dist/react/hooks/contracts/index.d.ts +1 -0
  75. package/dist/react/hooks/contracts/index.js +1 -0
  76. package/dist/react/hooks/contracts/index.js.map +1 -1
  77. package/dist/react/hooks/contracts/useContracts.d.ts +7 -1
  78. package/dist/react/hooks/contracts/useContracts.js +24 -2
  79. package/dist/react/hooks/contracts/useContracts.js.map +1 -1
  80. package/dist/react/index.d.ts +1 -0
  81. package/dist/react/index.js +1 -0
  82. package/dist/react/index.js.map +1 -1
  83. package/dist/react/injectedDependencies.d.ts +4 -3
  84. package/dist/react/injectedDependencies.js +2 -1
  85. package/dist/react/injectedDependencies.js.map +1 -1
  86. package/dist/react/queryKeys.d.ts +17 -0
  87. package/dist/react/queryKeys.js +23 -0
  88. package/dist/react/queryKeys.js.map +1 -0
  89. package/dist/server/config/redis.d.ts +1 -1
  90. package/dist/server/config/redis.js +9 -3
  91. package/dist/server/config/redis.js.map +1 -1
  92. package/dist/server/index.d.ts +0 -1
  93. package/dist/server/index.js +0 -1
  94. package/dist/server/index.js.map +1 -1
  95. package/dist/server/oracle/redis-cache-manager/channels.d.ts +1 -5
  96. package/dist/server/oracle/redis-cache-manager/channels.js +5 -14
  97. package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -1
  98. package/dist/server/services/index.d.ts +1 -0
  99. package/dist/server/services/index.js +1 -0
  100. package/dist/server/services/index.js.map +1 -1
  101. package/dist/server/services/presigned.urls.d.ts +11 -0
  102. package/dist/server/services/presigned.urls.js +41 -0
  103. package/dist/server/services/presigned.urls.js.map +1 -0
  104. package/package.json +15 -7
  105. package/{dist/core/prisma/generated → prisma}/schema.prisma +16 -12
  106. package/scripts/setup-prisma.js +98 -0
  107. package/dist/core/prisma/generated/client.d.ts +0 -1
  108. package/dist/core/prisma/generated/client.js +0 -4
  109. package/dist/core/prisma/generated/default.d.ts +0 -1
  110. package/dist/core/prisma/generated/default.js +0 -4
  111. package/dist/core/prisma/generated/edge.d.ts +0 -1
  112. package/dist/core/prisma/generated/edge.js +0 -540
  113. package/dist/core/prisma/generated/index-browser.js +0 -523
  114. package/dist/core/prisma/generated/index.d.ts +0 -31059
  115. package/dist/core/prisma/generated/index.js +0 -565
  116. package/dist/core/prisma/generated/libquery_engine-darwin-arm64.dylib.node +0 -0
  117. package/dist/core/prisma/generated/libquery_engine-linux-musl-openssl-3.0.x.so.node +0 -0
  118. package/dist/core/prisma/generated/package.json +0 -183
  119. package/dist/core/prisma/generated/runtime/edge-esm.js +0 -34
  120. package/dist/core/prisma/generated/runtime/edge.js +0 -34
  121. package/dist/core/prisma/generated/runtime/index-browser.d.ts +0 -370
  122. package/dist/core/prisma/generated/runtime/index-browser.js +0 -16
  123. package/dist/core/prisma/generated/runtime/library.d.ts +0 -3982
  124. package/dist/core/prisma/generated/runtime/library.js +0 -146
  125. package/dist/core/prisma/generated/runtime/react-native.js +0 -83
  126. package/dist/core/prisma/generated/runtime/wasm-compiler-edge.js +0 -84
  127. package/dist/core/prisma/generated/runtime/wasm-engine-edge.js +0 -36
  128. package/dist/core/prisma/generated/wasm-edge-light-loader.mjs +0 -4
  129. package/dist/core/prisma/generated/wasm-worker-loader.mjs +0 -4
  130. package/dist/core/prisma/generated/wasm.d.ts +0 -1
  131. package/dist/core/prisma/generated/wasm.js +0 -547
  132. package/dist/server/prisma/index.d.ts +0 -2
  133. package/dist/server/prisma/index.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.presignedUrlService = void 0;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
6
+ const core_1 = require("../../core");
7
+ const config_1 = require("../config");
8
+ /**
9
+ * Handles AWS S3 presigned URL generation
10
+ */
11
+ class PresignedUrlService {
12
+ constructor() {
13
+ this.initialized = false;
14
+ }
15
+ init() {
16
+ if (this.initialized)
17
+ return;
18
+ this.initialized = true;
19
+ const { AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION } = core_1.Config.init(config_1.awsCredsSchema);
20
+ this.s3 = new client_s3_1.S3Client({
21
+ region: AWS_REGION,
22
+ credentials: {
23
+ accessKeyId: AWS_ACCESS_KEY_ID,
24
+ secretAccessKey: AWS_SECRET_ACCESS_KEY,
25
+ },
26
+ });
27
+ }
28
+ async generatePresignedImageUrl(keyId) {
29
+ if (!this.s3) {
30
+ throw new Error("S3 client not initialized. Call presignedUrlService.init().");
31
+ }
32
+ const command = new client_s3_1.GetObjectCommand({
33
+ Bucket: "levr-v1-assets-dev",
34
+ Key: keyId,
35
+ });
36
+ const imageUrl = await (0, s3_request_presigner_1.getSignedUrl)(this.s3, command, { expiresIn: 172800 }); // 48 hour expiry
37
+ return imageUrl;
38
+ }
39
+ }
40
+ exports.presignedUrlService = new PresignedUrlService();
41
+ //# sourceMappingURL=presigned.urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presigned.urls.js","sourceRoot":"","sources":["../../../src/server/services/presigned.urls.ts"],"names":[],"mappings":";;;AAAA,kDAA+D;AAC/D,wEAA4D;AAC5D,qCAAmC;AACnC,sCAA0C;AAE1C;;GAEG;AACH,MAAM,mBAAmB;IAAzB;QACY,gBAAW,GAAG,KAAK,CAAA;IA8B/B,CAAC;IA3BG,IAAI;QACA,IAAI,IAAI,CAAC,WAAW;YAAE,OAAM;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QAEvB,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,aAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,CAAA;QAC5F,IAAI,CAAC,EAAE,GAAG,IAAI,oBAAQ,CAAC;YACnB,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE;gBACT,WAAW,EAAE,iBAAiB;gBAC9B,eAAe,EAAE,qBAAqB;aACzC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,KAAa;QACzC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAClF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACjC,MAAM,EAAE,oBAAoB;YAC5B,GAAG,EAAE,KAAK;SACb,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,mCAAY,EAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,iBAAiB;QAC9F,OAAO,QAAQ,CAAA;IACnB,CAAC;CACJ;AAEY,QAAA,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levrbet/shared",
3
- "version": "0.2.44",
3
+ "version": "0.2.46",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {
@@ -26,17 +26,23 @@
26
26
  }
27
27
  },
28
28
  "files": [
29
- "dist"
29
+ "dist",
30
+ "prisma/schema.prisma",
31
+ "scripts"
30
32
  ],
33
+ "bin": {
34
+ "levrbet-prisma-setup": "./scripts/setup-prisma.js"
35
+ },
31
36
  "sideEffects": false,
32
37
  "scripts": {
33
- "build": "npm run clean && npx prisma generate && npx tsc && npm run copy-assets",
38
+ "build": "npm run clean && npx tsc",
34
39
  "dev": "npm run build && npm pack",
35
- "copy-assets": "mkdir -p dist/core/prisma/generated && cp -r src/core/prisma/generated/* dist/core/prisma/generated/",
36
- "clean": "rm -rf dist",
37
- "prepublishOnly": "npm run build"
40
+ "clean": "rm -rf dist .tsbuildinfo",
41
+ "prepublishOnly": "npm run build",
42
+ "test-get-healthy-indexer": "tsx src/core/indexers/indexers.service.ts"
38
43
  },
39
44
  "peerDependencies": {
45
+ "@prisma/client": "^6.0.0",
40
46
  "@privy-io/react-auth": ">=3.0.0",
41
47
  "@tanstack/react-query": ">=5.0.0",
42
48
  "@types/react": ">=18.0.0",
@@ -69,14 +75,16 @@
69
75
  "cpx": "^1.5.0",
70
76
  "cross-fetch": "^4.1.0",
71
77
  "mkdirp": "^3.0.1",
72
- "prisma": "^6.18.0",
78
+ "prisma": "^6.19.0",
73
79
  "react": ">=18.0.0",
74
80
  "tsx": "^4.20.6",
75
81
  "typescript": "^5.9.3"
76
82
  },
77
83
  "dependencies": {
78
84
  "@aws-sdk/client-kms": "^3.913.0",
85
+ "@aws-sdk/client-s3": "^3.926.0",
79
86
  "@aws-sdk/client-sts": "^3.913.0",
87
+ "@aws-sdk/s3-request-presigner": "^3.926.0",
80
88
  "@opentelemetry/api": "^1.9.0",
81
89
  "@opentelemetry/auto-instrumentations-node": "0.65.0",
82
90
  "@opentelemetry/exporter-metrics-otlp-http": "^0.206.0",
@@ -1,7 +1,6 @@
1
1
  generator client {
2
2
  provider = "prisma-client-js"
3
- binaryTargets = ["linux-musl-openssl-3.0.x", "darwin-arm64"]
4
- output = "generated"
3
+ binaryTargets = ["native"]
5
4
  }
6
5
 
7
6
  datasource db {
@@ -16,6 +15,12 @@ enum GamePhase {
16
15
  Cancelled
17
16
  }
18
17
 
18
+ enum Sides {
19
+ A
20
+ B
21
+ C
22
+ }
23
+
19
24
  enum MarketTypes {
20
25
  FullTimeWinner
21
26
  OverUnder
@@ -168,9 +173,8 @@ model Fixture {
168
173
  leagueObjectId String @db.ObjectId
169
174
  league League @relation(fields: [leagueObjectId], references: [objectId])
170
175
 
171
- createdAt DateTime @default(now())
172
- updatedAt DateTime @updatedAt
173
- LevrGame LevrGame[]
176
+ createdAt DateTime @default(now())
177
+ updatedAt DateTime @updatedAt
174
178
 
175
179
  @@index([fixtureDate])
176
180
  @@index([leagueObjectId])
@@ -203,6 +207,7 @@ model LevrGame {
203
207
  location String
204
208
  venueLocation String
205
209
  gameClock String
210
+ gameProgressBps Int @default(0)
206
211
  paused Boolean @default(false)
207
212
  fixtureDate DateTime
208
213
  wentLiveAt DateTime?
@@ -214,12 +219,10 @@ model LevrGame {
214
219
  levrFixtureId String
215
220
  opticOddsFixtureId String?
216
221
  lsportsFixtureId String?
217
- gameProgressBps Int @default(0)
218
222
  sportGroup SportGroup
219
223
 
220
- fixtureObjectId String @db.ObjectId
221
- fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])
222
224
  tournamentObjectId String @db.ObjectId
225
+ fixtureObjectId String @db.ObjectId
223
226
  tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])
224
227
  leagueObjectId String @db.ObjectId
225
228
  league League @relation(fields: [leagueObjectId], references: [objectId])
@@ -279,6 +282,7 @@ model Market {
279
282
  activeProvider Json
280
283
  marketType MarketTypes
281
284
  status MarketStatus
285
+ winner Sides?
282
286
 
283
287
  levrGameObjectId String @db.ObjectId // new unique identifier
284
288
  levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])
@@ -299,10 +303,10 @@ model User {
299
303
  objectId String @id @default(auto()) @map("_id") @db.ObjectId
300
304
  walletAddress String @unique
301
305
  userName String @unique
302
- email String @unique
303
- timeZone String
304
- preferredTimeZone String?
305
- userOddsPreference UserOddsPreference
306
+ email String? @unique
307
+ timeZone String @default("UTC")
308
+ preferredTimeZone String? @default("UTC")
309
+ userOddsPreference UserOddsPreference @default(American)
306
310
  profileImageUrl String?
307
311
  profileImageKey String?
308
312
  language String @default("en")
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * This script sets up Prisma for consumers of @levrbet/shared.
5
+ * It copies the schema.prisma file and generates the Prisma client.
6
+ *
7
+ * Runs automatically on postinstall, or manually via: npx levrbet-prisma-setup
8
+ */
9
+ console.log("\nStarting Prisma setup for @levrbet/shared...\n")
10
+ const { execSync } = require("child_process")
11
+ const fs = require("fs")
12
+ const path = require("path")
13
+
14
+ // Find the consumer's project root (walk up from node_modules/@levrbet/shared)
15
+ function findProjectRoot() {
16
+ let dir = __dirname
17
+
18
+ // Walk up to find the project root (where we exit node_modules)
19
+ while (dir !== path.dirname(dir)) {
20
+ const parentDir = path.dirname(dir)
21
+ const parentName = path.basename(parentDir)
22
+
23
+ // If parent is node_modules, go up one more level to get project root
24
+ if (parentName === "node_modules") {
25
+ return path.dirname(parentDir)
26
+ }
27
+
28
+ // If we find a package.json that's not in node_modules, we're at project root
29
+ const packageJsonPath = path.join(dir, "package.json")
30
+ if (fs.existsSync(packageJsonPath)) {
31
+ try {
32
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"))
33
+ // Make sure it's not our own package
34
+ if (pkg.name !== "@levrbet/shared") {
35
+ return dir
36
+ }
37
+ } catch (e) {
38
+ // Ignore parse errors
39
+ }
40
+ }
41
+
42
+ dir = parentDir
43
+ }
44
+
45
+ // Fallback to current working directory
46
+ return process.cwd()
47
+ }
48
+
49
+ const projectRoot = findProjectRoot()
50
+ const schemaSource = path.join(__dirname, "..", "prisma", "schema.prisma")
51
+ const prismaDir = path.join(projectRoot, "prisma")
52
+ const schemaDest = path.join(prismaDir, "schema.prisma")
53
+
54
+ // Check if we're in the package itself (development mode) - skip setup
55
+ const ownPackageJson = path.join(__dirname, "..", "package.json")
56
+ if (fs.existsSync(ownPackageJson)) {
57
+ try {
58
+ const pkg = JSON.parse(fs.readFileSync(ownPackageJson, "utf8"))
59
+ if (pkg.name === "@levrbet/shared" && projectRoot === path.join(__dirname, "..")) {
60
+ // We're in the package itself during development, skip consumer setup
61
+ console.log("Skipping consumer setup (running in @levrbet/shared development mode)")
62
+ process.exit(0)
63
+ }
64
+ } catch (e) {
65
+ // Ignore
66
+ }
67
+ }
68
+
69
+ console.log("🔧 Setting up Prisma for @levrbet/shared...")
70
+ console.log(` Project root: ${projectRoot}\n`)
71
+
72
+ // Create prisma directory if it doesn't exist
73
+ if (!fs.existsSync(prismaDir)) {
74
+ fs.mkdirSync(prismaDir, { recursive: true })
75
+ console.log("Created prisma/ directory")
76
+ }
77
+
78
+ // Copy schema.prisma
79
+ try {
80
+ fs.copyFileSync(schemaSource, schemaDest)
81
+ console.log("Copied schema.prisma to prisma/schema.prisma")
82
+ } catch (err) {
83
+ console.error("Failed to copy schema.prisma:", err.message)
84
+ process.exit(1)
85
+ }
86
+
87
+ // Generate Prisma client
88
+ console.log("\nGenerating Prisma client...")
89
+ try {
90
+ execSync("npx prisma generate", { stdio: "inherit", cwd: projectRoot })
91
+ console.log("\nPrisma client generated successfully!")
92
+ } catch (err) {
93
+ console.error("\nFailed to generate Prisma client:", err.message)
94
+ process.exit(1)
95
+ }
96
+
97
+ console.log("\nPrisma setup complete!")
98
+ console.log("\nMake sure to set the MONGO_URI environment variable in your .env file.")
@@ -1 +0,0 @@
1
- export * from "./index"
@@ -1,4 +0,0 @@
1
-
2
- /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
- /* eslint-disable */
4
- module.exports = { ...require('.') }
@@ -1 +0,0 @@
1
- export * from "./index"
@@ -1,4 +0,0 @@
1
-
2
- /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
- /* eslint-disable */
4
- module.exports = { ...require('#main-entry-point') }
@@ -1 +0,0 @@
1
- export * from "./default"