@panoptic-it-solutions/zoho-projects-client 0.1.3 → 0.2.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 (302) hide show
  1. package/dist/__tests__/fixtures/attachments.d.ts +126 -0
  2. package/dist/__tests__/fixtures/attachments.d.ts.map +1 -0
  3. package/dist/__tests__/fixtures/attachments.js +60 -0
  4. package/dist/__tests__/fixtures/attachments.js.map +1 -0
  5. package/dist/__tests__/fixtures/blueprints.d.ts +114 -0
  6. package/dist/__tests__/fixtures/blueprints.d.ts.map +1 -0
  7. package/dist/__tests__/fixtures/blueprints.js +102 -0
  8. package/dist/__tests__/fixtures/blueprints.js.map +1 -0
  9. package/dist/__tests__/fixtures/comments.d.ts +92 -0
  10. package/dist/__tests__/fixtures/comments.d.ts.map +1 -0
  11. package/dist/__tests__/fixtures/comments.js +42 -0
  12. package/dist/__tests__/fixtures/comments.js.map +1 -0
  13. package/dist/__tests__/fixtures/customviews.d.ts +5 -0
  14. package/dist/__tests__/fixtures/customviews.d.ts.map +1 -0
  15. package/dist/__tests__/fixtures/customviews.js +55 -0
  16. package/dist/__tests__/fixtures/customviews.js.map +1 -0
  17. package/dist/__tests__/fixtures/events.d.ts +133 -0
  18. package/dist/__tests__/fixtures/events.d.ts.map +1 -0
  19. package/dist/__tests__/fixtures/events.js +75 -0
  20. package/dist/__tests__/fixtures/events.js.map +1 -0
  21. package/dist/__tests__/fixtures/forums.d.ts +114 -0
  22. package/dist/__tests__/fixtures/forums.d.ts.map +1 -0
  23. package/dist/__tests__/fixtures/forums.js +53 -0
  24. package/dist/__tests__/fixtures/forums.js.map +1 -0
  25. package/dist/__tests__/fixtures/groups.d.ts +25 -0
  26. package/dist/__tests__/fixtures/groups.d.ts.map +1 -0
  27. package/dist/__tests__/fixtures/groups.js +36 -0
  28. package/dist/__tests__/fixtures/groups.js.map +1 -0
  29. package/dist/__tests__/fixtures/index.d.ts +22 -0
  30. package/dist/__tests__/fixtures/index.d.ts.map +1 -0
  31. package/dist/__tests__/fixtures/index.js +22 -0
  32. package/dist/__tests__/fixtures/index.js.map +1 -0
  33. package/dist/__tests__/fixtures/issues.d.ts +196 -0
  34. package/dist/__tests__/fixtures/issues.d.ts.map +1 -0
  35. package/dist/__tests__/fixtures/issues.js +80 -0
  36. package/dist/__tests__/fixtures/issues.js.map +1 -0
  37. package/dist/__tests__/fixtures/modules.d.ts +6 -0
  38. package/dist/__tests__/fixtures/modules.d.ts.map +1 -0
  39. package/dist/__tests__/fixtures/modules.js +103 -0
  40. package/dist/__tests__/fixtures/modules.js.map +1 -0
  41. package/dist/__tests__/fixtures/phases.d.ts +123 -0
  42. package/dist/__tests__/fixtures/phases.d.ts.map +1 -0
  43. package/dist/__tests__/fixtures/phases.js +68 -0
  44. package/dist/__tests__/fixtures/phases.js.map +1 -0
  45. package/dist/__tests__/fixtures/portals.d.ts +4 -0
  46. package/dist/__tests__/fixtures/portals.d.ts.map +1 -0
  47. package/dist/__tests__/fixtures/portals.js +48 -0
  48. package/dist/__tests__/fixtures/portals.js.map +1 -0
  49. package/dist/__tests__/fixtures/projects.d.ts +298 -0
  50. package/dist/__tests__/fixtures/projects.d.ts.map +1 -0
  51. package/dist/__tests__/fixtures/projects.js +44 -0
  52. package/dist/__tests__/fixtures/projects.js.map +1 -0
  53. package/dist/__tests__/fixtures/tags.d.ts +22 -0
  54. package/dist/__tests__/fixtures/tags.d.ts.map +1 -0
  55. package/dist/__tests__/fixtures/tags.js +33 -0
  56. package/dist/__tests__/fixtures/tags.js.map +1 -0
  57. package/dist/__tests__/fixtures/tasklists.d.ts +107 -0
  58. package/dist/__tests__/fixtures/tasklists.d.ts.map +1 -0
  59. package/dist/__tests__/fixtures/tasklists.js +31 -0
  60. package/dist/__tests__/fixtures/tasklists.js.map +1 -0
  61. package/dist/__tests__/fixtures/tasks.d.ts +209 -0
  62. package/dist/__tests__/fixtures/tasks.d.ts.map +1 -0
  63. package/dist/__tests__/fixtures/tasks.js +69 -0
  64. package/dist/__tests__/fixtures/tasks.js.map +1 -0
  65. package/dist/__tests__/fixtures/timelogs.d.ts +151 -0
  66. package/dist/__tests__/fixtures/timelogs.d.ts.map +1 -0
  67. package/dist/__tests__/fixtures/timelogs.js +79 -0
  68. package/dist/__tests__/fixtures/timelogs.js.map +1 -0
  69. package/dist/__tests__/fixtures/timers.d.ts +5 -0
  70. package/dist/__tests__/fixtures/timers.d.ts.map +1 -0
  71. package/dist/__tests__/fixtures/timers.js +50 -0
  72. package/dist/__tests__/fixtures/timers.js.map +1 -0
  73. package/dist/__tests__/fixtures/users.d.ts +55 -0
  74. package/dist/__tests__/fixtures/users.d.ts.map +1 -0
  75. package/dist/__tests__/fixtures/users.js +47 -0
  76. package/dist/__tests__/fixtures/users.js.map +1 -0
  77. package/dist/__tests__/integration/setup.d.ts +14 -0
  78. package/dist/__tests__/integration/setup.d.ts.map +1 -0
  79. package/dist/__tests__/integration/setup.js +52 -0
  80. package/dist/__tests__/integration/setup.js.map +1 -0
  81. package/dist/__tests__/mocks/handlers.d.ts +34 -0
  82. package/dist/__tests__/mocks/handlers.d.ts.map +1 -0
  83. package/dist/__tests__/mocks/handlers.js +49 -0
  84. package/dist/__tests__/mocks/handlers.js.map +1 -0
  85. package/dist/__tests__/mocks/server.d.ts +2 -0
  86. package/dist/__tests__/mocks/server.d.ts.map +1 -0
  87. package/dist/__tests__/mocks/server.js +7 -0
  88. package/dist/__tests__/mocks/server.js.map +1 -0
  89. package/dist/__tests__/setup.d.ts +2 -0
  90. package/dist/__tests__/setup.d.ts.map +1 -0
  91. package/dist/__tests__/setup.js +18 -0
  92. package/dist/__tests__/setup.js.map +1 -0
  93. package/dist/__tests__/unit/client/attachments.test.d.ts +2 -0
  94. package/dist/__tests__/unit/client/attachments.test.d.ts.map +1 -0
  95. package/dist/__tests__/unit/client/attachments.test.js +55 -0
  96. package/dist/__tests__/unit/client/attachments.test.js.map +1 -0
  97. package/dist/__tests__/unit/client/blueprints.test.d.ts +2 -0
  98. package/dist/__tests__/unit/client/blueprints.test.d.ts.map +1 -0
  99. package/dist/__tests__/unit/client/blueprints.test.js +127 -0
  100. package/dist/__tests__/unit/client/blueprints.test.js.map +1 -0
  101. package/dist/__tests__/unit/client/comments.test.d.ts +2 -0
  102. package/dist/__tests__/unit/client/comments.test.d.ts.map +1 -0
  103. package/dist/__tests__/unit/client/comments.test.js +95 -0
  104. package/dist/__tests__/unit/client/comments.test.js.map +1 -0
  105. package/dist/__tests__/unit/client/customviews.test.d.ts +2 -0
  106. package/dist/__tests__/unit/client/customviews.test.d.ts.map +1 -0
  107. package/dist/__tests__/unit/client/customviews.test.js +112 -0
  108. package/dist/__tests__/unit/client/customviews.test.js.map +1 -0
  109. package/dist/__tests__/unit/client/events.test.d.ts +2 -0
  110. package/dist/__tests__/unit/client/events.test.d.ts.map +1 -0
  111. package/dist/__tests__/unit/client/events.test.js +79 -0
  112. package/dist/__tests__/unit/client/events.test.js.map +1 -0
  113. package/dist/__tests__/unit/client/forums.test.d.ts +2 -0
  114. package/dist/__tests__/unit/client/forums.test.d.ts.map +1 -0
  115. package/dist/__tests__/unit/client/forums.test.js +75 -0
  116. package/dist/__tests__/unit/client/forums.test.js.map +1 -0
  117. package/dist/__tests__/unit/client/groups.test.d.ts +2 -0
  118. package/dist/__tests__/unit/client/groups.test.d.ts.map +1 -0
  119. package/dist/__tests__/unit/client/groups.test.js +74 -0
  120. package/dist/__tests__/unit/client/groups.test.js.map +1 -0
  121. package/dist/__tests__/unit/client/issues.test.d.ts +2 -0
  122. package/dist/__tests__/unit/client/issues.test.d.ts.map +1 -0
  123. package/dist/__tests__/unit/client/issues.test.js +75 -0
  124. package/dist/__tests__/unit/client/issues.test.js.map +1 -0
  125. package/dist/__tests__/unit/client/modules.test.d.ts +2 -0
  126. package/dist/__tests__/unit/client/modules.test.d.ts.map +1 -0
  127. package/dist/__tests__/unit/client/modules.test.js +92 -0
  128. package/dist/__tests__/unit/client/modules.test.js.map +1 -0
  129. package/dist/__tests__/unit/client/phases.test.d.ts +2 -0
  130. package/dist/__tests__/unit/client/phases.test.d.ts.map +1 -0
  131. package/dist/__tests__/unit/client/phases.test.js +79 -0
  132. package/dist/__tests__/unit/client/phases.test.js.map +1 -0
  133. package/dist/__tests__/unit/client/portals.test.d.ts +2 -0
  134. package/dist/__tests__/unit/client/portals.test.d.ts.map +1 -0
  135. package/dist/__tests__/unit/client/portals.test.js +54 -0
  136. package/dist/__tests__/unit/client/portals.test.js.map +1 -0
  137. package/dist/__tests__/unit/client/projects.test.d.ts +2 -0
  138. package/dist/__tests__/unit/client/projects.test.d.ts.map +1 -0
  139. package/dist/__tests__/unit/client/projects.test.js +171 -0
  140. package/dist/__tests__/unit/client/projects.test.js.map +1 -0
  141. package/dist/__tests__/unit/client/tags.test.d.ts +2 -0
  142. package/dist/__tests__/unit/client/tags.test.d.ts.map +1 -0
  143. package/dist/__tests__/unit/client/tags.test.js +99 -0
  144. package/dist/__tests__/unit/client/tags.test.js.map +1 -0
  145. package/dist/__tests__/unit/client/tasklists.test.d.ts +2 -0
  146. package/dist/__tests__/unit/client/tasklists.test.d.ts.map +1 -0
  147. package/dist/__tests__/unit/client/tasklists.test.js +75 -0
  148. package/dist/__tests__/unit/client/tasklists.test.js.map +1 -0
  149. package/dist/__tests__/unit/client/tasks.test.d.ts +2 -0
  150. package/dist/__tests__/unit/client/tasks.test.d.ts.map +1 -0
  151. package/dist/__tests__/unit/client/tasks.test.js +157 -0
  152. package/dist/__tests__/unit/client/tasks.test.js.map +1 -0
  153. package/dist/__tests__/unit/client/timers.test.d.ts +2 -0
  154. package/dist/__tests__/unit/client/timers.test.d.ts.map +1 -0
  155. package/dist/__tests__/unit/client/timers.test.js +122 -0
  156. package/dist/__tests__/unit/client/timers.test.js.map +1 -0
  157. package/dist/__tests__/unit/client/users.test.d.ts +2 -0
  158. package/dist/__tests__/unit/client/users.test.d.ts.map +1 -0
  159. package/dist/__tests__/unit/client/users.test.js +89 -0
  160. package/dist/__tests__/unit/client/users.test.js.map +1 -0
  161. package/dist/cli/init.d.ts +3 -0
  162. package/dist/cli/init.d.ts.map +1 -0
  163. package/dist/cli/init.js +130 -0
  164. package/dist/cli/init.js.map +1 -0
  165. package/dist/client.d.ts +2613 -1
  166. package/dist/client.d.ts.map +1 -1
  167. package/dist/client.js +1623 -1
  168. package/dist/client.js.map +1 -1
  169. package/dist/types/attachments.d.ts +1545 -0
  170. package/dist/types/attachments.d.ts.map +1 -0
  171. package/dist/types/attachments.js +78 -0
  172. package/dist/types/attachments.js.map +1 -0
  173. package/dist/types/blueprints.d.ts +5070 -0
  174. package/dist/types/blueprints.d.ts.map +1 -0
  175. package/dist/types/blueprints.js +111 -0
  176. package/dist/types/blueprints.js.map +1 -0
  177. package/dist/types/clients.d.ts +384 -0
  178. package/dist/types/clients.d.ts.map +1 -0
  179. package/dist/types/clients.js +77 -0
  180. package/dist/types/clients.js.map +1 -0
  181. package/dist/types/comments.d.ts +1111 -0
  182. package/dist/types/comments.d.ts.map +1 -0
  183. package/dist/types/comments.js +73 -0
  184. package/dist/types/comments.js.map +1 -0
  185. package/dist/types/contacts.d.ts +444 -0
  186. package/dist/types/contacts.d.ts.map +1 -0
  187. package/dist/types/contacts.js +86 -0
  188. package/dist/types/contacts.js.map +1 -0
  189. package/dist/types/customviews.d.ts +1593 -0
  190. package/dist/types/customviews.d.ts.map +1 -0
  191. package/dist/types/customviews.js +117 -0
  192. package/dist/types/customviews.js.map +1 -0
  193. package/dist/types/dashboards.d.ts +1675 -0
  194. package/dist/types/dashboards.d.ts.map +1 -0
  195. package/dist/types/dashboards.js +77 -0
  196. package/dist/types/dashboards.js.map +1 -0
  197. package/dist/types/documents.d.ts +2322 -0
  198. package/dist/types/documents.d.ts.map +1 -0
  199. package/dist/types/documents.js +121 -0
  200. package/dist/types/documents.js.map +1 -0
  201. package/dist/types/events.d.ts +1747 -0
  202. package/dist/types/events.d.ts.map +1 -0
  203. package/dist/types/events.js +122 -0
  204. package/dist/types/events.js.map +1 -0
  205. package/dist/types/followers.d.ts +198 -0
  206. package/dist/types/followers.d.ts.map +1 -0
  207. package/dist/types/followers.js +44 -0
  208. package/dist/types/followers.js.map +1 -0
  209. package/dist/types/forums.d.ts +1443 -0
  210. package/dist/types/forums.d.ts.map +1 -0
  211. package/dist/types/forums.js +89 -0
  212. package/dist/types/forums.js.map +1 -0
  213. package/dist/types/groups.d.ts +237 -0
  214. package/dist/types/groups.d.ts.map +1 -0
  215. package/dist/types/groups.js +52 -0
  216. package/dist/types/groups.js.map +1 -0
  217. package/dist/types/index.d.ts +31 -4
  218. package/dist/types/index.d.ts.map +1 -1
  219. package/dist/types/index.js +58 -4
  220. package/dist/types/index.js.map +1 -1
  221. package/dist/types/issues.d.ts +2600 -0
  222. package/dist/types/issues.d.ts.map +1 -0
  223. package/dist/types/issues.js +147 -0
  224. package/dist/types/issues.js.map +1 -0
  225. package/dist/types/leaves.d.ts +435 -0
  226. package/dist/types/leaves.d.ts.map +1 -0
  227. package/dist/types/leaves.js +92 -0
  228. package/dist/types/leaves.js.map +1 -0
  229. package/dist/types/modules.d.ts +469 -0
  230. package/dist/types/modules.d.ts.map +1 -0
  231. package/dist/types/modules.js +91 -0
  232. package/dist/types/modules.js.map +1 -0
  233. package/dist/types/phases.d.ts +1564 -0
  234. package/dist/types/phases.d.ts.map +1 -0
  235. package/dist/types/phases.js +98 -0
  236. package/dist/types/phases.js.map +1 -0
  237. package/dist/types/portals.d.ts +1050 -0
  238. package/dist/types/portals.d.ts.map +1 -0
  239. package/dist/types/portals.js +58 -0
  240. package/dist/types/portals.js.map +1 -0
  241. package/dist/types/profiles.d.ts +243 -0
  242. package/dist/types/profiles.d.ts.map +1 -0
  243. package/dist/types/profiles.js +59 -0
  244. package/dist/types/profiles.js.map +1 -0
  245. package/dist/types/projects.d.ts +128 -0
  246. package/dist/types/projects.d.ts.map +1 -1
  247. package/dist/types/projects.js +44 -0
  248. package/dist/types/projects.js.map +1 -1
  249. package/dist/types/reports.d.ts +2010 -0
  250. package/dist/types/reports.d.ts.map +1 -0
  251. package/dist/types/reports.js +110 -0
  252. package/dist/types/reports.js.map +1 -0
  253. package/dist/types/roles.d.ts +243 -0
  254. package/dist/types/roles.d.ts.map +1 -0
  255. package/dist/types/roles.js +59 -0
  256. package/dist/types/roles.js.map +1 -0
  257. package/dist/types/search.d.ts +1091 -0
  258. package/dist/types/search.d.ts.map +1 -0
  259. package/dist/types/search.js +83 -0
  260. package/dist/types/search.js.map +1 -0
  261. package/dist/types/tags.d.ts +198 -0
  262. package/dist/types/tags.d.ts.map +1 -0
  263. package/dist/types/tags.js +49 -0
  264. package/dist/types/tags.js.map +1 -0
  265. package/dist/types/tasklists.d.ts +1317 -0
  266. package/dist/types/tasklists.d.ts.map +1 -0
  267. package/dist/types/tasklists.js +78 -0
  268. package/dist/types/tasklists.js.map +1 -0
  269. package/dist/types/tasks.d.ts +182 -0
  270. package/dist/types/tasks.d.ts.map +1 -1
  271. package/dist/types/tasks.js +52 -0
  272. package/dist/types/tasks.js.map +1 -1
  273. package/dist/types/teams.d.ts +504 -0
  274. package/dist/types/teams.d.ts.map +1 -0
  275. package/dist/types/teams.js +75 -0
  276. package/dist/types/teams.js.map +1 -0
  277. package/dist/types/timelogs.d.ts +245 -0
  278. package/dist/types/timelogs.d.ts.map +1 -1
  279. package/dist/types/timelogs.js +53 -0
  280. package/dist/types/timelogs.js.map +1 -1
  281. package/dist/types/timers.d.ts +1334 -0
  282. package/dist/types/timers.d.ts.map +1 -0
  283. package/dist/types/timers.js +108 -0
  284. package/dist/types/timers.js.map +1 -0
  285. package/dist/types/trash.d.ts +1447 -0
  286. package/dist/types/trash.d.ts.map +1 -0
  287. package/dist/types/trash.js +77 -0
  288. package/dist/types/trash.js.map +1 -0
  289. package/dist/types/users.d.ts +100 -0
  290. package/dist/types/users.d.ts.map +1 -1
  291. package/dist/types/users.js +56 -0
  292. package/dist/types/users.js.map +1 -1
  293. package/dist/types/widgets.d.ts +1083 -0
  294. package/dist/types/widgets.d.ts.map +1 -0
  295. package/dist/types/widgets.js +87 -0
  296. package/dist/types/widgets.js.map +1 -0
  297. package/package.json +15 -3
  298. package/templates/CLAUDE.md +66 -0
  299. package/templates/commands/zoho-auth.md +195 -0
  300. package/templates/commands/zoho-examples.md +375 -0
  301. package/templates/commands/zoho-projects.md +183 -0
  302. package/templates/types/zoho-projects-api.d.ts +364 -0
