@nativesquare/soma 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/client/garmin.d.ts +4 -1
  2. package/dist/client/garmin.d.ts.map +1 -1
  3. package/dist/client/garmin.js +4 -1
  4. package/dist/client/garmin.js.map +1 -1
  5. package/dist/client/index.d.ts +2 -2
  6. package/dist/client/index.d.ts.map +1 -1
  7. package/dist/client/index.js +1 -1
  8. package/dist/client/index.js.map +1 -1
  9. package/dist/client/strava.d.ts +48 -34
  10. package/dist/client/strava.d.ts.map +1 -1
  11. package/dist/client/strava.js +141 -23
  12. package/dist/client/strava.js.map +1 -1
  13. package/dist/client/types.d.ts +108 -0
  14. package/dist/client/types.d.ts.map +1 -1
  15. package/dist/component/_generated/api.d.ts +2 -2
  16. package/dist/component/_generated/api.d.ts.map +1 -1
  17. package/dist/component/_generated/component.d.ts +19 -17
  18. package/dist/component/_generated/component.d.ts.map +1 -1
  19. package/dist/component/garmin/auth.d.ts +2 -1
  20. package/dist/component/garmin/auth.d.ts.map +1 -1
  21. package/dist/component/garmin/auth.js +6 -1
  22. package/dist/component/garmin/auth.js.map +1 -1
  23. package/dist/component/garmin/private.d.ts +17 -75
  24. package/dist/component/garmin/private.d.ts.map +1 -1
  25. package/dist/component/garmin/private.js +4 -167
  26. package/dist/component/garmin/private.js.map +1 -1
  27. package/dist/component/garmin/public.d.ts +18 -33
  28. package/dist/component/garmin/public.d.ts.map +1 -1
  29. package/dist/component/garmin/public.js +23 -22
  30. package/dist/component/garmin/public.js.map +1 -1
  31. package/dist/component/garmin/webhooks.d.ts +3 -6
  32. package/dist/component/garmin/webhooks.d.ts.map +1 -1
  33. package/dist/component/garmin/webhooks.js +17 -28
  34. package/dist/component/garmin/webhooks.js.map +1 -1
  35. package/dist/component/private.d.ts +59 -0
  36. package/dist/component/private.d.ts.map +1 -1
  37. package/dist/component/private.js +182 -1
  38. package/dist/component/private.js.map +1 -1
  39. package/dist/component/strava/auth.d.ts +2 -1
  40. package/dist/component/strava/auth.d.ts.map +1 -1
  41. package/dist/component/strava/auth.js +6 -1
  42. package/dist/component/strava/auth.js.map +1 -1
  43. package/dist/component/strava/public.d.ts +26 -50
  44. package/dist/component/strava/public.d.ts.map +1 -1
  45. package/dist/component/strava/public.js +88 -132
  46. package/dist/component/strava/public.js.map +1 -1
  47. package/dist/component/strava/webhooks.d.ts +17 -0
  48. package/dist/component/strava/webhooks.d.ts.map +1 -0
  49. package/dist/component/strava/webhooks.js +231 -0
  50. package/dist/component/strava/webhooks.js.map +1 -0
  51. package/dist/component/utils.d.ts +10 -0
  52. package/dist/component/utils.d.ts.map +1 -1
  53. package/dist/component/utils.js.map +1 -1
  54. package/dist/component/validators/athlete.d.ts +6 -0
  55. package/dist/component/validators/athlete.d.ts.map +1 -1
  56. package/dist/component/validators/athlete.js.map +1 -1
  57. package/dist/component/validators/nutrition.d.ts +6 -0
  58. package/dist/component/validators/nutrition.d.ts.map +1 -1
  59. package/dist/component/validators/nutrition.js.map +1 -1
  60. package/dist/component/validators/shared.d.ts +3 -0
  61. package/dist/component/validators/shared.d.ts.map +1 -1
  62. package/dist/component/validators/shared.js +1 -1
  63. package/dist/component/validators/shared.js.map +1 -1
  64. package/dist/component/validators/sleep.d.ts +6 -0
  65. package/dist/component/validators/sleep.d.ts.map +1 -1
  66. package/dist/component/validators/sleep.js.map +1 -1
  67. package/dist/validators.d.ts +7 -1
  68. package/dist/validators.d.ts.map +1 -1
  69. package/dist/validators.js +6 -6
  70. package/dist/validators.js.map +1 -1
  71. package/package.json +1 -1
  72. package/src/client/garmin.ts +4 -1
  73. package/src/client/index.ts +8 -1
  74. package/src/client/strava.ts +193 -27
  75. package/src/client/types.ts +125 -0
  76. package/src/component/_generated/api.ts +2 -2
  77. package/src/component/_generated/component.ts +25 -6
  78. package/src/component/garmin/auth.ts +9 -2
  79. package/src/component/garmin/private.ts +22 -243
  80. package/src/component/garmin/public.ts +56 -54
  81. package/src/component/garmin/webhooks.ts +38 -55
  82. package/src/component/private.ts +245 -1
  83. package/src/component/strava/auth.ts +9 -2
  84. package/src/component/strava/public.ts +105 -171
  85. package/src/component/strava/webhooks.ts +312 -0
  86. package/src/component/utils.ts +11 -0
  87. package/src/component/validators/athlete.ts +6 -0
  88. package/src/component/validators/nutrition.ts +6 -0
  89. package/src/component/validators/shared.ts +5 -2
  90. package/src/component/validators/sleep.ts +6 -0
  91. package/src/validators.ts +34 -7
  92. package/dist/component/strava/private.d.ts +0 -49
  93. package/dist/component/strava/private.d.ts.map +0 -1
  94. package/dist/component/strava/private.js +0 -121
  95. package/dist/component/strava/private.js.map +0 -1
  96. package/src/component/strava/private.ts +0 -147
