thryve-mcp-server 0.0.1
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/Overview.csv +351 -0
- package/README.md +229 -0
- package/dist/category-mappings.d.ts +34 -0
- package/dist/category-mappings.d.ts.map +1 -0
- package/dist/category-mappings.js +146 -0
- package/dist/category-mappings.js.map +1 -0
- package/dist/data-enrichment.d.ts +19 -0
- package/dist/data-enrichment.d.ts.map +1 -0
- package/dist/data-enrichment.js +105 -0
- package/dist/data-enrichment.js.map +1 -0
- package/dist/data-types-generated.d.ts +70 -0
- package/dist/data-types-generated.d.ts.map +1 -0
- package/dist/data-types-generated.js +2597 -0
- package/dist/data-types-generated.js.map +1 -0
- package/dist/data-types.d.ts +53 -0
- package/dist/data-types.d.ts.map +1 -0
- package/dist/data-types.js +138 -0
- package/dist/data-types.js.map +1 -0
- package/dist/debug-logger.d.ts +17 -0
- package/dist/debug-logger.d.ts.map +1 -0
- package/dist/debug-logger.js +35 -0
- package/dist/debug-logger.js.map +1 -0
- package/dist/debug-middleware.d.ts +12 -0
- package/dist/debug-middleware.d.ts.map +1 -0
- package/dist/debug-middleware.js +36 -0
- package/dist/debug-middleware.js.map +1 -0
- package/dist/helpers.d.ts +19 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +166 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +754 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas.d.ts +557 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +338 -0
- package/dist/schemas.js.map +1 -0
- package/dist/tool-loader.d.ts +34 -0
- package/dist/tool-loader.d.ts.map +1 -0
- package/dist/tool-loader.js +108 -0
- package/dist/tool-loader.js.map +1 -0
- package/dist/tool-registry.d.ts +44 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +54 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/baseCategoryHandler.d.ts +28 -0
- package/dist/tools/baseCategoryHandler.d.ts.map +1 -0
- package/dist/tools/baseCategoryHandler.js +184 -0
- package/dist/tools/baseCategoryHandler.js.map +1 -0
- package/dist/tools/categories/getActivity.d.ts +10 -0
- package/dist/tools/categories/getActivity.d.ts.map +1 -0
- package/dist/tools/categories/getActivity.js +5 -0
- package/dist/tools/categories/getActivity.js.map +1 -0
- package/dist/tools/categories/getAudioAndHearing.d.ts +10 -0
- package/dist/tools/categories/getAudioAndHearing.d.ts.map +1 -0
- package/dist/tools/categories/getAudioAndHearing.js +5 -0
- package/dist/tools/categories/getAudioAndHearing.js.map +1 -0
- package/dist/tools/categories/getBloodGlucose.d.ts +10 -0
- package/dist/tools/categories/getBloodGlucose.d.ts.map +1 -0
- package/dist/tools/categories/getBloodGlucose.js +5 -0
- package/dist/tools/categories/getBloodGlucose.js.map +1 -0
- package/dist/tools/categories/getBodyComposition.d.ts +10 -0
- package/dist/tools/categories/getBodyComposition.d.ts.map +1 -0
- package/dist/tools/categories/getBodyComposition.js +5 -0
- package/dist/tools/categories/getBodyComposition.js.map +1 -0
- package/dist/tools/categories/getCardiovascular.d.ts +10 -0
- package/dist/tools/categories/getCardiovascular.d.ts.map +1 -0
- package/dist/tools/categories/getCardiovascular.js +5 -0
- package/dist/tools/categories/getCardiovascular.js.map +1 -0
- package/dist/tools/categories/getHeartRate.d.ts +10 -0
- package/dist/tools/categories/getHeartRate.d.ts.map +1 -0
- package/dist/tools/categories/getHeartRate.js +5 -0
- package/dist/tools/categories/getHeartRate.js.map +1 -0
- package/dist/tools/categories/getLocation.d.ts +10 -0
- package/dist/tools/categories/getLocation.d.ts.map +1 -0
- package/dist/tools/categories/getLocation.js +5 -0
- package/dist/tools/categories/getLocation.js.map +1 -0
- package/dist/tools/categories/getMicrobiome.d.ts +10 -0
- package/dist/tools/categories/getMicrobiome.d.ts.map +1 -0
- package/dist/tools/categories/getMicrobiome.js +5 -0
- package/dist/tools/categories/getMicrobiome.js.map +1 -0
- package/dist/tools/categories/getMovementAnalysis.d.ts +10 -0
- package/dist/tools/categories/getMovementAnalysis.d.ts.map +1 -0
- package/dist/tools/categories/getMovementAnalysis.js +5 -0
- package/dist/tools/categories/getMovementAnalysis.js.map +1 -0
- package/dist/tools/categories/getNutrition.d.ts +10 -0
- package/dist/tools/categories/getNutrition.d.ts.map +1 -0
- package/dist/tools/categories/getNutrition.js +5 -0
- package/dist/tools/categories/getNutrition.js.map +1 -0
- package/dist/tools/categories/getRespiratory.d.ts +10 -0
- package/dist/tools/categories/getRespiratory.d.ts.map +1 -0
- package/dist/tools/categories/getRespiratory.js +5 -0
- package/dist/tools/categories/getRespiratory.js.map +1 -0
- package/dist/tools/categories/getSleep.d.ts +10 -0
- package/dist/tools/categories/getSleep.d.ts.map +1 -0
- package/dist/tools/categories/getSleep.js +5 -0
- package/dist/tools/categories/getSleep.js.map +1 -0
- package/dist/tools/categories/getStressAndHRV.d.ts +10 -0
- package/dist/tools/categories/getStressAndHRV.d.ts.map +1 -0
- package/dist/tools/categories/getStressAndHRV.js +5 -0
- package/dist/tools/categories/getStressAndHRV.js.map +1 -0
- package/dist/tools/categories/getWellness.d.ts +10 -0
- package/dist/tools/categories/getWellness.d.ts.map +1 -0
- package/dist/tools/categories/getWellness.js +5 -0
- package/dist/tools/categories/getWellness.js.map +1 -0
- package/dist/tools/categories/getWomensHealth.d.ts +10 -0
- package/dist/tools/categories/getWomensHealth.d.ts.map +1 -0
- package/dist/tools/categories/getWomensHealth.js +5 -0
- package/dist/tools/categories/getWomensHealth.js.map +1 -0
- package/dist/tools/categories/getWorkouts.d.ts +10 -0
- package/dist/tools/categories/getWorkouts.d.ts.map +1 -0
- package/dist/tools/categories/getWorkouts.js +5 -0
- package/dist/tools/categories/getWorkouts.js.map +1 -0
- package/dist/tools/categoryTools.d.ts +100 -0
- package/dist/tools/categoryTools.d.ts.map +1 -0
- package/dist/tools/categoryTools.js +66 -0
- package/dist/tools/categoryTools.js.map +1 -0
- package/dist/tools/get.d.ts +39 -0
- package/dist/tools/get.d.ts.map +1 -0
- package/dist/tools/get.js +118 -0
- package/dist/tools/get.js.map +1 -0
- package/dist/tools/getAvailableDataTypes.d.ts +101 -0
- package/dist/tools/getAvailableDataTypes.d.ts.map +1 -0
- package/dist/tools/getAvailableDataTypes.js +120 -0
- package/dist/tools/getAvailableDataTypes.js.map +1 -0
- package/dist/tools/getConnectionWidgetUrl.d.ts +12 -0
- package/dist/tools/getConnectionWidgetUrl.d.ts.map +1 -0
- package/dist/tools/getConnectionWidgetUrl.js +26 -0
- package/dist/tools/getConnectionWidgetUrl.js.map +1 -0
- package/dist/tools/getDailyData.d.ts +30 -0
- package/dist/tools/getDailyData.d.ts.map +1 -0
- package/dist/tools/getDailyData.js +114 -0
- package/dist/tools/getDailyData.js.map +1 -0
- package/dist/tools/getEpochData.d.ts +30 -0
- package/dist/tools/getEpochData.d.ts.map +1 -0
- package/dist/tools/getEpochData.js +111 -0
- package/dist/tools/getEpochData.js.map +1 -0
- package/dist/tools/getHealthDataByCategory.d.ts +38 -0
- package/dist/tools/getHealthDataByCategory.d.ts.map +1 -0
- package/dist/tools/getHealthDataByCategory.js +231 -0
- package/dist/tools/getHealthDataByCategory.js.map +1 -0
- package/dist/tools/getUserInformation.d.ts +8 -0
- package/dist/tools/getUserInformation.d.ts.map +1 -0
- package/dist/tools/getUserInformation.js +24 -0
- package/dist/tools/getUserInformation.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +12 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/legacy.d.ts +37 -0
- package/dist/tools/legacy.d.ts.map +1 -0
- package/dist/tools/legacy.js +105 -0
- package/dist/tools/legacy.js.map +1 -0
- package/dist/tools/listConnectedSources.d.ts +11 -0
- package/dist/tools/listConnectedSources.d.ts.map +1 -0
- package/dist/tools/listConnectedSources.js +29 -0
- package/dist/tools/listConnectedSources.js.map +1 -0
- package/dist/tools/listDevices.d.ts +11 -0
- package/dist/tools/listDevices.d.ts.map +1 -0
- package/dist/tools/listDevices.js +29 -0
- package/dist/tools/listDevices.js.map +1 -0
- package/dist/tools/search-filters.d.ts +42 -0
- package/dist/tools/search-filters.d.ts.map +1 -0
- package/dist/tools/search-filters.js +210 -0
- package/dist/tools/search-filters.js.map +1 -0
- package/dist/tools/search-keyword.d.ts +32 -0
- package/dist/tools/search-keyword.d.ts.map +1 -0
- package/dist/tools/search-keyword.js +122 -0
- package/dist/tools/search-keyword.js.map +1 -0
- package/dist/tools/search-tools.d.ts +8 -0
- package/dist/tools/search-tools.d.ts.map +1 -0
- package/dist/tools/search-tools.js +273 -0
- package/dist/tools/search-tools.js.map +1 -0
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +30 -0
- package/parse-csv.py +152 -0
- package/src/category-mappings.ts +181 -0
- package/src/data-enrichment.ts +125 -0
- package/src/data-types-generated.ts +2652 -0
- package/src/helpers.ts +198 -0
- package/src/index.ts +859 -0
- package/src/schemas.ts +372 -0
- package/src/tools/baseCategoryHandler.ts +243 -0
- package/src/tools/categoryTools.ts +101 -0
- package/src/tools/get.ts +147 -0
- package/src/tools/getAvailableDataTypes.ts +148 -0
- package/src/tools/index.ts +32 -0
- package/src/tools/listConnectedSources.ts +45 -0
- package/src/tools/listDevices.ts +45 -0
- package/src/tools/search-filters.ts +253 -0
- package/src/tools/search-keyword.ts +162 -0
- package/src/types.ts +44 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Export all tool handlers
|
|
2
|
+
// PRIMARY CATEGORY-SPECIFIC TOOLS (16 specialized tools - combined into single file)
|
|
3
|
+
export { getActivity, getHeartRate, getSleep, getWorkouts, getStressAndHRV, getRespiratory, getBloodGlucose, getBodyComposition, getWomensHealth, getNutrition, getCardiovascular, getWellness, getAudioAndHearing, getMicrobiome, getLocation, getMovementAnalysis, } from "./categoryTools.js";
|
|
4
|
+
// Search and retrieval tools
|
|
5
|
+
export { searchKeyword } from "./search-keyword.js";
|
|
6
|
+
export { searchFilters } from "./search-filters.js";
|
|
7
|
+
// End user information tools
|
|
8
|
+
export { listConnectedSources } from "./listConnectedSources.js";
|
|
9
|
+
export { listDevices } from "./listDevices.js";
|
|
10
|
+
// Internal/reference tools
|
|
11
|
+
export { getAvailableDataTypes } from "./getAvailableDataTypes.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,qFAAqF;AACrF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,6BAA6B;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,6BAA6B;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { GetUserInformationSchema, GetAvailableDataTypesSchema, GetDailyDataSchema, GetEpochDataSchema } from "../schemas.js";
|
|
4
|
+
export declare function getUserInformation(req: Request, _args: z.infer<typeof GetUserInformationSchema>): Promise<{
|
|
5
|
+
connectedSources: any;
|
|
6
|
+
devices: any;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function getAvailableDataTypes(_req: Request, args: z.infer<typeof GetAvailableDataTypesSchema>): Promise<{
|
|
9
|
+
totalCategories: number;
|
|
10
|
+
totalDataTypes: number;
|
|
11
|
+
categories: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
count: number;
|
|
14
|
+
examples: string[];
|
|
15
|
+
}>;
|
|
16
|
+
} | {
|
|
17
|
+
category: string;
|
|
18
|
+
count: number;
|
|
19
|
+
dataTypes: import("../data-types-generated.js").DataType[];
|
|
20
|
+
search?: undefined;
|
|
21
|
+
dataSource?: undefined;
|
|
22
|
+
} | {
|
|
23
|
+
search: string;
|
|
24
|
+
count: number;
|
|
25
|
+
dataTypes: import("../data-types-generated.js").DataType[];
|
|
26
|
+
category?: undefined;
|
|
27
|
+
dataSource?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
dataSource: string;
|
|
30
|
+
count: number;
|
|
31
|
+
dataTypes: import("../data-types-generated.js").DataType[];
|
|
32
|
+
category?: undefined;
|
|
33
|
+
search?: undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function getDailyData(req: Request, args: z.infer<typeof GetDailyDataSchema>): Promise<unknown>;
|
|
36
|
+
export declare function getEpochData(req: Request, args: z.infer<typeof GetEpochDataSchema>): Promise<unknown>;
|
|
37
|
+
//# sourceMappingURL=legacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../src/tools/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAevB,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC;;;GA0BrG;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GAsClD;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,oBA2BxF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,oBA2BxF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { extractThryveHeaders, buildUrlEncodedBody, getDefaultDateRange, getDefaultTimestampRange, THRYVE_API_BASE_URL, } from "../helpers.js";
|
|
2
|
+
import { getCategorySummary, getDataTypesByCategory, searchDataTypes, getDataTypesForSource, } from "../data-types-generated.js";
|
|
3
|
+
export async function getUserInformation(req, _args) {
|
|
4
|
+
const { headers, authToken } = extractThryveHeaders(req);
|
|
5
|
+
const body = buildUrlEncodedBody({ authenticationToken: authToken });
|
|
6
|
+
const response = await fetch(`${THRYVE_API_BASE_URL}/v5/userInformation`, {
|
|
7
|
+
method: "POST",
|
|
8
|
+
headers,
|
|
9
|
+
body,
|
|
10
|
+
});
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
throw new Error(`Thryve API error: ${response.status} ${response.statusText}`);
|
|
13
|
+
}
|
|
14
|
+
const data = await response.json();
|
|
15
|
+
// Filter out sensitive personal information - only return connected sources
|
|
16
|
+
if (Array.isArray(data) && data.length > 0) {
|
|
17
|
+
const userData = data[0];
|
|
18
|
+
return {
|
|
19
|
+
connectedSources: userData.connectedSources || [],
|
|
20
|
+
devices: userData.devices || [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return { connectedSources: [], devices: [] };
|
|
24
|
+
}
|
|
25
|
+
export async function getAvailableDataTypes(_req, args) {
|
|
26
|
+
// If no filters, return category summary
|
|
27
|
+
if (!args.category && !args.search && !args.dataSource) {
|
|
28
|
+
return getCategorySummary();
|
|
29
|
+
}
|
|
30
|
+
// Filter by category
|
|
31
|
+
if (args.category) {
|
|
32
|
+
const dataTypes = getDataTypesByCategory(args.category);
|
|
33
|
+
return {
|
|
34
|
+
category: args.category,
|
|
35
|
+
count: dataTypes.length,
|
|
36
|
+
dataTypes,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Search by keyword
|
|
40
|
+
if (args.search) {
|
|
41
|
+
const dataTypes = searchDataTypes(args.search);
|
|
42
|
+
return {
|
|
43
|
+
search: args.search,
|
|
44
|
+
count: dataTypes.length,
|
|
45
|
+
dataTypes,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Filter by data source
|
|
49
|
+
if (args.dataSource) {
|
|
50
|
+
const dataTypes = getDataTypesForSource(args.dataSource);
|
|
51
|
+
return {
|
|
52
|
+
dataSource: args.dataSource,
|
|
53
|
+
count: dataTypes.length,
|
|
54
|
+
dataTypes,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return getCategorySummary();
|
|
58
|
+
}
|
|
59
|
+
export async function getDailyData(req, args) {
|
|
60
|
+
const { headers, authToken } = extractThryveHeaders(req);
|
|
61
|
+
// Apply default date range if not provided
|
|
62
|
+
const defaults = getDefaultDateRange();
|
|
63
|
+
const startDay = args.startDay || defaults.startDay;
|
|
64
|
+
const endDay = args.endDay || defaults.endDay;
|
|
65
|
+
const body = buildUrlEncodedBody({
|
|
66
|
+
authenticationToken: authToken,
|
|
67
|
+
startDay,
|
|
68
|
+
endDay,
|
|
69
|
+
dataSources: args.dataSources,
|
|
70
|
+
displayTypeName: args.displayTypeName,
|
|
71
|
+
});
|
|
72
|
+
const response = await fetch(`${THRYVE_API_BASE_URL}/v5/dailyDynamicValues`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers,
|
|
75
|
+
body,
|
|
76
|
+
});
|
|
77
|
+
if (!response.ok) {
|
|
78
|
+
throw new Error(`Thryve API error: ${response.status} ${response.statusText}`);
|
|
79
|
+
}
|
|
80
|
+
return await response.json();
|
|
81
|
+
}
|
|
82
|
+
export async function getEpochData(req, args) {
|
|
83
|
+
const { headers, authToken } = extractThryveHeaders(req);
|
|
84
|
+
// Apply default timestamp range if not provided
|
|
85
|
+
const defaults = getDefaultTimestampRange();
|
|
86
|
+
const startTimestamp = args.startTimestamp || defaults.startTimestamp;
|
|
87
|
+
const endTimestamp = args.endTimestamp || defaults.endTimestamp;
|
|
88
|
+
const body = buildUrlEncodedBody({
|
|
89
|
+
authenticationToken: authToken,
|
|
90
|
+
startTimestamp,
|
|
91
|
+
endTimestamp,
|
|
92
|
+
dataSources: args.dataSources,
|
|
93
|
+
displayTypeName: args.displayTypeName,
|
|
94
|
+
});
|
|
95
|
+
const response = await fetch(`${THRYVE_API_BASE_URL}/v5/dynamicEpochValues`, {
|
|
96
|
+
method: "POST",
|
|
97
|
+
headers,
|
|
98
|
+
body,
|
|
99
|
+
});
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
throw new Error(`Thryve API error: ${response.status} ${response.statusText}`);
|
|
102
|
+
}
|
|
103
|
+
return await response.json();
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../src/tools/legacy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { ListConnectedSourcesSchema } from "../schemas.js";
|
|
4
|
+
export declare function listConnectedSources(req: Request, args: z.infer<typeof ListConnectedSourcesSchema>): Promise<{
|
|
5
|
+
sources: any;
|
|
6
|
+
count: any;
|
|
7
|
+
metadata: {
|
|
8
|
+
retrievedAt: string;
|
|
9
|
+
};
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=listConnectedSources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listConnectedSources.d.ts","sourceRoot":"","sources":["../../src/tools/listConnectedSources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAOhE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC;;;;;;GAiCjD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { extractThryveHeaders, buildUrlEncodedBody, THRYVE_API_BASE_URL, } from "../helpers.js";
|
|
2
|
+
export async function listConnectedSources(req, args) {
|
|
3
|
+
const { headers, authToken } = extractThryveHeaders(req);
|
|
4
|
+
const body = buildUrlEncodedBody({
|
|
5
|
+
authenticationToken: authToken,
|
|
6
|
+
});
|
|
7
|
+
const response = await fetch(`${THRYVE_API_BASE_URL}/v5/userInformation`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers,
|
|
10
|
+
body,
|
|
11
|
+
});
|
|
12
|
+
if (!response.ok) {
|
|
13
|
+
throw new Error(`Thryve API error: ${response.status} ${response.statusText}`);
|
|
14
|
+
}
|
|
15
|
+
const data = await response.json();
|
|
16
|
+
// The API returns an array of user information objects
|
|
17
|
+
// Extract connected sources from the first user (assuming single user query)
|
|
18
|
+
const userInfo = Array.isArray(data) ? data[0] : data;
|
|
19
|
+
const connectedSources = userInfo?.connectedSources || [];
|
|
20
|
+
// Return full details with metadata
|
|
21
|
+
return {
|
|
22
|
+
sources: connectedSources,
|
|
23
|
+
count: connectedSources.length,
|
|
24
|
+
metadata: {
|
|
25
|
+
retrievedAt: new Date().toISOString(),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=listConnectedSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listConnectedSources.js","sourceRoot":"","sources":["../../src/tools/listConnectedSources.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAY,EACZ,IAAgD;IAEhD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,mBAAmB,EAAE,SAAS;KAC/B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,mBAAmB,qBAAqB,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,uDAAuD;IACvD,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,MAAM,gBAAgB,GAAG,QAAQ,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAE1D,oCAAoC;IACpC,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,gBAAgB,CAAC,MAAM;QAC9B,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { ListDevicesSchema } from "../schemas.js";
|
|
4
|
+
export declare function listDevices(req: Request, args: z.infer<typeof ListDevicesSchema>): Promise<{
|
|
5
|
+
devices: any;
|
|
6
|
+
count: any;
|
|
7
|
+
metadata: {
|
|
8
|
+
retrievedAt: string;
|
|
9
|
+
};
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=listDevices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listDevices.d.ts","sourceRoot":"","sources":["../../src/tools/listDevices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;;;;;;GAiCxC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { extractThryveHeaders, buildUrlEncodedBody, THRYVE_API_BASE_URL, } from "../helpers.js";
|
|
2
|
+
export async function listDevices(req, args) {
|
|
3
|
+
const { headers, authToken } = extractThryveHeaders(req);
|
|
4
|
+
const body = buildUrlEncodedBody({
|
|
5
|
+
authenticationToken: authToken,
|
|
6
|
+
});
|
|
7
|
+
const response = await fetch(`${THRYVE_API_BASE_URL}/v5/userInformation`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers,
|
|
10
|
+
body,
|
|
11
|
+
});
|
|
12
|
+
if (!response.ok) {
|
|
13
|
+
throw new Error(`Thryve API error: ${response.status} ${response.statusText}`);
|
|
14
|
+
}
|
|
15
|
+
const data = await response.json();
|
|
16
|
+
// The API returns an array of user information objects
|
|
17
|
+
// Extract devices from the first user (assuming single user query)
|
|
18
|
+
const userInfo = Array.isArray(data) ? data[0] : data;
|
|
19
|
+
const devices = userInfo?.devices || [];
|
|
20
|
+
// Return full details with metadata
|
|
21
|
+
return {
|
|
22
|
+
devices: devices,
|
|
23
|
+
count: devices.length,
|
|
24
|
+
metadata: {
|
|
25
|
+
retrievedAt: new Date().toISOString(),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=listDevices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listDevices.js","sourceRoot":"","sources":["../../src/tools/listDevices.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAY,EACZ,IAAuC;IAEvC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,mBAAmB,EAAE,SAAS;KAC/B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,mBAAmB,qBAAqB,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,uDAAuD;IACvD,mEAAmE;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;IAExC,oCAAoC;IACpC,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { SearchFiltersSchema } from "../schemas.js";
|
|
4
|
+
import type { HealthDataRecord } from "../types.js";
|
|
5
|
+
export declare function searchFilters(req: Request, args: z.infer<typeof SearchFiltersSchema>): Promise<{
|
|
6
|
+
results: Record<string, HealthDataRecord[]>;
|
|
7
|
+
metadata: {
|
|
8
|
+
resolution: "daily" | "epoch" | "both";
|
|
9
|
+
categories: ("Activity" | "Sleep" | "Workouts" | "Movement Analysis" | "Heart Rate" | "Stress & HRV" | "Blood Glucose" | "Respiratory" | "Body Composition" | "Womens Health" | "Nutrition" | "Cardiovascular" | "Wellness" | "Audio & Hearing" | "Microbiome" | "Location")[];
|
|
10
|
+
timeRange: {
|
|
11
|
+
start: string;
|
|
12
|
+
end: string;
|
|
13
|
+
};
|
|
14
|
+
totalRecords: number;
|
|
15
|
+
dataTypesFound: string[];
|
|
16
|
+
dataSources: number[] | undefined;
|
|
17
|
+
filters: {
|
|
18
|
+
dataTypes: number[] | undefined;
|
|
19
|
+
valueMin: number | undefined;
|
|
20
|
+
valueMax: number | undefined;
|
|
21
|
+
};
|
|
22
|
+
limitApplied: number | undefined;
|
|
23
|
+
};
|
|
24
|
+
} | {
|
|
25
|
+
resolution: "daily" | "epoch" | "both";
|
|
26
|
+
filters: {
|
|
27
|
+
dataTypes: number[] | undefined;
|
|
28
|
+
dataSources: number[] | undefined;
|
|
29
|
+
categories: ("Activity" | "Sleep" | "Workouts" | "Movement Analysis" | "Heart Rate" | "Stress & HRV" | "Blood Glucose" | "Respiratory" | "Body Composition" | "Womens Health" | "Nutrition" | "Cardiovascular" | "Wellness" | "Audio & Hearing" | "Microbiome" | "Location")[] | undefined;
|
|
30
|
+
startDate: string;
|
|
31
|
+
endDate: string;
|
|
32
|
+
startTimestamp: string | undefined;
|
|
33
|
+
endTimestamp: string | undefined;
|
|
34
|
+
valueMin: number | undefined;
|
|
35
|
+
valueMax: number | undefined;
|
|
36
|
+
limitApplied: number | undefined;
|
|
37
|
+
};
|
|
38
|
+
results: HealthDataRecord[];
|
|
39
|
+
pagination: import("../types.js").PaginationMetadata;
|
|
40
|
+
metadata?: undefined;
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=search-filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-filters.d.ts","sourceRoot":"","sources":["../../src/tools/search-filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAapD,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiM1F"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { extractThryveHeaders, buildUrlEncodedBody, getDefaultDateRange, getDefaultTimestampRange, THRYVE_API_BASE_URL, sortHealthData, paginateResults, } from "../helpers.js";
|
|
2
|
+
import { getDataTypeIdsForCategories, CATEGORY_MAPPINGS } from "../category-mappings.js";
|
|
3
|
+
import { flattenThryveResponse, enrichWithDataTypes } from "../data-enrichment.js";
|
|
4
|
+
export async function searchFilters(req, args) {
|
|
5
|
+
const { headers, authToken } = extractThryveHeaders(req);
|
|
6
|
+
// Determine date/timestamp ranges
|
|
7
|
+
let startDay;
|
|
8
|
+
let endDay;
|
|
9
|
+
let startTimestamp;
|
|
10
|
+
let endTimestamp;
|
|
11
|
+
// Prefer explicit timestamps if provided, otherwise use dates
|
|
12
|
+
if (args.startTimestamp || args.endTimestamp) {
|
|
13
|
+
const defaults = getDefaultTimestampRange();
|
|
14
|
+
startTimestamp = args.startTimestamp || defaults.startTimestamp;
|
|
15
|
+
endTimestamp = args.endTimestamp || defaults.endTimestamp;
|
|
16
|
+
// Extract dates from timestamps
|
|
17
|
+
startDay = startTimestamp.split('T')[0];
|
|
18
|
+
endDay = endTimestamp.split('T')[0];
|
|
19
|
+
}
|
|
20
|
+
else if (args.startDate || args.endDate) {
|
|
21
|
+
const defaults = getDefaultDateRange();
|
|
22
|
+
startDay = args.startDate || defaults.startDay;
|
|
23
|
+
endDay = args.endDate || defaults.endDay;
|
|
24
|
+
startTimestamp = `${startDay}T00:00:00Z`;
|
|
25
|
+
endTimestamp = `${endDay}T23:59:59Z`;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const defaults = getDefaultDateRange();
|
|
29
|
+
startDay = defaults.startDay;
|
|
30
|
+
endDay = defaults.endDay;
|
|
31
|
+
startTimestamp = `${startDay}T00:00:00Z`;
|
|
32
|
+
endTimestamp = `${endDay}T23:59:59Z`;
|
|
33
|
+
}
|
|
34
|
+
// Convert dataSources array to comma-separated string
|
|
35
|
+
const dataSourcesParam = args.dataSources?.join(',');
|
|
36
|
+
// Determine resolution (default: "both")
|
|
37
|
+
const resolution = args.resolution || "both";
|
|
38
|
+
// Fetch data based on resolution
|
|
39
|
+
const fetchPromises = [];
|
|
40
|
+
if (resolution === "daily" || resolution === "both") {
|
|
41
|
+
const dailyBody = buildUrlEncodedBody({
|
|
42
|
+
authenticationToken: authToken,
|
|
43
|
+
startDay,
|
|
44
|
+
endDay,
|
|
45
|
+
dataSources: dataSourcesParam,
|
|
46
|
+
displayTypeName: "true",
|
|
47
|
+
});
|
|
48
|
+
fetchPromises.push(fetch(`${THRYVE_API_BASE_URL}/v5/dailyDynamicValues`, {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers,
|
|
51
|
+
body: dailyBody,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
if (resolution === "epoch" || resolution === "both") {
|
|
55
|
+
const epochBody = buildUrlEncodedBody({
|
|
56
|
+
authenticationToken: authToken,
|
|
57
|
+
startTimestamp,
|
|
58
|
+
endTimestamp,
|
|
59
|
+
dataSources: dataSourcesParam,
|
|
60
|
+
displayTypeName: "true",
|
|
61
|
+
});
|
|
62
|
+
fetchPromises.push(fetch(`${THRYVE_API_BASE_URL}/v5/dynamicEpochValues`, {
|
|
63
|
+
method: "POST",
|
|
64
|
+
headers,
|
|
65
|
+
body: epochBody,
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
const responses = await Promise.all(fetchPromises);
|
|
69
|
+
// Check for errors
|
|
70
|
+
for (const response of responses) {
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
throw new Error(`Thryve API error: ${response.status} ${response.statusText}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Parse responses
|
|
76
|
+
const jsonData = await Promise.all(responses.map(r => r.json()));
|
|
77
|
+
// Flatten and enrich data
|
|
78
|
+
let allData = [];
|
|
79
|
+
for (const data of jsonData) {
|
|
80
|
+
const flattened = flattenThryveResponse(data);
|
|
81
|
+
enrichWithDataTypes(flattened);
|
|
82
|
+
allData = allData.concat(flattened);
|
|
83
|
+
}
|
|
84
|
+
// Apply filters
|
|
85
|
+
let filteredData = allData;
|
|
86
|
+
// Filter by categories (convert to data type IDs)
|
|
87
|
+
if (args.categories && args.categories.length > 0) {
|
|
88
|
+
const categoryDataTypeIds = getDataTypeIdsForCategories(args.categories);
|
|
89
|
+
const dataTypeIdSet = new Set(categoryDataTypeIds);
|
|
90
|
+
filteredData = filteredData.filter((record) => {
|
|
91
|
+
const typeId = record.dataType || record.dailyDynamicValueType || record.dynamicEpochValueType;
|
|
92
|
+
return typeId && dataTypeIdSet.has(typeId);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// Filter by specific data type IDs
|
|
96
|
+
if (args.dataTypes && args.dataTypes.length > 0) {
|
|
97
|
+
const dataTypeIdSet = new Set(args.dataTypes);
|
|
98
|
+
filteredData = filteredData.filter((record) => {
|
|
99
|
+
const typeId = record.dataType || record.dailyDynamicValueType || record.dynamicEpochValueType;
|
|
100
|
+
return typeId !== undefined && dataTypeIdSet.has(typeId);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Filter by value range
|
|
104
|
+
if (args.valueMin !== undefined || args.valueMax !== undefined) {
|
|
105
|
+
filteredData = filteredData.filter((record) => {
|
|
106
|
+
const value = typeof record.value === "string" ? parseFloat(record.value) : record.value;
|
|
107
|
+
if (isNaN(value))
|
|
108
|
+
return false;
|
|
109
|
+
if (args.valueMin !== undefined && value < args.valueMin)
|
|
110
|
+
return false;
|
|
111
|
+
if (args.valueMax !== undefined && value > args.valueMax)
|
|
112
|
+
return false;
|
|
113
|
+
return true;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
// Apply limit if specified (before pagination/grouping)
|
|
117
|
+
if (args.limit) {
|
|
118
|
+
filteredData = filteredData.slice(0, args.limit);
|
|
119
|
+
}
|
|
120
|
+
// Check if we should group by category
|
|
121
|
+
if (args.groupByCategory && args.categories && args.categories.length > 0) {
|
|
122
|
+
// Group results by category (like getDailyData/getEpochData)
|
|
123
|
+
const groupedResults = groupByCategory(filteredData, args.categories);
|
|
124
|
+
// Build metadata
|
|
125
|
+
const dataTypesFound = new Set();
|
|
126
|
+
filteredData.forEach((record) => {
|
|
127
|
+
const typeName = record.dailyDynamicValueTypeName || record.dynamicEpochValueTypeName;
|
|
128
|
+
if (typeName)
|
|
129
|
+
dataTypesFound.add(typeName);
|
|
130
|
+
});
|
|
131
|
+
const metadata = {
|
|
132
|
+
resolution,
|
|
133
|
+
categories: args.categories,
|
|
134
|
+
timeRange: {
|
|
135
|
+
start: startTimestamp,
|
|
136
|
+
end: endTimestamp,
|
|
137
|
+
},
|
|
138
|
+
totalRecords: filteredData.length,
|
|
139
|
+
dataTypesFound: Array.from(dataTypesFound).sort(),
|
|
140
|
+
dataSources: args.dataSources,
|
|
141
|
+
filters: {
|
|
142
|
+
dataTypes: args.dataTypes,
|
|
143
|
+
valueMin: args.valueMin,
|
|
144
|
+
valueMax: args.valueMax,
|
|
145
|
+
},
|
|
146
|
+
limitApplied: args.limit,
|
|
147
|
+
};
|
|
148
|
+
return {
|
|
149
|
+
results: groupedResults,
|
|
150
|
+
metadata,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Return flat paginated results (original behavior)
|
|
155
|
+
const sortedData = sortHealthData(filteredData, args.sortBy, args.sortOrder);
|
|
156
|
+
const paginatedResult = paginateResults(sortedData, args.page, args.pageSize);
|
|
157
|
+
return {
|
|
158
|
+
...paginatedResult,
|
|
159
|
+
resolution,
|
|
160
|
+
filters: {
|
|
161
|
+
dataTypes: args.dataTypes,
|
|
162
|
+
dataSources: args.dataSources,
|
|
163
|
+
categories: args.categories,
|
|
164
|
+
startDate: startDay,
|
|
165
|
+
endDate: endDay,
|
|
166
|
+
startTimestamp: args.startTimestamp,
|
|
167
|
+
endTimestamp: args.endTimestamp,
|
|
168
|
+
valueMin: args.valueMin,
|
|
169
|
+
valueMax: args.valueMax,
|
|
170
|
+
limitApplied: args.limit,
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Group records by requested categories
|
|
177
|
+
* (Copied from getDailyData/getEpochData for compatibility)
|
|
178
|
+
*/
|
|
179
|
+
function groupByCategory(records, requestedCategories) {
|
|
180
|
+
const grouped = {};
|
|
181
|
+
// Initialize structure for requested categories
|
|
182
|
+
for (const category of requestedCategories) {
|
|
183
|
+
grouped[category] = [];
|
|
184
|
+
}
|
|
185
|
+
// Get category data type IDs for matching
|
|
186
|
+
const categoryDataTypes = new Map();
|
|
187
|
+
for (const category of requestedCategories) {
|
|
188
|
+
const mapping = CATEGORY_MAPPINGS[category];
|
|
189
|
+
if (mapping) {
|
|
190
|
+
for (const dataTypeId of mapping.dataTypeIds) {
|
|
191
|
+
if (!categoryDataTypes.has(dataTypeId)) {
|
|
192
|
+
categoryDataTypes.set(dataTypeId, []);
|
|
193
|
+
}
|
|
194
|
+
categoryDataTypes.get(dataTypeId).push(category);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Group records
|
|
199
|
+
for (const record of records) {
|
|
200
|
+
const typeId = record.dataType || record.dailyDynamicValueType || record.dynamicEpochValueType;
|
|
201
|
+
if (typeId && categoryDataTypes.has(typeId)) {
|
|
202
|
+
const categories = categoryDataTypes.get(typeId);
|
|
203
|
+
for (const category of categories) {
|
|
204
|
+
grouped[category].push(record);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return grouped;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=search-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-filters.js","sourceRoot":"","sources":["../../src/tools/search-filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { SearchKeywordSchema } from "../schemas.js";
|
|
4
|
+
import type { HealthDataRecord } from "../types.js";
|
|
5
|
+
export declare function searchKeyword(req: Request, args: z.infer<typeof SearchKeywordSchema>): Promise<{
|
|
6
|
+
data: never[];
|
|
7
|
+
totalRecords: number;
|
|
8
|
+
page: number;
|
|
9
|
+
pageSize: number;
|
|
10
|
+
totalPages: number;
|
|
11
|
+
query: string;
|
|
12
|
+
matchingPropertyNames: never[];
|
|
13
|
+
message: string;
|
|
14
|
+
} | {
|
|
15
|
+
query: string;
|
|
16
|
+
matchingPropertyNames: string[];
|
|
17
|
+
filters: {
|
|
18
|
+
startDate: string;
|
|
19
|
+
endDate: string;
|
|
20
|
+
dataType: string | undefined;
|
|
21
|
+
dataSource: string | undefined;
|
|
22
|
+
};
|
|
23
|
+
results: HealthDataRecord[];
|
|
24
|
+
pagination: import("../types.js").PaginationMetadata;
|
|
25
|
+
data?: undefined;
|
|
26
|
+
totalRecords?: undefined;
|
|
27
|
+
page?: undefined;
|
|
28
|
+
pageSize?: undefined;
|
|
29
|
+
totalPages?: undefined;
|
|
30
|
+
message?: undefined;
|
|
31
|
+
}>;
|
|
32
|
+
//# sourceMappingURL=search-keyword.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-keyword.d.ts","sourceRoot":"","sources":["../../src/tools/search-keyword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GAkJ1F"}
|