@@ -0,0 +1,209 @@
1
+ import type { Task } from "../../types/index.js";
2
+ /**
3
+ * Create a mock task fixture
4
+ */
5
+ export declare function createTaskFixture(overrides?: Partial<Task>): Task;
6
+ /**
7
+ * Create multiple task fixtures
8
+ */
9
+ export declare function createTaskListFixture(count?: number): Task[];
10
+ /**
11
+ * Create a task API response
12
+ */
13
+ export declare function createTaskListResponse(tasks: Task[], hasMore?: boolean): {
14
+ tasks: import("zod").objectOutputType<{
15
+ id: import("zod").ZodNumber;
16
+ id_string: import("zod").ZodString;
17
+ key: import("zod").ZodOptional<import("zod").ZodString>;
18
+ name: import("zod").ZodString;
19
+ description: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
20
+ status: import("zod").ZodOptional<import("zod").ZodObject<{
21
+ id: import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>;
22
+ name: import("zod").ZodString;
23
+ type: import("zod").ZodOptional<import("zod").ZodString>;
24
+ color_code: import("zod").ZodOptional<import("zod").ZodString>;
25
+ }, "strip", import("zod").ZodTypeAny, {
26
+ id: string | number;
27
+ name: string;
28
+ type?: string | undefined;
29
+ color_code?: string | undefined;
30
+ }, {
31
+ id: string | number;
32
+ name: string;
33
+ type?: string | undefined;
34
+ color_code?: string | undefined;
35
+ }>>;
36
+ completed: import("zod").ZodOptional<import("zod").ZodBoolean>;
37
+ percent_complete: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>>;
38
+ priority: import("zod").ZodOptional<import("zod").ZodString>;
39
+ start_date: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
40
+ start_date_long: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
41
+ end_date: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
42
+ end_date_long: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
43
+ created_time: import("zod").ZodOptional<import("zod").ZodString>;
44
+ created_time_long: import("zod").ZodOptional<import("zod").ZodNumber>;
45
+ created_time_format: import("zod").ZodOptional<import("zod").ZodString>;
46
+ last_updated_time: import("zod").ZodOptional<import("zod").ZodString>;
47
+ last_updated_time_long: import("zod").ZodOptional<import("zod").ZodNumber>;
48
+ duration: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>>>;
49
+ duration_type: import("zod").ZodOptional<import("zod").ZodString>;
50
+ work: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
51
+ work_type: import("zod").ZodOptional<import("zod").ZodString>;
52
+ created_by: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>>;
53
+ created_person: import("zod").ZodOptional<import("zod").ZodString>;
54
+ details: import("zod").ZodOptional<import("zod").ZodObject<{
55
+ owners: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
56
+ id: import("zod").ZodString;
57
+ name: import("zod").ZodString;
58
+ email: import("zod").ZodOptional<import("zod").ZodString>;
59
+ zpuid: import("zod").ZodOptional<import("zod").ZodString>;
60
+ }, "strip", import("zod").ZodTypeAny, {
61
+ id: string;
62
+ name: string;
63
+ email?: string | undefined;
64
+ zpuid?: string | undefined;
65
+ }, {
66
+ id: string;
67
+ name: string;
68
+ email?: string | undefined;
69
+ zpuid?: string | undefined;
70
+ }>, "many">>;
71
+ }, "strip", import("zod").ZodTypeAny, {
72
+ owners?: {
73
+ id: string;
74
+ name: string;
75
+ email?: string | undefined;
76
+ zpuid?: string | undefined;
77
+ }[] | undefined;
78
+ }, {
79
+ owners?: {
80
+ id: string;
81
+ name: string;
82
+ email?: string | undefined;
83
+ zpuid?: string | undefined;
84
+ }[] | undefined;
85
+ }>>;
86
+ tasklist: import("zod").ZodOptional<import("zod").ZodObject<{
87
+ id: import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>;
88
+ id_string: import("zod").ZodOptional<import("zod").ZodString>;
89
+ name: import("zod").ZodString;
90
+ }, "strip", import("zod").ZodTypeAny, {
91
+ id: string | number;
92
+ name: string;
93
+ id_string?: string | undefined;
94
+ }, {
95
+ id: string | number;
96
+ name: string;
97
+ id_string?: string | undefined;
98
+ }>>;
99
+ milestone_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>>>;
100
+ parent_task_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>>>;
101
+ root_task_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodString]>>>;
102
+ isparent: import("zod").ZodOptional<import("zod").ZodBoolean>;
103
+ subtasks: import("zod").ZodOptional<import("zod").ZodBoolean>;
104
+ depth: import("zod").ZodOptional<import("zod").ZodNumber>;
105
+ order_sequence: import("zod").ZodOptional<import("zod").ZodNumber>;
106
+ billingtype: import("zod").ZodOptional<import("zod").ZodString>;
107
+ log_hours: import("zod").ZodOptional<import("zod").ZodObject<{
108
+ billable_hours: import("zod").ZodOptional<import("zod").ZodString>;
109
+ non_billable_hours: import("zod").ZodOptional<import("zod").ZodString>;
110
+ }, "strip", import("zod").ZodTypeAny, {
111
+ billable_hours?: string | undefined;
112
+ non_billable_hours?: string | undefined;
113
+ }, {
114
+ billable_hours?: string | undefined;
115
+ non_billable_hours?: string | undefined;
116
+ }>>;
117
+ project: import("zod").ZodOptional<import("zod").ZodObject<{
118
+ id: import("zod").ZodNumber;
119
+ id_string: import("zod").ZodOptional<import("zod").ZodString>;
120
+ name: import("zod").ZodString;
121
+ }, "strip", import("zod").ZodTypeAny, {
122
+ id: number;
123
+ name: string;
124
+ id_string?: string | undefined;
125
+ }, {
126
+ id: number;
127
+ name: string;
128
+ id_string?: string | undefined;
129
+ }>>;
130
+ link: import("zod").ZodOptional<import("zod").ZodObject<{
131
+ self: import("zod").ZodOptional<import("zod").ZodObject<{
132
+ url: import("zod").ZodString;
133
+ }, "strip", import("zod").ZodTypeAny, {
134
+ url: string;
135
+ }, {
136
+ url: string;
137
+ }>>;
138
+ timesheet: import("zod").ZodOptional<import("zod").ZodObject<{
139
+ url: import("zod").ZodString;
140
+ }, "strip", import("zod").ZodTypeAny, {
141
+ url: string;
142
+ }, {
143
+ url: string;
144
+ }>>;
145
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
146
+ self: import("zod").ZodOptional<import("zod").ZodObject<{
147
+ url: import("zod").ZodString;
148
+ }, "strip", import("zod").ZodTypeAny, {
149
+ url: string;
150
+ }, {
151
+ url: string;
152
+ }>>;
153
+ timesheet: import("zod").ZodOptional<import("zod").ZodObject<{
154
+ url: import("zod").ZodString;
155
+ }, "strip", import("zod").ZodTypeAny, {
156
+ url: string;
157
+ }, {
158
+ url: string;
159
+ }>>;
160
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
161
+ self: import("zod").ZodOptional<import("zod").ZodObject<{
162
+ url: import("zod").ZodString;
163
+ }, "strip", import("zod").ZodTypeAny, {
164
+ url: string;
165
+ }, {
166
+ url: string;
167
+ }>>;
168
+ timesheet: import("zod").ZodOptional<import("zod").ZodObject<{
169
+ url: import("zod").ZodString;
170
+ }, "strip", import("zod").ZodTypeAny, {
171
+ url: string;
172
+ }, {
173
+ url: string;
174
+ }>>;
175
+ }, import("zod").ZodTypeAny, "passthrough">>>;
176
+ tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
177
+ id: import("zod").ZodNumber;
178
+ name: import("zod").ZodString;
179
+ color_class: import("zod").ZodOptional<import("zod").ZodString>;
180
+ }, "strip", import("zod").ZodTypeAny, {
181
+ id: number;
182
+ name: string;
183
+ color_class?: string | undefined;
184
+ }, {
185
+ id: number;
186
+ name: string;
187
+ color_class?: string | undefined;
188
+ }>, "many">>;
189
+ custom_fields: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
190
+ label_name: import("zod").ZodString;
191
+ value: import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean, import("zod").ZodNull]>;
192
+ }, "strip", import("zod").ZodTypeAny, {
193
+ value: string | number | boolean | null;
194
+ label_name: string;
195
+ }, {
196
+ value: string | number | boolean | null;
197
+ label_name: string;
198
+ }>, "many">>;
199
+ dependency: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
200
+ task_followers: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
201
+ }, import("zod").ZodTypeAny, "passthrough">[];
202
+ page_info: {
203
+ page: number;
204
+ per_page: number;
205
+ has_more_page: boolean;
206
+ total_count: number;
207
+ };
208
+ };
209
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/tasks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,OAAO,CAAC,IAAI,CAAM,GAAG,IAAI,CAwCrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,GAAE,OAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7E"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Task fixtures for testing
3
+ */
4
+ import { faker } from "@faker-js/faker";
5
+ /**
6
+ * Create a mock task fixture
7
+ */
8
+ export function createTaskFixture(overrides = {}) {
9
+ const id = faker.number.int({ min: 100000, max: 999999 });
10
+ return {
11
+ id,
12
+ id_string: id.toString(),
13
+ key: `TASK-${id}`,
14
+ name: faker.lorem.sentence(4),
15
+ description: faker.lorem.paragraph(),
16
+ status: {
17
+ id: 1,
18
+ name: "Open",
19
+ type: "open",
20
+ color_code: "#4caf50",
21
+ },
22
+ completed: false,
23
+ percent_complete: faker.number.int({ min: 0, max: 100 }),
24
+ priority: faker.helpers.arrayElement(["None", "Low", "Medium", "High"]),
25
+ start_date: faker.date.past().toLocaleDateString("en-US", {
26
+ month: "2-digit",
27
+ day: "2-digit",
28
+ year: "numeric",
29
+ }),
30
+ start_date_long: faker.date.past().getTime(),
31
+ end_date: faker.date.future().toLocaleDateString("en-US", {
32
+ month: "2-digit",
33
+ day: "2-digit",
34
+ year: "numeric",
35
+ }),
36
+ end_date_long: faker.date.future().getTime(),
37
+ created_time: faker.date.past().toISOString(),
38
+ created_time_long: faker.date.past().getTime(),
39
+ created_by: faker.string.numeric(10),
40
+ created_person: faker.person.fullName(),
41
+ project: {
42
+ id: faker.number.int({ min: 100000, max: 999999 }),
43
+ id_string: faker.string.numeric(10),
44
+ name: faker.company.name() + " Project",
45
+ },
46
+ ...overrides,
47
+ };
48
+ }
49
+ /**
50
+ * Create multiple task fixtures
51
+ */
52
+ export function createTaskListFixture(count = 5) {
53
+ return Array.from({ length: count }, () => createTaskFixture());
54
+ }
55
+ /**
56
+ * Create a task API response
57
+ */
58
+ export function createTaskListResponse(tasks, hasMore = false) {
59
+ return {
60
+ tasks,
61
+ page_info: {
62
+ page: 1,
63
+ per_page: 100,
64
+ has_more_page: hasMore,
65
+ total_count: tasks.length,
66
+ },
67
+ };
68
+ }
69
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/tasks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAA2B,EAAE;IAC7D,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO;QACL,EAAE;QACF,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;QACxB,GAAG,EAAE,QAAQ,EAAE,EAAE;QACjB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7B,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE;QACpC,MAAM,EAAE;YACN,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,SAAS;SACtB;QACD,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACxD,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACxD,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;SAChB,CAAC;QACF,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;QAC5C,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACxD,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;SAChB,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;QAC5C,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAC7C,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;QAC9C,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvC,OAAO,EAAE;YACP,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAClD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,UAAU;SACxC;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,CAAC;IACrD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,UAAmB,KAAK;IAC5E,OAAO;QACL,KAAK;QACL,SAAS,EAAE;YACT,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,GAAG;YACb,aAAa,EAAE,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,MAAM;SAC1B;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,151 @@
1
+ import type { TimeLog } from "../../types/index.js";
2
+ /**
3
+ * Create a mock timelog fixture
4
+ */
5
+ export declare function createTimeLogFixture(overrides?: Partial<TimeLog>): TimeLog;
6
+ /**
7
+ * Create multiple timelog fixtures
8
+ */
9
+ export declare function createTimeLogListFixture(count?: number): TimeLog[];
10
+ /**
11
+ * Create a timelog API response (nested date structure)
12
+ */
13
+ export declare function createTimeLogListResponse(timelogs: TimeLog[], hasMore?: boolean): {
14
+ timelogs: {
15
+ date: {
16
+ date: string;
17
+ display_format: string;
18
+ tasklogs: import("zod").objectOutputType<{
19
+ id: import("zod").ZodNumber;
20
+ id_string: import("zod").ZodString;
21
+ hours: import("zod").ZodNumber;
22
+ minutes: import("zod").ZodNumber;
23
+ hours_display: import("zod").ZodOptional<import("zod").ZodString>;
24
+ total_minutes: import("zod").ZodOptional<import("zod").ZodNumber>;
25
+ log_date: import("zod").ZodOptional<import("zod").ZodString>;
26
+ log_date_long: import("zod").ZodOptional<import("zod").ZodNumber>;
27
+ log_date_format: import("zod").ZodOptional<import("zod").ZodString>;
28
+ date: import("zod").ZodOptional<import("zod").ZodString>;
29
+ notes: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
30
+ name: import("zod").ZodOptional<import("zod").ZodString>;
31
+ owner_id: import("zod").ZodNumber;
32
+ owner_name: import("zod").ZodString;
33
+ owner_zpuid: import("zod").ZodOptional<import("zod").ZodString>;
34
+ bill_status: import("zod").ZodOptional<import("zod").ZodEnum<["Billable", "Non Billable"]>>;
35
+ cost: import("zod").ZodOptional<import("zod").ZodString>;
36
+ approval_status: import("zod").ZodOptional<import("zod").ZodEnum<["Approved", "Pending", "Rejected"]>>;
37
+ approver_name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
38
+ approver_zpuid: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
39
+ created_date: import("zod").ZodOptional<import("zod").ZodString>;
40
+ created_time_long: import("zod").ZodOptional<import("zod").ZodNumber>;
41
+ created_time_format: import("zod").ZodOptional<import("zod").ZodString>;
42
+ last_modified_date: import("zod").ZodOptional<import("zod").ZodString>;
43
+ last_modified_time_long: import("zod").ZodOptional<import("zod").ZodNumber>;
44
+ last_modified_time_format: import("zod").ZodOptional<import("zod").ZodString>;
45
+ start_time: import("zod").ZodOptional<import("zod").ZodString>;
46
+ end_time: import("zod").ZodOptional<import("zod").ZodString>;
47
+ task: import("zod").ZodOptional<import("zod").ZodObject<{
48
+ id: import("zod").ZodNumber;
49
+ id_string: import("zod").ZodOptional<import("zod").ZodString>;
50
+ name: import("zod").ZodString;
51
+ is_sub_task: import("zod").ZodOptional<import("zod").ZodBoolean>;
52
+ sub_task_level: import("zod").ZodOptional<import("zod").ZodNumber>;
53
+ is_parent: import("zod").ZodOptional<import("zod").ZodBoolean>;
54
+ }, "strip", import("zod").ZodTypeAny, {
55
+ id: number;
56
+ name: string;
57
+ id_string?: string | undefined;
58
+ is_sub_task?: boolean | undefined;
59
+ sub_task_level?: number | undefined;
60
+ is_parent?: boolean | undefined;
61
+ }, {
62
+ id: number;
63
+ name: string;
64
+ id_string?: string | undefined;
65
+ is_sub_task?: boolean | undefined;
66
+ sub_task_level?: number | undefined;
67
+ is_parent?: boolean | undefined;
68
+ }>>;
69
+ task_list: import("zod").ZodOptional<import("zod").ZodObject<{
70
+ id: import("zod").ZodNumber;
71
+ name: import("zod").ZodString;
72
+ }, "strip", import("zod").ZodTypeAny, {
73
+ id: number;
74
+ name: string;
75
+ }, {
76
+ id: number;
77
+ name: string;
78
+ }>>;
79
+ project: import("zod").ZodOptional<import("zod").ZodObject<{
80
+ id: import("zod").ZodNumber;
81
+ id_string: import("zod").ZodOptional<import("zod").ZodString>;
82
+ name: import("zod").ZodString;
83
+ }, "strip", import("zod").ZodTypeAny, {
84
+ id: number;
85
+ name: string;
86
+ id_string?: string | undefined;
87
+ }, {
88
+ id: number;
89
+ name: string;
90
+ id_string?: string | undefined;
91
+ }>>;
92
+ bug: import("zod").ZodOptional<import("zod").ZodObject<{
93
+ id: import("zod").ZodNumber;
94
+ id_string: import("zod").ZodOptional<import("zod").ZodString>;
95
+ title: import("zod").ZodString;
96
+ }, "strip", import("zod").ZodTypeAny, {
97
+ id: number;
98
+ title: string;
99
+ id_string?: string | undefined;
100
+ }, {
101
+ id: number;
102
+ title: string;
103
+ id_string?: string | undefined;
104
+ }>>;
105
+ invoice_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
106
+ link: import("zod").ZodOptional<import("zod").ZodObject<{
107
+ self: import("zod").ZodOptional<import("zod").ZodObject<{
108
+ url: import("zod").ZodString;
109
+ }, "strip", import("zod").ZodTypeAny, {
110
+ url: string;
111
+ }, {
112
+ url: string;
113
+ }>>;
114
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
115
+ self: import("zod").ZodOptional<import("zod").ZodObject<{
116
+ url: import("zod").ZodString;
117
+ }, "strip", import("zod").ZodTypeAny, {
118
+ url: string;
119
+ }, {
120
+ url: string;
121
+ }>>;
122
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
123
+ self: import("zod").ZodOptional<import("zod").ZodObject<{
124
+ url: import("zod").ZodString;
125
+ }, "strip", import("zod").ZodTypeAny, {
126
+ url: string;
127
+ }, {
128
+ url: string;
129
+ }>>;
130
+ }, import("zod").ZodTypeAny, "passthrough">>>;
131
+ custom_fields: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
132
+ label_name: import("zod").ZodString;
133
+ value: import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean, import("zod").ZodNull]>;
134
+ }, "strip", import("zod").ZodTypeAny, {
135
+ value: string | number | boolean | null;
136
+ label_name: string;
137
+ }, {
138
+ value: string | number | boolean | null;
139
+ label_name: string;
140
+ }>, "many">>;
141
+ }, import("zod").ZodTypeAny, "passthrough">[];
142
+ }[];
143
+ };
144
+ page_info: {
145
+ page: number;
146
+ per_page: number;
147
+ has_more_page: boolean;
148
+ total_count: number;
149
+ };
150
+ };
151
+ //# sourceMappingURL=timelogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelogs.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/timelogs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAmC9E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,OAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BzB"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * TimeLog fixtures for testing
3
+ */
4
+ import { faker } from "@faker-js/faker";
5
+ /**
6
+ * Create a mock timelog fixture
7
+ */
8
+ export function createTimeLogFixture(overrides = {}) {
9
+ const id = faker.number.int({ min: 100000, max: 999999 });
10
+ const hours = faker.number.int({ min: 0, max: 8 });
11
+ const minutes = faker.number.int({ min: 0, max: 59 });
12
+ return {
13
+ id,
14
+ id_string: id.toString(),
15
+ hours,
16
+ minutes,
17
+ hours_display: `${hours}:${minutes.toString().padStart(2, "0")}`,
18
+ total_minutes: hours * 60 + minutes,
19
+ log_date: faker.date.recent().toLocaleDateString("en-US", {
20
+ month: "2-digit",
21
+ day: "2-digit",
22
+ year: "numeric",
23
+ }),
24
+ log_date_long: faker.date.recent().getTime(),
25
+ owner_id: faker.number.int({ min: 100000, max: 999999 }),
26
+ owner_name: faker.person.fullName(),
27
+ owner_zpuid: faker.string.numeric(15),
28
+ bill_status: faker.helpers.arrayElement(["Billable", "Non Billable"]),
29
+ approval_status: faker.helpers.arrayElement(["Approved", "Pending", "Rejected"]),
30
+ notes: faker.lorem.sentence(),
31
+ task: {
32
+ id: faker.number.int({ min: 100000, max: 999999 }),
33
+ id_string: faker.string.numeric(10),
34
+ name: faker.lorem.sentence(3),
35
+ },
36
+ project: {
37
+ id: faker.number.int({ min: 100000, max: 999999 }),
38
+ id_string: faker.string.numeric(10),
39
+ name: faker.company.name() + " Project",
40
+ },
41
+ ...overrides,
42
+ };
43
+ }
44
+ /**
45
+ * Create multiple timelog fixtures
46
+ */
47
+ export function createTimeLogListFixture(count = 5) {
48
+ return Array.from({ length: count }, () => createTimeLogFixture());
49
+ }
50
+ /**
51
+ * Create a timelog API response (nested date structure)
52
+ */
53
+ export function createTimeLogListResponse(timelogs, hasMore = false) {
54
+ // Group by date
55
+ const dateGroups = new Map();
56
+ for (const log of timelogs) {
57
+ const date = log.log_date || "01-01-2025";
58
+ if (!dateGroups.has(date)) {
59
+ dateGroups.set(date, []);
60
+ }
61
+ dateGroups.get(date).push(log);
62
+ }
63
+ return {
64
+ timelogs: {
65
+ date: Array.from(dateGroups.entries()).map(([date, logs]) => ({
66
+ date,
67
+ display_format: date,
68
+ tasklogs: logs,
69
+ })),
70
+ },
71
+ page_info: {
72
+ page: 1,
73
+ per_page: 100,
74
+ has_more_page: hasMore,
75
+ total_count: timelogs.length,
76
+ },
77
+ };
78
+ }
79
+ //# sourceMappingURL=timelogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelogs.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/timelogs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Timer } from "../../types/index.js";
2
+ export declare const mockTimer: Timer;
3
+ export declare const mockPausedTimer: Timer;
4
+ export declare const mockTimers: Timer[];
5
+ //# sourceMappingURL=timers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/timers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,KAuBvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAuB7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,EAAiC,CAAC"}
@@ -0,0 +1,50 @@
1
+ export const mockTimer = {
2
+ id: "timer_001",
3
+ id_string: "timer_001",
4
+ status: "running",
5
+ entity_id: "task_123",
6
+ entity_type: "task",
7
+ log_id: "log_001",
8
+ start_time: "2024-01-15T09:00:00Z",
9
+ start_time_long: 1705312800000,
10
+ elapsed_time: 3600000,
11
+ elapsed_time_string: "1:00:00",
12
+ project_id: "proj_001",
13
+ project: {
14
+ id: "proj_001",
15
+ name: "Test Project",
16
+ },
17
+ owner: {
18
+ id: "user_001",
19
+ name: "John Doe",
20
+ email: "john@example.com",
21
+ },
22
+ notes: "Working on feature implementation",
23
+ bill_status: "billable",
24
+ };
25
+ export const mockPausedTimer = {
26
+ id: "timer_002",
27
+ id_string: "timer_002",
28
+ status: "paused",
29
+ entity_id: "task_456",
30
+ entity_type: "task",
31
+ log_id: "log_002",
32
+ start_time: "2024-01-15T10:00:00Z",
33
+ start_time_long: 1705316400000,
34
+ elapsed_time: 1800000,
35
+ elapsed_time_string: "0:30:00",
36
+ project_id: "proj_001",
37
+ project: {
38
+ id: "proj_001",
39
+ name: "Test Project",
40
+ },
41
+ owner: {
42
+ id: "user_001",
43
+ name: "John Doe",
44
+ email: "john@example.com",
45
+ },
46
+ notes: "Paused for meeting",
47
+ bill_status: "billable",
48
+ };
49
+ export const mockTimers = [mockTimer, mockPausedTimer];
50
+ //# sourceMappingURL=timers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/timers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,sBAAsB;IAClC,eAAe,EAAE,aAAa;IAC9B,YAAY,EAAE,OAAO;IACrB,mBAAmB,EAAE,SAAS;IAC9B,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE;QACP,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;KACrB;IACD,KAAK,EAAE;QACL,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,kBAAkB;KAC1B;IACD,KAAK,EAAE,mCAAmC;IAC1C,WAAW,EAAE,UAAU;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,sBAAsB;IAClC,eAAe,EAAE,aAAa;IAC9B,YAAY,EAAE,OAAO;IACrB,mBAAmB,EAAE,SAAS;IAC9B,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE;QACP,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;KACrB;IACD,KAAK,EAAE;QACL,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,kBAAkB;KAC1B;IACD,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,UAAU;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAY,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { User } from "../../types/index.js";
2
+ /**
3
+ * Create a mock user fixture
4
+ */
5
+ export declare function createUserFixture(overrides?: Partial<User>): User;
6
+ /**
7
+ * Create multiple user fixtures
8
+ */
9
+ export declare function createUserListFixture(count?: number): User[];
10
+ /**
11
+ * Create a user API response
12
+ */
13
+ export declare function createUserListResponse(users: User[], hasMore?: boolean): {
14
+ users: import("zod").objectOutputType<{
15
+ id: import("zod").ZodString;
16
+ zpuid: import("zod").ZodOptional<import("zod").ZodString>;
17
+ name: import("zod").ZodString;
18
+ email: import("zod").ZodString;
19
+ active: import("zod").ZodOptional<import("zod").ZodBoolean>;
20
+ role: import("zod").ZodOptional<import("zod").ZodString>;
21
+ role_name: import("zod").ZodOptional<import("zod").ZodString>;
22
+ role_id: import("zod").ZodOptional<import("zod").ZodString>;
23
+ profile_id: import("zod").ZodOptional<import("zod").ZodString>;
24
+ profile_name: import("zod").ZodOptional<import("zod").ZodString>;
25
+ profile_type: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>;
26
+ rate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>>;
27
+ cost_per_hour: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>>;
28
+ user_budget: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>>;
29
+ revenue_budget: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>>;
30
+ budget_threshold: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>>;
31
+ invoice: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
32
+ currency_code: import("zod").ZodOptional<import("zod").ZodString>;
33
+ client_company_name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
34
+ client_company_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
35
+ associated_projects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
36
+ id: import("zod").ZodString;
37
+ name: import("zod").ZodString;
38
+ }, "strip", import("zod").ZodTypeAny, {
39
+ id: string;
40
+ name: string;
41
+ }, {
42
+ id: string;
43
+ name: string;
44
+ }>, "many">>;
45
+ added_time: import("zod").ZodOptional<import("zod").ZodString>;
46
+ added_time_long: import("zod").ZodOptional<import("zod").ZodNumber>;
47
+ }, import("zod").ZodTypeAny, "passthrough">[];
48
+ page_info: {
49
+ page: number;
50
+ per_page: number;
51
+ has_more_page: boolean;
52
+ total_count: number;
53
+ };
54
+ };
55
+ //# sourceMappingURL=users.d.ts.map