@@ -1,147 +0,0 @@
1
- // ─── Internal Token & Pending OAuth CRUD ─────────────────────────────────────
2
- // Called only from strava/public.ts. Not exposed to the host app.
3
-
4
- import { v } from "convex/values";
5
- import {
6
- internalMutation,
7
- internalQuery,
8
- } from "../_generated/server";
9
-
10
- // ─── Internal Pending OAuth CRUD ─────────────────────────────────────────────
11
- // Temporary storage for in-progress Strava OAuth flows.
12
- // Bridges getStravaAuthUrl and completeStravaOAuth.
13
-
14
- export const storePendingOAuth = internalMutation({
15
- args: {
16
- provider: v.string(),
17
- state: v.string(),
18
- userId: v.string(),
19
- },
20
- returns: v.null(),
21
- handler: async (ctx, args) => {
22
- await ctx.db.insert("pendingOAuth", {
23
- ...args,
24
- createdAt: Date.now(),
25
- });
26
- return null;
27
- },
28
- });
29
-
30
- export const getPendingOAuth = internalQuery({
31
- args: { state: v.string() },
32
- returns: v.union(
33
- v.object({
34
- _id: v.id("pendingOAuth"),
35
- _creationTime: v.number(),
36
- provider: v.string(),
37
- state: v.string(),
38
- userId: v.string(),
39
- createdAt: v.number(),
40
- }),
41
- v.null(),
42
- ),
43
- handler: async (ctx, args) => {
44
- return await ctx.db
45
- .query("pendingOAuth")
46
- .withIndex("by_state", (q) => q.eq("state", args.state))
47
- .first();
48
- },
49
- });
50
-
51
- export const deletePendingOAuth = internalMutation({
52
- args: { state: v.string() },
53
- returns: v.null(),
54
- handler: async (ctx, args) => {
55
- const pending = await ctx.db
56
- .query("pendingOAuth")
57
- .withIndex("by_state", (q) => q.eq("state", args.state))
58
- .first();
59
- if (pending) {
60
- await ctx.db.delete(pending._id);
61
- }
62
- return null;
63
- },
64
- });
65
-
66
- // ─── Internal Token CRUD ─────────────────────────────────────────────────────
67
-
68
- /**
69
- * Store or update OAuth tokens for a connection.
70
- * Upserts by connectionId — one token record per connection.
71
- */
72
- export const storeTokens = internalMutation({
73
- args: {
74
- connectionId: v.id("connections"),
75
- accessToken: v.string(),
76
- refreshToken: v.string(),
77
- expiresAt: v.number(),
78
- },
79
- returns: v.null(),
80
- handler: async (ctx, args) => {
81
- const existing = await ctx.db
82
- .query("providerTokens")
83
- .withIndex("by_connectionId", (q) =>
84
- q.eq("connectionId", args.connectionId),
85
- )
86
- .first();
87
-
88
- if (existing) {
89
- await ctx.db.patch(existing._id, {
90
- accessToken: args.accessToken,
91
- refreshToken: args.refreshToken,
92
- expiresAt: args.expiresAt,
93
- });
94
- return null;
95
- }
96
-
97
- await ctx.db.insert("providerTokens", args);
98
- return null;
99
- },
100
- });
101
-
102
- /**
103
- * Get stored tokens for a connection.
104
- */
105
- export const getTokens = internalQuery({
106
- args: { connectionId: v.id("connections") },
107
- returns: v.union(
108
- v.object({
109
- _id: v.id("providerTokens"),
110
- _creationTime: v.number(),
111
- connectionId: v.id("connections"),
112
- accessToken: v.string(),
113
- refreshToken: v.optional(v.string()),
114
- expiresAt: v.optional(v.number()),
115
- }),
116
- v.null(),
117
- ),
118
- handler: async (ctx, args) => {
119
- return await ctx.db
120
- .query("providerTokens")
121
- .withIndex("by_connectionId", (q) =>
122
- q.eq("connectionId", args.connectionId),
123
- )
124
- .first();
125
- },
126
- });
127
-
128
- /**
129
- * Delete stored tokens for a connection.
130
- */
131
- export const deleteTokens = internalMutation({
132
- args: { connectionId: v.id("connections") },
133
- returns: v.null(),
134
- handler: async (ctx, args) => {
135
- const existing = await ctx.db
136
- .query("providerTokens")
137
- .withIndex("by_connectionId", (q) =>
138
- q.eq("connectionId", args.connectionId),
139
- )
140
- .first();
141
-
142
- if (existing) {
143
- await ctx.db.delete(existing._id);
144
- }
145
- return null;
146
- },
147
- });