@clipin/convex-wearables 0.0.2 → 0.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 (88) hide show
  1. package/dist/client/index.d.ts +9 -4
  2. package/dist/client/index.d.ts.map +1 -1
  3. package/dist/client/index.js.map +1 -1
  4. package/dist/component/_generated/component.d.ts +50 -0
  5. package/dist/component/_generated/component.d.ts.map +1 -0
  6. package/dist/component/_generated/component.js +11 -0
  7. package/dist/component/_generated/component.js.map +1 -0
  8. package/dist/component/backfillJobs.d.ts +11 -11
  9. package/dist/component/connections.d.ts +9 -9
  10. package/dist/component/connections.d.ts.map +1 -1
  11. package/dist/component/connections.js +2 -0
  12. package/dist/component/connections.js.map +1 -1
  13. package/dist/component/dataPoints.d.ts +5 -5
  14. package/dist/component/events.d.ts +13 -13
  15. package/dist/component/garminBackfill.d.ts +2 -2
  16. package/dist/component/garminWebhooks.d.ts +2 -2
  17. package/dist/component/garminWebhooks.d.ts.map +1 -1
  18. package/dist/component/garminWebhooks.js +2 -0
  19. package/dist/component/garminWebhooks.js.map +1 -1
  20. package/dist/component/lifecycle.d.ts +1 -1
  21. package/dist/component/lifecycle.d.ts.map +1 -1
  22. package/dist/component/lifecycle.js +2 -0
  23. package/dist/component/lifecycle.js.map +1 -1
  24. package/dist/component/oauthStates.d.ts +3 -3
  25. package/dist/component/schema.d.ts +26 -26
  26. package/dist/component/sdkPush.d.ts +11 -11
  27. package/dist/component/summaries.d.ts +4 -4
  28. package/dist/component/syncJobs.d.ts +23 -23
  29. package/dist/component/syncWorkflow.d.ts +2 -2
  30. package/dist/test.d.ts +421 -0
  31. package/dist/test.d.ts.map +1 -0
  32. package/dist/test.js +17 -0
  33. package/dist/test.js.map +1 -0
  34. package/package.json +12 -2
  35. package/src/client/_generated/_ignore.ts +2 -0
  36. package/src/client/index.test.ts +52 -0
  37. package/src/client/index.ts +784 -0
  38. package/src/client/types.ts +533 -0
  39. package/src/component/_generated/_ignore.ts +2 -0
  40. package/src/component/_generated/api.ts +16 -0
  41. package/src/component/_generated/component.ts +74 -0
  42. package/src/component/_generated/dataModel.ts +40 -0
  43. package/src/component/_generated/server.ts +48 -0
  44. package/src/component/backfillJobs.test.ts +47 -0
  45. package/src/component/backfillJobs.ts +245 -0
  46. package/src/component/connections.test.ts +297 -0
  47. package/src/component/connections.ts +329 -0
  48. package/src/component/convex.config.ts +7 -0
  49. package/src/component/dataPoints.test.ts +282 -0
  50. package/src/component/dataPoints.ts +305 -0
  51. package/src/component/dataSources.test.ts +247 -0
  52. package/src/component/dataSources.ts +109 -0
  53. package/src/component/events.test.ts +380 -0
  54. package/src/component/events.ts +288 -0
  55. package/src/component/garminBackfill.ts +343 -0
  56. package/src/component/garminWebhooks.test.ts +609 -0
  57. package/src/component/garminWebhooks.ts +656 -0
  58. package/src/component/httpHandlers.ts +153 -0
  59. package/src/component/lifecycle.test.ts +179 -0
  60. package/src/component/lifecycle.ts +87 -0
  61. package/src/component/menstrualCycles.ts +124 -0
  62. package/src/component/oauthActions.ts +261 -0
  63. package/src/component/oauthStates.test.ts +170 -0
  64. package/src/component/oauthStates.ts +85 -0
  65. package/src/component/providerSettings.ts +66 -0
  66. package/src/component/providers/additionalProviders.test.ts +401 -0
  67. package/src/component/providers/garmin.ts +1169 -0
  68. package/src/component/providers/oauth.test.ts +174 -0
  69. package/src/component/providers/oauth.ts +246 -0
  70. package/src/component/providers/polar.ts +220 -0
  71. package/src/component/providers/registry.ts +37 -0
  72. package/src/component/providers/strava.test.ts +195 -0
  73. package/src/component/providers/strava.ts +253 -0
  74. package/src/component/providers/suunto.ts +592 -0
  75. package/src/component/providers/types.ts +189 -0
  76. package/src/component/providers/whoop.ts +600 -0
  77. package/src/component/schema.ts +339 -0
  78. package/src/component/sdkPush.test.ts +367 -0
  79. package/src/component/sdkPush.ts +440 -0
  80. package/src/component/summaries.test.ts +201 -0
  81. package/src/component/summaries.ts +143 -0
  82. package/src/component/syncJobs.test.ts +254 -0
  83. package/src/component/syncJobs.ts +140 -0
  84. package/src/component/syncWorkflow.test.ts +87 -0
  85. package/src/component/syncWorkflow.ts +739 -0
  86. package/src/component/test.setup.ts +6 -0
  87. package/src/component/workflowManager.ts +19 -0
  88. package/src/test.ts +25 -0
