@bmhall2/skylight-mcp 1.1.7
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/LICENSE +21 -0
- package/README.md +265 -0
- package/dist/api/auth.d.ts +38 -0
- package/dist/api/auth.d.ts.map +1 -0
- package/dist/api/auth.js +62 -0
- package/dist/api/auth.js.map +1 -0
- package/dist/api/client.d.ts +84 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +228 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/endpoints/calendar.d.ts +33 -0
- package/dist/api/endpoints/calendar.d.ts.map +1 -0
- package/dist/api/endpoints/calendar.js +60 -0
- package/dist/api/endpoints/calendar.js.map +1 -0
- package/dist/api/endpoints/categories.d.ts +23 -0
- package/dist/api/endpoints/categories.d.ts.map +1 -0
- package/dist/api/endpoints/categories.js +48 -0
- package/dist/api/endpoints/categories.js.map +1 -0
- package/dist/api/endpoints/chores.d.ts +50 -0
- package/dist/api/endpoints/chores.d.ts.map +1 -0
- package/dist/api/endpoints/chores.js +106 -0
- package/dist/api/endpoints/chores.js.map +1 -0
- package/dist/api/endpoints/devices.d.ts +6 -0
- package/dist/api/endpoints/devices.d.ts.map +1 -0
- package/dist/api/endpoints/devices.js +10 -0
- package/dist/api/endpoints/devices.js.map +1 -0
- package/dist/api/endpoints/frames.d.ts +6 -0
- package/dist/api/endpoints/frames.d.ts.map +1 -0
- package/dist/api/endpoints/frames.js +10 -0
- package/dist/api/endpoints/frames.js.map +1 -0
- package/dist/api/endpoints/lists.d.ts +55 -0
- package/dist/api/endpoints/lists.d.ts.map +1 -0
- package/dist/api/endpoints/lists.js +125 -0
- package/dist/api/endpoints/lists.js.map +1 -0
- package/dist/api/endpoints/meals.d.ts +102 -0
- package/dist/api/endpoints/meals.d.ts.map +1 -0
- package/dist/api/endpoints/meals.js +100 -0
- package/dist/api/endpoints/meals.js.map +1 -0
- package/dist/api/endpoints/misc.d.ts +27 -0
- package/dist/api/endpoints/misc.d.ts.map +1 -0
- package/dist/api/endpoints/misc.js +18 -0
- package/dist/api/endpoints/misc.js.map +1 -0
- package/dist/api/endpoints/photos.d.ts +13 -0
- package/dist/api/endpoints/photos.d.ts.map +1 -0
- package/dist/api/endpoints/photos.js +10 -0
- package/dist/api/endpoints/photos.js.map +1 -0
- package/dist/api/endpoints/rewards.d.ts +49 -0
- package/dist/api/endpoints/rewards.d.ts.map +1 -0
- package/dist/api/endpoints/rewards.js +105 -0
- package/dist/api/endpoints/rewards.js.map +1 -0
- package/dist/api/endpoints/taskbox.d.ts +13 -0
- package/dist/api/endpoints/taskbox.d.ts.map +1 -0
- package/dist/api/endpoints/taskbox.js +22 -0
- package/dist/api/endpoints/taskbox.js.map +1 -0
- package/dist/api/generated-types.d.ts +18967 -0
- package/dist/api/generated-types.d.ts.map +1 -0
- package/dist/api/generated-types.js +6 -0
- package/dist/api/generated-types.js.map +1 -0
- package/dist/api/types.d.ts +283 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +5 -0
- package/dist/api/types.js.map +1 -0
- package/dist/config.d.ts +52 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +80 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +48 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/calendar.d.ts +3 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +297 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/chores.d.ts +3 -0
- package/dist/tools/chores.d.ts.map +1 -0
- package/dist/tools/chores.js +349 -0
- package/dist/tools/chores.js.map +1 -0
- package/dist/tools/family.d.ts +3 -0
- package/dist/tools/family.d.ts.map +1 -0
- package/dist/tools/family.js +182 -0
- package/dist/tools/family.js.map +1 -0
- package/dist/tools/lists.d.ts +3 -0
- package/dist/tools/lists.d.ts.map +1 -0
- package/dist/tools/lists.js +481 -0
- package/dist/tools/lists.js.map +1 -0
- package/dist/tools/meals.d.ts +3 -0
- package/dist/tools/meals.d.ts.map +1 -0
- package/dist/tools/meals.js +319 -0
- package/dist/tools/meals.js.map +1 -0
- package/dist/tools/misc.d.ts +3 -0
- package/dist/tools/misc.d.ts.map +1 -0
- package/dist/tools/misc.js +101 -0
- package/dist/tools/misc.js.map +1 -0
- package/dist/tools/photos.d.ts +3 -0
- package/dist/tools/photos.d.ts.map +1 -0
- package/dist/tools/photos.js +42 -0
- package/dist/tools/photos.js.map +1 -0
- package/dist/tools/rewards.d.ts +3 -0
- package/dist/tools/rewards.d.ts.map +1 -0
- package/dist/tools/rewards.js +338 -0
- package/dist/tools/rewards.js.map +1 -0
- package/dist/tools/tasks.d.ts +3 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +68 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/utils/dates.d.ts +26 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +109 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/errors.d.ts +45 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +102 -0
- package/dist/utils/errors.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ListResource, ListItemResource } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get all lists
|
|
4
|
+
*/
|
|
5
|
+
export declare function getLists(): Promise<ListResource[]>;
|
|
6
|
+
export interface GetListWithItemsResult {
|
|
7
|
+
list: ListResource;
|
|
8
|
+
items: ListItemResource[];
|
|
9
|
+
sections?: unknown[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get a specific list with its items
|
|
13
|
+
*/
|
|
14
|
+
export declare function getListWithItems(listId: string): Promise<GetListWithItemsResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Find a list by name (case-insensitive)
|
|
17
|
+
*/
|
|
18
|
+
export declare function findListByName(name: string): Promise<ListResource | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Find a list by type (shopping or to_do)
|
|
21
|
+
*/
|
|
22
|
+
export declare function findListByType(kind: "shopping" | "to_do", preferDefault?: boolean): Promise<ListResource | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Create a new list
|
|
25
|
+
*/
|
|
26
|
+
export declare function createList(label: string, kind: "shopping" | "to_do", color?: string): Promise<ListResource>;
|
|
27
|
+
/**
|
|
28
|
+
* Update an existing list
|
|
29
|
+
*/
|
|
30
|
+
export declare function updateList(listId: string, updates: {
|
|
31
|
+
label?: string;
|
|
32
|
+
kind?: "shopping" | "to_do";
|
|
33
|
+
color?: string | null;
|
|
34
|
+
}): Promise<ListResource>;
|
|
35
|
+
/**
|
|
36
|
+
* Delete a list
|
|
37
|
+
*/
|
|
38
|
+
export declare function deleteList(listId: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Create a new list item
|
|
41
|
+
*/
|
|
42
|
+
export declare function createListItem(listId: string, label: string, section?: string): Promise<ListItemResource>;
|
|
43
|
+
/**
|
|
44
|
+
* Update a list item
|
|
45
|
+
*/
|
|
46
|
+
export declare function updateListItem(listId: string, itemId: string, updates: {
|
|
47
|
+
label?: string;
|
|
48
|
+
status?: "pending" | "completed";
|
|
49
|
+
section?: string | null;
|
|
50
|
+
}): Promise<ListItemResource>;
|
|
51
|
+
/**
|
|
52
|
+
* Delete a list item
|
|
53
|
+
*/
|
|
54
|
+
export declare function deleteListItem(listId: string, itemId: string): Promise<void>;
|
|
55
|
+
//# sourceMappingURL=lists.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/lists.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,YAAY,EACZ,gBAAgB,EAMjB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAIxD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAStF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAIpF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,UAAO,GACnB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAUnC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC9E,OAAO,CAAC,YAAY,CAAC,CAavB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACrF,OAAO,CAAC,gBAAgB,CAAC,CAa3B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { getClient } from "../client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get all lists
|
|
4
|
+
*/
|
|
5
|
+
export async function getLists() {
|
|
6
|
+
const client = getClient();
|
|
7
|
+
const response = await client.get("/api/frames/{frameId}/lists");
|
|
8
|
+
return response.data;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get a specific list with its items
|
|
12
|
+
*/
|
|
13
|
+
export async function getListWithItems(listId) {
|
|
14
|
+
const client = getClient();
|
|
15
|
+
const response = await client.get(`/api/frames/{frameId}/lists/${listId}`);
|
|
16
|
+
return {
|
|
17
|
+
list: response.data,
|
|
18
|
+
items: response.included ?? [],
|
|
19
|
+
sections: response.meta?.sections,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Find a list by name (case-insensitive)
|
|
24
|
+
*/
|
|
25
|
+
export async function findListByName(name) {
|
|
26
|
+
const lists = await getLists();
|
|
27
|
+
const lowerName = name.toLowerCase();
|
|
28
|
+
return lists.find((list) => list.attributes.label.toLowerCase().includes(lowerName));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Find a list by type (shopping or to_do)
|
|
32
|
+
*/
|
|
33
|
+
export async function findListByType(kind, preferDefault = true) {
|
|
34
|
+
const lists = await getLists();
|
|
35
|
+
const filtered = lists.filter((list) => list.attributes.kind === kind);
|
|
36
|
+
if (preferDefault && kind === "shopping") {
|
|
37
|
+
const defaultList = filtered.find((list) => list.attributes.default_grocery_list);
|
|
38
|
+
if (defaultList)
|
|
39
|
+
return defaultList;
|
|
40
|
+
}
|
|
41
|
+
return filtered[0];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a new list
|
|
45
|
+
*/
|
|
46
|
+
export async function createList(label, kind, color) {
|
|
47
|
+
const client = getClient();
|
|
48
|
+
const request = {
|
|
49
|
+
data: {
|
|
50
|
+
type: "list",
|
|
51
|
+
attributes: {
|
|
52
|
+
label,
|
|
53
|
+
kind,
|
|
54
|
+
color: color ?? null,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const response = await client.post("/api/frames/{frameId}/lists", request);
|
|
59
|
+
return response.data;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Update an existing list
|
|
63
|
+
*/
|
|
64
|
+
export async function updateList(listId, updates) {
|
|
65
|
+
const client = getClient();
|
|
66
|
+
const request = {
|
|
67
|
+
data: {
|
|
68
|
+
type: "list",
|
|
69
|
+
attributes: updates,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
const response = await client.request(`/api/frames/{frameId}/lists/${listId}`, {
|
|
73
|
+
method: "PUT",
|
|
74
|
+
body: request,
|
|
75
|
+
});
|
|
76
|
+
return response.data;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Delete a list
|
|
80
|
+
*/
|
|
81
|
+
export async function deleteList(listId) {
|
|
82
|
+
const client = getClient();
|
|
83
|
+
await client.request(`/api/frames/{frameId}/lists/${listId}`, { method: "DELETE" });
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Create a new list item
|
|
87
|
+
*/
|
|
88
|
+
export async function createListItem(listId, label, section) {
|
|
89
|
+
const client = getClient();
|
|
90
|
+
const request = {
|
|
91
|
+
data: {
|
|
92
|
+
type: "list_item",
|
|
93
|
+
attributes: {
|
|
94
|
+
label,
|
|
95
|
+
section: section ?? null,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
const response = await client.post(`/api/frames/{frameId}/lists/${listId}/list_items`, request);
|
|
100
|
+
return response.data;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Update a list item
|
|
104
|
+
*/
|
|
105
|
+
export async function updateListItem(listId, itemId, updates) {
|
|
106
|
+
const client = getClient();
|
|
107
|
+
const request = {
|
|
108
|
+
data: {
|
|
109
|
+
type: "list_item",
|
|
110
|
+
attributes: updates,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const response = await client.request(`/api/frames/{frameId}/lists/${listId}/list_items/${itemId}`, { method: "PUT", body: request });
|
|
114
|
+
return response.data;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Delete a list item
|
|
118
|
+
*/
|
|
119
|
+
export async function deleteListItem(listId, itemId) {
|
|
120
|
+
const client = getClient();
|
|
121
|
+
await client.request(`/api/frames/{frameId}/lists/${listId}/list_items/${itemId}`, {
|
|
122
|
+
method: "DELETE",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=lists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../../src/api/endpoints/lists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAazC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAgB,6BAA6B,CAAC,CAAC;IAChF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAQD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc;IACnD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAe,+BAA+B,MAAM,EAAE,CAAC,CAAC;IAEzF,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAG,QAAQ,CAAC,QAA+B,IAAI,EAAE;QACtD,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAiC;KAC3D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA0B,EAC1B,aAAa,GAAG,IAAI;IAEpB,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAEvE,IAAI,aAAa,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAClF,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;IACtC,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,IAA0B,EAC1B,KAAc;IAEd,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE;gBACV,KAAK;gBACL,IAAI;gBACJ,KAAK,EAAE,KAAK,IAAI,IAAI;aACrB;SACF;KACF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAe,6BAA6B,EAAE,OAAO,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,OAA+E;IAE/E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,OAAO;SACpB;KACF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAe,+BAA+B,MAAM,EAAE,EAAE;QAC3F,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,OAAO,CAAC,+BAA+B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,KAAa,EACb,OAAgB;IAEhB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAA0B;QACrC,IAAI,EAAE;YACJ,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE;gBACV,KAAK;gBACL,OAAO,EAAE,OAAO,IAAI,IAAI;aACzB;SACF;KACF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,+BAA+B,MAAM,aAAa,EAClD,OAAO,CACR,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,MAAc,EACd,OAAsF;IAEtF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAA0B;QACrC,IAAI,EAAE;YACJ,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,OAAO;SACpB;KACF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,+BAA+B,MAAM,eAAe,MAAM,EAAE,EAC5D,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CACjC,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc;IACjE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,OAAO,CAAC,+BAA+B,MAAM,eAAe,MAAM,EAAE,EAAE;QACjF,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export interface MealCategoryResource {
|
|
2
|
+
type: "meal_category";
|
|
3
|
+
id: string;
|
|
4
|
+
attributes: {
|
|
5
|
+
name?: string;
|
|
6
|
+
position?: number;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface MealRecipeResource {
|
|
11
|
+
type: "meal_recipe";
|
|
12
|
+
id: string;
|
|
13
|
+
attributes: {
|
|
14
|
+
summary?: string;
|
|
15
|
+
description?: string | null;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
relationships?: {
|
|
19
|
+
meal_category?: {
|
|
20
|
+
data: {
|
|
21
|
+
type: string;
|
|
22
|
+
id: string;
|
|
23
|
+
} | null;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface MealSittingResource {
|
|
28
|
+
type: "meal_sitting";
|
|
29
|
+
id: string;
|
|
30
|
+
attributes: {
|
|
31
|
+
date?: string;
|
|
32
|
+
meal_time?: string;
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
};
|
|
35
|
+
relationships?: {
|
|
36
|
+
meal_recipe?: {
|
|
37
|
+
data: {
|
|
38
|
+
type: string;
|
|
39
|
+
id: string;
|
|
40
|
+
} | null;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get meal categories (Breakfast, Lunch, Dinner, etc.)
|
|
46
|
+
*/
|
|
47
|
+
export declare function getMealCategories(): Promise<MealCategoryResource[]>;
|
|
48
|
+
export interface GetRecipesOptions {
|
|
49
|
+
include?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get all recipes
|
|
53
|
+
*/
|
|
54
|
+
export declare function getRecipes(options?: GetRecipesOptions): Promise<MealRecipeResource[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Get a specific recipe
|
|
57
|
+
*/
|
|
58
|
+
export declare function getRecipe(recipeId: string): Promise<MealRecipeResource>;
|
|
59
|
+
export interface CreateRecipeOptions {
|
|
60
|
+
summary: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
mealCategoryId?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a new recipe
|
|
66
|
+
*/
|
|
67
|
+
export declare function createRecipe(options: CreateRecipeOptions): Promise<MealRecipeResource>;
|
|
68
|
+
export interface UpdateRecipeOptions {
|
|
69
|
+
summary?: string;
|
|
70
|
+
description?: string | null;
|
|
71
|
+
mealCategoryId?: string | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Update a recipe
|
|
75
|
+
*/
|
|
76
|
+
export declare function updateRecipe(recipeId: string, options: UpdateRecipeOptions): Promise<MealRecipeResource>;
|
|
77
|
+
/**
|
|
78
|
+
* Delete a recipe
|
|
79
|
+
*/
|
|
80
|
+
export declare function deleteRecipe(recipeId: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Add recipe ingredients to grocery list
|
|
83
|
+
*/
|
|
84
|
+
export declare function addRecipeToGroceryList(recipeId: string): Promise<void>;
|
|
85
|
+
export interface GetMealSittingsOptions {
|
|
86
|
+
dateMin?: string;
|
|
87
|
+
dateMax?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get meal sittings (scheduled meals)
|
|
91
|
+
*/
|
|
92
|
+
export declare function getMealSittings(options?: GetMealSittingsOptions): Promise<MealSittingResource[]>;
|
|
93
|
+
export interface CreateMealSittingOptions {
|
|
94
|
+
date: string;
|
|
95
|
+
mealCategoryId: string;
|
|
96
|
+
recipeId?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a meal sitting (schedule a meal)
|
|
100
|
+
*/
|
|
101
|
+
export declare function createMealSitting(options: CreateMealSittingOptions): Promise<MealSittingResource>;
|
|
102
|
+
//# sourceMappingURL=meals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meals.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/meals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { getClient } from "../client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get meal categories (Breakfast, Lunch, Dinner, etc.)
|
|
4
|
+
*/
|
|
5
|
+
export async function getMealCategories() {
|
|
6
|
+
const client = getClient();
|
|
7
|
+
const response = await client.get("/api/frames/{frameId}/meals/categories");
|
|
8
|
+
return response.data;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get all recipes
|
|
12
|
+
*/
|
|
13
|
+
export async function getRecipes(options = {}) {
|
|
14
|
+
const client = getClient();
|
|
15
|
+
const response = await client.get("/api/frames/{frameId}/meals/recipes", { include: options.include ?? "meal_category" });
|
|
16
|
+
return response.data;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get a specific recipe
|
|
20
|
+
*/
|
|
21
|
+
export async function getRecipe(recipeId) {
|
|
22
|
+
const client = getClient();
|
|
23
|
+
const response = await client.get(`/api/frames/{frameId}/meals/recipes/${recipeId}`, { include: "meal_category" });
|
|
24
|
+
return response.data;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a new recipe
|
|
28
|
+
*/
|
|
29
|
+
export async function createRecipe(options) {
|
|
30
|
+
const client = getClient();
|
|
31
|
+
const body = {
|
|
32
|
+
summary: options.summary,
|
|
33
|
+
description: options.description ?? null,
|
|
34
|
+
};
|
|
35
|
+
if (options.mealCategoryId) {
|
|
36
|
+
body.meal_category_id = options.mealCategoryId;
|
|
37
|
+
}
|
|
38
|
+
const response = await client.post("/api/frames/{frameId}/meals/recipes", body);
|
|
39
|
+
return response.data;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Update a recipe
|
|
43
|
+
*/
|
|
44
|
+
export async function updateRecipe(recipeId, options) {
|
|
45
|
+
const client = getClient();
|
|
46
|
+
const body = {};
|
|
47
|
+
if (options.summary !== undefined)
|
|
48
|
+
body.summary = options.summary;
|
|
49
|
+
if (options.description !== undefined)
|
|
50
|
+
body.description = options.description;
|
|
51
|
+
if (options.mealCategoryId !== undefined)
|
|
52
|
+
body.meal_category_id = options.mealCategoryId;
|
|
53
|
+
const response = await client.request(`/api/frames/{frameId}/meals/recipes/${recipeId}`, { method: "PATCH", body });
|
|
54
|
+
return response.data;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Delete a recipe
|
|
58
|
+
*/
|
|
59
|
+
export async function deleteRecipe(recipeId) {
|
|
60
|
+
const client = getClient();
|
|
61
|
+
await client.request(`/api/frames/{frameId}/meals/recipes/${recipeId}`, {
|
|
62
|
+
method: "DELETE",
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Add recipe ingredients to grocery list
|
|
67
|
+
*/
|
|
68
|
+
export async function addRecipeToGroceryList(recipeId) {
|
|
69
|
+
const client = getClient();
|
|
70
|
+
await client.post(`/api/frames/{frameId}/meals/recipes/${recipeId}/add_to_grocery_list`, {});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get meal sittings (scheduled meals)
|
|
74
|
+
*/
|
|
75
|
+
export async function getMealSittings(options = {}) {
|
|
76
|
+
const client = getClient();
|
|
77
|
+
const params = {};
|
|
78
|
+
if (options.dateMin)
|
|
79
|
+
params.date_min = options.dateMin;
|
|
80
|
+
if (options.dateMax)
|
|
81
|
+
params.date_max = options.dateMax;
|
|
82
|
+
const response = await client.get("/api/frames/{frameId}/meals/sittings", params);
|
|
83
|
+
return response.data;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Create a meal sitting (schedule a meal)
|
|
87
|
+
*/
|
|
88
|
+
export async function createMealSitting(options) {
|
|
89
|
+
const client = getClient();
|
|
90
|
+
const body = {
|
|
91
|
+
date: options.date,
|
|
92
|
+
meal_category_id: options.mealCategoryId,
|
|
93
|
+
};
|
|
94
|
+
if (options.recipeId) {
|
|
95
|
+
body.meal_recipe_id = options.recipeId;
|
|
96
|
+
}
|
|
97
|
+
const response = await client.post("/api/frames/{frameId}/meals/sittings", body);
|
|
98
|
+
return response.data;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=meals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meals.js","sourceRoot":"","sources":["../../../src/api/endpoints/meals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface AvatarResource {
|
|
2
|
+
type: "avatar";
|
|
3
|
+
id: string;
|
|
4
|
+
attributes: {
|
|
5
|
+
name?: string;
|
|
6
|
+
url?: string;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface ColorResource {
|
|
11
|
+
type: "color";
|
|
12
|
+
id: string;
|
|
13
|
+
attributes: {
|
|
14
|
+
name?: string;
|
|
15
|
+
hex?: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get available avatar options
|
|
21
|
+
*/
|
|
22
|
+
export declare function getAvatars(): Promise<AvatarResource[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Get available color options
|
|
25
|
+
*/
|
|
26
|
+
export declare function getColors(): Promise<ColorResource[]>;
|
|
27
|
+
//# sourceMappingURL=misc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/misc.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAUD;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAI5D;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAI1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getClient } from "../client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get available avatar options
|
|
4
|
+
*/
|
|
5
|
+
export async function getAvatars() {
|
|
6
|
+
const client = getClient();
|
|
7
|
+
const response = await client.get("/api/avatars");
|
|
8
|
+
return response.data;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get available color options
|
|
12
|
+
*/
|
|
13
|
+
export async function getColors() {
|
|
14
|
+
const client = getClient();
|
|
15
|
+
const response = await client.get("/api/colors");
|
|
16
|
+
return response.data;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/api/endpoints/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8BzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAkB,cAAc,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAiB,aAAa,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface AlbumResource {
|
|
2
|
+
type: "album";
|
|
3
|
+
id: string;
|
|
4
|
+
attributes: {
|
|
5
|
+
name?: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get photo albums
|
|
11
|
+
*/
|
|
12
|
+
export declare function getAlbums(): Promise<AlbumResource[]>;
|
|
13
|
+
//# sourceMappingURL=photos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photos.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/photos.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAMD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAI1D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getClient } from "../client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get photo albums
|
|
4
|
+
*/
|
|
5
|
+
export async function getAlbums() {
|
|
6
|
+
const client = getClient();
|
|
7
|
+
const response = await client.get("/api/frames/{frameId}/albums");
|
|
8
|
+
return response.data;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=photos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photos.js","sourceRoot":"","sources":["../../../src/api/endpoints/photos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAezC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAiB,8BAA8B,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { RewardResource, RewardPointResource } from "../types.js";
|
|
2
|
+
export interface GetRewardsOptions {
|
|
3
|
+
redeemedAtMin?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Get rewards (items that can be redeemed with points)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getRewards(options?: GetRewardsOptions): Promise<RewardResource[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Get reward points for family members
|
|
11
|
+
*/
|
|
12
|
+
export declare function getRewardPoints(): Promise<RewardPointResource[]>;
|
|
13
|
+
export interface CreateRewardOptions {
|
|
14
|
+
name: string;
|
|
15
|
+
pointValue: number;
|
|
16
|
+
description?: string;
|
|
17
|
+
emojiIcon?: string;
|
|
18
|
+
categoryIds?: string[];
|
|
19
|
+
respawnOnRedemption?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a new reward
|
|
23
|
+
*/
|
|
24
|
+
export declare function createReward(options: CreateRewardOptions): Promise<RewardResource>;
|
|
25
|
+
export interface UpdateRewardOptions {
|
|
26
|
+
name?: string;
|
|
27
|
+
pointValue?: number;
|
|
28
|
+
description?: string | null;
|
|
29
|
+
emojiIcon?: string | null;
|
|
30
|
+
categoryIds?: string[];
|
|
31
|
+
respawnOnRedemption?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Update an existing reward
|
|
35
|
+
*/
|
|
36
|
+
export declare function updateReward(rewardId: string, options: UpdateRewardOptions): Promise<RewardResource>;
|
|
37
|
+
/**
|
|
38
|
+
* Delete a reward
|
|
39
|
+
*/
|
|
40
|
+
export declare function deleteReward(rewardId: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Redeem a reward (spend points)
|
|
43
|
+
*/
|
|
44
|
+
export declare function redeemReward(rewardId: string, categoryId?: string): Promise<RewardResource>;
|
|
45
|
+
/**
|
|
46
|
+
* Unredeem a reward (cancel redemption)
|
|
47
|
+
*/
|
|
48
|
+
export declare function unredeemReward(rewardId: string): Promise<RewardResource>;
|
|
49
|
+
//# sourceMappingURL=rewards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewards.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/rewards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EAGd,mBAAmB,EAGpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAS3F;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMtE;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyBxF;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA8BzB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAQzB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAO9E"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { getClient } from "../client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get rewards (items that can be redeemed with points)
|
|
4
|
+
*/
|
|
5
|
+
export async function getRewards(options = {}) {
|
|
6
|
+
const client = getClient();
|
|
7
|
+
const response = await client.get("/api/frames/{frameId}/rewards", {
|
|
8
|
+
redeemed_at_min: options.redeemedAtMin,
|
|
9
|
+
});
|
|
10
|
+
return response.data;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get reward points for family members
|
|
14
|
+
*/
|
|
15
|
+
export async function getRewardPoints() {
|
|
16
|
+
const client = getClient();
|
|
17
|
+
const response = await client.get("/api/frames/{frameId}/reward_points");
|
|
18
|
+
return response.data;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a new reward
|
|
22
|
+
*/
|
|
23
|
+
export async function createReward(options) {
|
|
24
|
+
const client = getClient();
|
|
25
|
+
const request = {
|
|
26
|
+
data: {
|
|
27
|
+
type: "reward",
|
|
28
|
+
attributes: {
|
|
29
|
+
name: options.name,
|
|
30
|
+
point_value: options.pointValue,
|
|
31
|
+
description: options.description ?? null,
|
|
32
|
+
emoji_icon: options.emojiIcon ?? null,
|
|
33
|
+
respawn_on_redemption: options.respawnOnRedemption ?? false,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
if (options.categoryIds && options.categoryIds.length > 0) {
|
|
38
|
+
request.data.relationships = {
|
|
39
|
+
categories: {
|
|
40
|
+
data: options.categoryIds.map((id) => ({ type: "category", id })),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const response = await client.post("/api/frames/{frameId}/rewards", request);
|
|
45
|
+
return response.data;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Update an existing reward
|
|
49
|
+
*/
|
|
50
|
+
export async function updateReward(rewardId, options) {
|
|
51
|
+
const client = getClient();
|
|
52
|
+
const request = {
|
|
53
|
+
data: {
|
|
54
|
+
type: "reward",
|
|
55
|
+
attributes: {},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
if (options.name !== undefined)
|
|
59
|
+
request.data.attributes.name = options.name;
|
|
60
|
+
if (options.pointValue !== undefined)
|
|
61
|
+
request.data.attributes.point_value = options.pointValue;
|
|
62
|
+
if (options.description !== undefined)
|
|
63
|
+
request.data.attributes.description = options.description;
|
|
64
|
+
if (options.emojiIcon !== undefined)
|
|
65
|
+
request.data.attributes.emoji_icon = options.emojiIcon;
|
|
66
|
+
if (options.respawnOnRedemption !== undefined) {
|
|
67
|
+
request.data.attributes.respawn_on_redemption = options.respawnOnRedemption;
|
|
68
|
+
}
|
|
69
|
+
if (options.categoryIds) {
|
|
70
|
+
request.data.relationships = {
|
|
71
|
+
categories: {
|
|
72
|
+
data: options.categoryIds.map((id) => ({ type: "category", id })),
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const response = await client.request(`/api/frames/{frameId}/rewards/${rewardId}`, { method: "PATCH", body: request });
|
|
77
|
+
return response.data;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Delete a reward
|
|
81
|
+
*/
|
|
82
|
+
export async function deleteReward(rewardId) {
|
|
83
|
+
const client = getClient();
|
|
84
|
+
await client.request(`/api/frames/{frameId}/rewards/${rewardId}`, {
|
|
85
|
+
method: "DELETE",
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Redeem a reward (spend points)
|
|
90
|
+
*/
|
|
91
|
+
export async function redeemReward(rewardId, categoryId) {
|
|
92
|
+
const client = getClient();
|
|
93
|
+
const body = categoryId ? { category_id: categoryId } : {};
|
|
94
|
+
const response = await client.post(`/api/frames/{frameId}/rewards/${rewardId}/redeem`, body);
|
|
95
|
+
return response.data;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Unredeem a reward (cancel redemption)
|
|
99
|
+
*/
|
|
100
|
+
export async function unredeemReward(rewardId) {
|
|
101
|
+
const client = getClient();
|
|
102
|
+
const response = await client.post(`/api/frames/{frameId}/rewards/${rewardId}/unredeem`, {});
|
|
103
|
+
return response.data;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=rewards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../../src/api/endpoints/rewards.ts"],"names":[],"mappings":"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"}
|