package/dist/test.js ADDED
@@ -0,0 +1,17 @@
1
+ /// <reference types="vite/client" />
2
+ import workflowTest from "@convex-dev/workflow/test";
3
+ import workpoolTest from "@convex-dev/workpool/test";
4
+ import schema from "./component/schema.js";
5
+ const modules = import.meta.glob("./component/**/*.ts");
6
+ /**
7
+ * Register the component with a test Convex instance.
8
+ * @param t - The test Convex instance, for example from `convexTest`.
9
+ * @param name - The component name, as registered in the host app.
10
+ */
11
+ export function register(t, name = "wearables") {
12
+ t.registerComponent("workflow", workflowTest.schema, workflowTest.modules);
13
+ workpoolTest.register(t, "workflow/workpool");
14
+ t.registerComponent(name, schema, modules);
15
+ }
16
+ export default { register, schema, modules };
17
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAGrD,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CACtB,CAAuD,EACvD,OAAe,WAAW;IAE1B,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3E,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC9C,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipin/convex-wearables",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Convex component for wearable device integrations — sync health data from Garmin, Strava, Whoop, Polar, Suunto, Apple HealthKit, Samsung Health, and Google Health Connect.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/clipinfit/convex-wearables#readme",
@@ -11,17 +11,27 @@
11
11
  "main": "./dist/client/index.js",
12
12
  "types": "./dist/client/index.d.ts",
13
13
  "files": [
14
- "dist"
14
+ "dist",
15
+ "src"
15
16
  ],
16
17
  "exports": {
18
+ "./package.json": "./package.json",
17
19
  ".": {
18
20
  "types": "./dist/client/index.d.ts",
19
21
  "default": "./dist/client/index.js"
20
22
  },
23
+ "./test": "./src/test.ts",
24
+ "./_generated/component.js": {
25
+ "types": "./dist/component/_generated/component.d.ts"
26
+ },
21
27
  "./convex.config": {
22
28
  "types": "./dist/component/convex.config.d.ts",
23
29
  "default": "./dist/component/convex.config.js"
24
30
  },
31
+ "./convex.config.js": {
32
+ "types": "./dist/component/convex.config.d.ts",
33
+ "default": "./dist/component/convex.config.js"
34
+ },
25
35
  "./types": {
26
36
  "types": "./dist/client/types.d.ts",
27
37
  "default": "./dist/client/types.js"
@@ -0,0 +1,2 @@
1
+ // This file exists so that the _generated directory is tracked by git.
2
+ // The actual generated files are created by `npx convex dev` or `npx convex codegen`.
@@ -0,0 +1,52 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import {
3
+ getSdkSyncPath,
4
+ getSdkSyncUrl,
5
+ oauthCallback,
6
+ stravaWebhookEvent,
7
+ stravaWebhookVerify,
8
+ WearablesClient,
9
+ type WearablesComponent,
10
+ } from "./index";
11
+
12
+ describe("sdk route helpers", () => {
13
+ it("returns null when the sdk sync route is not configured", () => {
14
+ expect(getSdkSyncPath()).toBeNull();
15
+ expect(getSdkSyncUrl("https://example.convex.site")).toBeNull();
16
+ });
17
+
18
+ it("returns the default sdk sync path and url when enabled", () => {
19
+ const config = { sdk: {} };
20
+ const client = new WearablesClient({} as WearablesComponent, { providers: {} });
21
+
22
+ expect(getSdkSyncPath(config)).toBe("/sdk/sync");
23
+ expect(getSdkSyncUrl("https://example.convex.site", config)).toBe(
24
+ "https://example.convex.site/sdk/sync",
25
+ );
26
+ expect(client.getSdkSyncPath(config)).toBe("/sdk/sync");
27
+ expect(client.getSdkSyncUrl("https://example.convex.site", config)).toBe(
28
+ "https://example.convex.site/sdk/sync",
29
+ );
30
+ });
31
+
32
+ it("respects a custom sdk sync path", () => {
33
+ const config = {
34
+ sdk: {
35
+ syncPath: "/mobile/sdk-sync",
36
+ },
37
+ };
38
+
39
+ expect(getSdkSyncPath(config)).toBe("/mobile/sdk-sync");
40
+ expect(getSdkSyncUrl("https://example.convex.site/", config)).toBe(
41
+ "https://example.convex.site/mobile/sdk-sync",
42
+ );
43
+ });
44
+ });
45
+
46
+ describe("package exports", () => {
47
+ it("re-exports standalone http handlers from the package root", () => {
48
+ expect(typeof oauthCallback).toBe("function");
49
+ expect(typeof stravaWebhookVerify).toBe("function");
50
+ expect(typeof stravaWebhookEvent).toBe("function");
51
+ });
52
+ });