@37signals/basecamp 0.12.0 → 0.13.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 (278) hide show
  1. package/README.md +112 -16
  2. package/dist/.build-complete +0 -0
  3. package/dist/client.d.ts +53 -11
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +132 -150
  6. package/dist/client.js.map +1 -1
  7. package/dist/download.d.ts +7 -0
  8. package/dist/download.d.ts.map +1 -1
  9. package/dist/download.js +82 -22
  10. package/dist/download.js.map +1 -1
  11. package/dist/errors.d.ts +18 -0
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +127 -14
  14. package/dist/errors.js.map +1 -1
  15. package/dist/generated/metadata.d.ts.map +1 -1
  16. package/dist/generated/metadata.js +280 -141
  17. package/dist/generated/metadata.js.map +1 -1
  18. package/dist/generated/metadata.ts +280 -141
  19. package/dist/generated/openapi-stripped.json +6435 -4283
  20. package/dist/generated/path-mapping.d.ts.map +1 -1
  21. package/dist/generated/path-mapping.js +27 -16
  22. package/dist/generated/path-mapping.js.map +1 -1
  23. package/dist/generated/path-mapping.ts +27 -16
  24. package/dist/generated/schema.d.ts +4283 -2457
  25. package/dist/generated/services/bookmarks.d.ts +1 -1
  26. package/dist/generated/services/bookmarks.d.ts.map +1 -1
  27. package/dist/generated/services/bookmarks.ts +1 -1
  28. package/dist/generated/services/boosts.d.ts +10 -0
  29. package/dist/generated/services/boosts.d.ts.map +1 -1
  30. package/dist/generated/services/boosts.js +8 -0
  31. package/dist/generated/services/boosts.js.map +1 -1
  32. package/dist/generated/services/boosts.ts +12 -0
  33. package/dist/generated/services/campfires.d.ts +54 -40
  34. package/dist/generated/services/campfires.d.ts.map +1 -1
  35. package/dist/generated/services/campfires.js +82 -65
  36. package/dist/generated/services/campfires.js.map +1 -1
  37. package/dist/generated/services/campfires.ts +107 -85
  38. package/dist/generated/services/cards.d.ts +5 -0
  39. package/dist/generated/services/cards.d.ts.map +1 -1
  40. package/dist/generated/services/cards.js +4 -0
  41. package/dist/generated/services/cards.js.map +1 -1
  42. package/dist/generated/services/cards.ts +6 -0
  43. package/dist/generated/services/checkins.d.ts +14 -0
  44. package/dist/generated/services/checkins.d.ts.map +1 -1
  45. package/dist/generated/services/checkins.js +14 -1
  46. package/dist/generated/services/checkins.js.map +1 -1
  47. package/dist/generated/services/checkins.ts +20 -0
  48. package/dist/generated/services/client-approvals.d.ts +6 -3
  49. package/dist/generated/services/client-approvals.d.ts.map +1 -1
  50. package/dist/generated/services/client-approvals.js +8 -5
  51. package/dist/generated/services/client-approvals.js.map +1 -1
  52. package/dist/generated/services/client-approvals.ts +10 -5
  53. package/dist/generated/services/client-correspondences.d.ts +6 -3
  54. package/dist/generated/services/client-correspondences.d.ts.map +1 -1
  55. package/dist/generated/services/client-correspondences.js +8 -5
  56. package/dist/generated/services/client-correspondences.js.map +1 -1
  57. package/dist/generated/services/client-correspondences.ts +10 -5
  58. package/dist/generated/services/client-replies.d.ts +11 -4
  59. package/dist/generated/services/client-replies.d.ts.map +1 -1
  60. package/dist/generated/services/client-replies.js +16 -8
  61. package/dist/generated/services/client-replies.js.map +1 -1
  62. package/dist/generated/services/client-replies.ts +18 -8
  63. package/dist/generated/services/cloud-files.d.ts +92 -0
  64. package/dist/generated/services/cloud-files.d.ts.map +1 -0
  65. package/dist/generated/services/cloud-files.js +121 -0
  66. package/dist/generated/services/cloud-files.js.map +1 -0
  67. package/dist/generated/services/cloud-files.ts +188 -0
  68. package/dist/generated/services/comments.d.ts +5 -0
  69. package/dist/generated/services/comments.d.ts.map +1 -1
  70. package/dist/generated/services/comments.js +4 -0
  71. package/dist/generated/services/comments.js.map +1 -1
  72. package/dist/generated/services/comments.ts +6 -0
  73. package/dist/generated/services/documents.d.ts +12 -7
  74. package/dist/generated/services/documents.d.ts.map +1 -1
  75. package/dist/generated/services/documents.js +10 -6
  76. package/dist/generated/services/documents.js.map +1 -1
  77. package/dist/generated/services/documents.ts +14 -8
  78. package/dist/generated/services/drafts.d.ts +1 -1
  79. package/dist/generated/services/drafts.d.ts.map +1 -1
  80. package/dist/generated/services/drafts.ts +1 -1
  81. package/dist/generated/services/events.d.ts +5 -0
  82. package/dist/generated/services/events.d.ts.map +1 -1
  83. package/dist/generated/services/events.js +4 -0
  84. package/dist/generated/services/events.js.map +1 -1
  85. package/dist/generated/services/events.ts +6 -0
  86. package/dist/generated/services/everything.d.ts +14 -14
  87. package/dist/generated/services/everything.d.ts.map +1 -1
  88. package/dist/generated/services/everything.ts +14 -14
  89. package/dist/generated/services/folders.d.ts +96 -0
  90. package/dist/generated/services/folders.d.ts.map +1 -0
  91. package/dist/generated/services/folders.js +140 -0
  92. package/dist/generated/services/folders.js.map +1 -0
  93. package/dist/generated/services/folders.ts +201 -0
  94. package/dist/generated/services/forwards.d.ts +7 -20
  95. package/dist/generated/services/forwards.d.ts.map +1 -1
  96. package/dist/generated/services/forwards.js +6 -35
  97. package/dist/generated/services/forwards.js.map +1 -1
  98. package/dist/generated/services/forwards.ts +10 -48
  99. package/dist/generated/services/gauges.d.ts +7 -0
  100. package/dist/generated/services/gauges.d.ts.map +1 -1
  101. package/dist/generated/services/gauges.js +5 -1
  102. package/dist/generated/services/gauges.js.map +1 -1
  103. package/dist/generated/services/gauges.ts +9 -1
  104. package/dist/generated/services/google-documents.d.ts +98 -0
  105. package/dist/generated/services/google-documents.d.ts.map +1 -0
  106. package/dist/generated/services/google-documents.js +123 -0
  107. package/dist/generated/services/google-documents.js.map +1 -0
  108. package/dist/generated/services/google-documents.ts +196 -0
  109. package/dist/generated/services/index.d.ts +7 -4
  110. package/dist/generated/services/index.d.ts.map +1 -1
  111. package/dist/generated/services/index.js +7 -4
  112. package/dist/generated/services/index.js.map +1 -1
  113. package/dist/generated/services/index.ts +7 -4
  114. package/dist/generated/services/messages.d.ts +2 -0
  115. package/dist/generated/services/messages.d.ts.map +1 -1
  116. package/dist/generated/services/messages.js +1 -1
  117. package/dist/generated/services/messages.js.map +1 -1
  118. package/dist/generated/services/messages.ts +3 -1
  119. package/dist/generated/services/my-notes.d.ts +1 -1
  120. package/dist/generated/services/my-notes.js +1 -1
  121. package/dist/generated/services/my-notes.ts +1 -1
  122. package/dist/generated/services/my-notifications.d.ts +4 -2
  123. package/dist/generated/services/my-notifications.d.ts.map +1 -1
  124. package/dist/generated/services/my-notifications.js.map +1 -1
  125. package/dist/generated/services/my-notifications.ts +4 -2
  126. package/dist/generated/services/people.d.ts +11 -1
  127. package/dist/generated/services/people.d.ts.map +1 -1
  128. package/dist/generated/services/people.js +13 -2
  129. package/dist/generated/services/people.js.map +1 -1
  130. package/dist/generated/services/people.ts +15 -1
  131. package/dist/generated/services/projects.d.ts +26 -0
  132. package/dist/generated/services/projects.d.ts.map +1 -1
  133. package/dist/generated/services/projects.js +49 -1
  134. package/dist/generated/services/projects.js.map +1 -1
  135. package/dist/generated/services/projects.ts +61 -1
  136. package/dist/generated/services/recordings.d.ts +2 -12
  137. package/dist/generated/services/recordings.d.ts.map +1 -1
  138. package/dist/generated/services/recordings.js +1 -26
  139. package/dist/generated/services/recordings.js.map +1 -1
  140. package/dist/generated/services/recordings.ts +3 -31
  141. package/dist/generated/services/reports.d.ts +8 -12
  142. package/dist/generated/services/reports.d.ts.map +1 -1
  143. package/dist/generated/services/reports.js +11 -5
  144. package/dist/generated/services/reports.js.map +1 -1
  145. package/dist/generated/services/reports.ts +13 -14
  146. package/dist/generated/services/schedules.d.ts +94 -15
  147. package/dist/generated/services/schedules.d.ts.map +1 -1
  148. package/dist/generated/services/schedules.js +19 -8
  149. package/dist/generated/services/schedules.js.map +1 -1
  150. package/dist/generated/services/schedules.ts +107 -17
  151. package/dist/generated/services/search.d.ts +2 -0
  152. package/dist/generated/services/search.d.ts.map +1 -1
  153. package/dist/generated/services/search.js +1 -1
  154. package/dist/generated/services/search.js.map +1 -1
  155. package/dist/generated/services/search.ts +3 -1
  156. package/dist/generated/services/templates.d.ts +2 -0
  157. package/dist/generated/services/templates.d.ts.map +1 -1
  158. package/dist/generated/services/templates.js +1 -1
  159. package/dist/generated/services/templates.js.map +1 -1
  160. package/dist/generated/services/templates.ts +3 -1
  161. package/dist/generated/services/timeline.d.ts +2 -0
  162. package/dist/generated/services/timeline.d.ts.map +1 -1
  163. package/dist/generated/services/timeline.js +1 -0
  164. package/dist/generated/services/timeline.js.map +1 -1
  165. package/dist/generated/services/timeline.ts +3 -0
  166. package/dist/generated/services/timesheets.d.ts +16 -0
  167. package/dist/generated/services/timesheets.d.ts.map +1 -1
  168. package/dist/generated/services/timesheets.js +26 -2
  169. package/dist/generated/services/timesheets.js.map +1 -1
  170. package/dist/generated/services/timesheets.ts +35 -2
  171. package/dist/generated/services/todolist-groups.d.ts +11 -6
  172. package/dist/generated/services/todolist-groups.d.ts.map +1 -1
  173. package/dist/generated/services/todolist-groups.js +7 -3
  174. package/dist/generated/services/todolist-groups.js.map +1 -1
  175. package/dist/generated/services/todolist-groups.ts +13 -7
  176. package/dist/generated/services/todolists.d.ts +15 -13
  177. package/dist/generated/services/todolists.d.ts.map +1 -1
  178. package/dist/generated/services/todolists.js +11 -8
  179. package/dist/generated/services/todolists.js.map +1 -1
  180. package/dist/generated/services/todolists.ts +19 -14
  181. package/dist/generated/services/todos.d.ts +2 -12
  182. package/dist/generated/services/todos.d.ts.map +1 -1
  183. package/dist/generated/services/todos.js +1 -25
  184. package/dist/generated/services/todos.js.map +1 -1
  185. package/dist/generated/services/todos.ts +3 -30
  186. package/dist/generated/services/uploads.d.ts +5 -0
  187. package/dist/generated/services/uploads.d.ts.map +1 -1
  188. package/dist/generated/services/uploads.js +4 -0
  189. package/dist/generated/services/uploads.js.map +1 -1
  190. package/dist/generated/services/uploads.ts +6 -0
  191. package/dist/generated/services/vaults.d.ts +5 -0
  192. package/dist/generated/services/vaults.d.ts.map +1 -1
  193. package/dist/generated/services/vaults.js +4 -0
  194. package/dist/generated/services/vaults.js.map +1 -1
  195. package/dist/generated/services/vaults.ts +6 -0
  196. package/dist/index.d.ts +15 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +19 -8
  199. package/dist/index.js.map +1 -1
  200. package/dist/pagination-utils.d.ts +46 -0
  201. package/dist/pagination-utils.d.ts.map +1 -1
  202. package/dist/pagination-utils.js +85 -2
  203. package/dist/pagination-utils.js.map +1 -1
  204. package/dist/pagination.d.ts +11 -0
  205. package/dist/pagination.d.ts.map +1 -1
  206. package/dist/pagination.js.map +1 -1
  207. package/dist/retry.d.ts +110 -0
  208. package/dist/retry.d.ts.map +1 -0
  209. package/dist/retry.js +253 -0
  210. package/dist/retry.js.map +1 -0
  211. package/dist/services/base.d.ts.map +1 -1
  212. package/dist/services/base.js +59 -5
  213. package/dist/services/base.js.map +1 -1
  214. package/dist/services/cards-extensions.d.ts +26 -21
  215. package/dist/services/cards-extensions.d.ts.map +1 -1
  216. package/dist/services/cards-extensions.js +28 -31
  217. package/dist/services/cards-extensions.js.map +1 -1
  218. package/dist/services/documents-extensions.d.ts +122 -0
  219. package/dist/services/documents-extensions.d.ts.map +1 -0
  220. package/dist/services/documents-extensions.js +125 -0
  221. package/dist/services/documents-extensions.js.map +1 -0
  222. package/dist/services/merge-safe.d.ts +167 -0
  223. package/dist/services/merge-safe.d.ts.map +1 -0
  224. package/dist/services/merge-safe.js +217 -0
  225. package/dist/services/merge-safe.js.map +1 -0
  226. package/dist/services/schedules-extensions.d.ts +266 -0
  227. package/dist/services/schedules-extensions.d.ts.map +1 -0
  228. package/dist/services/schedules-extensions.js +268 -0
  229. package/dist/services/schedules-extensions.js.map +1 -0
  230. package/dist/services/todolists-extensions.d.ts +110 -0
  231. package/dist/services/todolists-extensions.d.ts.map +1 -0
  232. package/dist/services/todolists-extensions.js +262 -0
  233. package/dist/services/todolists-extensions.js.map +1 -0
  234. package/dist/services/todos-extensions.d.ts +12 -1
  235. package/dist/services/todos-extensions.d.ts.map +1 -1
  236. package/dist/services/todos-extensions.js +27 -8
  237. package/dist/services/todos-extensions.js.map +1 -1
  238. package/package.json +5 -4
  239. package/src/generated/metadata.ts +280 -141
  240. package/src/generated/openapi-stripped.json +6435 -4283
  241. package/src/generated/path-mapping.ts +27 -16
  242. package/src/generated/schema.d.ts +4283 -2457
  243. package/src/generated/services/bookmarks.ts +1 -1
  244. package/src/generated/services/boosts.ts +12 -0
  245. package/src/generated/services/campfires.ts +107 -85
  246. package/src/generated/services/cards.ts +6 -0
  247. package/src/generated/services/checkins.ts +20 -0
  248. package/src/generated/services/client-approvals.ts +10 -5
  249. package/src/generated/services/client-correspondences.ts +10 -5
  250. package/src/generated/services/client-replies.ts +18 -8
  251. package/src/generated/services/cloud-files.ts +188 -0
  252. package/src/generated/services/comments.ts +6 -0
  253. package/src/generated/services/documents.ts +14 -8
  254. package/src/generated/services/drafts.ts +1 -1
  255. package/src/generated/services/events.ts +6 -0
  256. package/src/generated/services/everything.ts +14 -14
  257. package/src/generated/services/folders.ts +201 -0
  258. package/src/generated/services/forwards.ts +10 -48
  259. package/src/generated/services/gauges.ts +9 -1
  260. package/src/generated/services/google-documents.ts +196 -0
  261. package/src/generated/services/index.ts +7 -4
  262. package/src/generated/services/messages.ts +3 -1
  263. package/src/generated/services/my-notes.ts +1 -1
  264. package/src/generated/services/my-notifications.ts +4 -2
  265. package/src/generated/services/people.ts +15 -1
  266. package/src/generated/services/projects.ts +61 -1
  267. package/src/generated/services/recordings.ts +3 -31
  268. package/src/generated/services/reports.ts +13 -14
  269. package/src/generated/services/schedules.ts +107 -17
  270. package/src/generated/services/search.ts +3 -1
  271. package/src/generated/services/templates.ts +3 -1
  272. package/src/generated/services/timeline.ts +3 -0
  273. package/src/generated/services/timesheets.ts +35 -2
  274. package/src/generated/services/todolist-groups.ts +13 -7
  275. package/src/generated/services/todolists.ts +19 -14
  276. package/src/generated/services/todos.ts +3 -30
  277. package/src/generated/services/uploads.ts +6 -0
  278. package/src/generated/services/vaults.ts +6 -0
package/dist/download.js CHANGED
@@ -1,5 +1,17 @@
1
1
  import { BasecampError, Errors, errorFromResponse } from "./errors.js";
2
2
  import { safeInvoke } from "./hooks.js";
3
+ import { TerminalRetryError, executeWithRetry, } from "./retry.js";
4
+ /**
5
+ * The fixed hop-1 retry policy (SPEC §14): three total attempts when retry is
6
+ * enabled, retrying network errors plus {429, 502, 503, 504} — never 500 —
7
+ * with exponential backoff, honoring Retry-After on 429. DownloadURL is
8
+ * deliberately absent from behavior-model.json, so the policy is passed to
9
+ * the retry primitive directly rather than looked up by operation. There is
10
+ * no public knob for the attempt count.
11
+ */
12
+ const DOWNLOAD_MAX_ATTEMPTS = 3;
13
+ const DOWNLOAD_RETRY_ON = [429, 502, 503, 504];
14
+ const DOWNLOAD_RETRY_BASE_DELAY_MS = 1000;
3
15
  /**
4
16
  * Extracts a filename from the last path segment of a URL.
5
17
  * Falls back to "download" if the URL is unparseable or has no path segments.
@@ -42,7 +54,7 @@ function parseContentLength(headers) {
42
54
  * other signed-download URL that routes through the API.
43
55
  */
44
56
  export function createDownloadURL(deps) {
45
- const { authStrategy, userAgent, baseUrl, hooks, requestTimeoutMs } = deps;
57
+ const { authStrategy, userAgent, baseUrl, hooks, requestTimeoutMs, enableRetry, retryBaseDelayMs } = deps;
46
58
  return async (rawURL) => {
47
59
  // Validation
48
60
  if (!rawURL) {
@@ -72,24 +84,69 @@ export function createDownloadURL(deps) {
72
84
  // URL rewriting: replace origin with baseUrl origin, preserve path+query
73
85
  const base = new URL(baseUrl);
74
86
  const rewrittenURL = `${base.origin}${parsed.pathname}${parsed.search}${parsed.hash}`;
75
- // Hop 1: Authenticated API request (capture redirect)
87
+ // Hop 1: Authenticated API request (capture redirect), under the fixed
88
+ // hop-1 retry policy. Attempt 1's auth runs here, outside the loop, so
89
+ // a failing strategy surfaces raw without request hooks — matching the
90
+ // client path, where the middleware authenticates before the loop.
76
91
  const headers = new Headers({
77
92
  "User-Agent": userAgent,
78
93
  });
79
94
  await authStrategy.authenticate(headers);
80
- const requestInfo = {
95
+ const downloadRetryConfig = {
96
+ maxAttempts: enableRetry ? DOWNLOAD_MAX_ATTEMPTS : 1,
97
+ baseDelayMs: retryBaseDelayMs ?? DOWNLOAD_RETRY_BASE_DELAY_MS,
98
+ backoff: "exponential",
99
+ retryOn: DOWNLOAD_RETRY_ON,
100
+ };
101
+ const requestInfoFor = (attempt) => ({
81
102
  method: "GET",
82
103
  url: rewrittenURL,
83
- attempt: 1,
104
+ attempt,
105
+ });
106
+ // The download path has no lifecycle middleware, so the emit seams fire
107
+ // the hooks directly. executeWithRetry finalizes only the attempts it
108
+ // abandons; the terminal outcome is finalized after the loop below.
109
+ let currentAttempt = 1;
110
+ let attemptStart = performance.now();
111
+ const emit = {
112
+ begin: (attempt) => {
113
+ currentAttempt = attempt;
114
+ attemptStart = performance.now();
115
+ safeInvoke(hooks, "onRequestStart", requestInfoFor(attempt));
116
+ },
117
+ finalize: (outcome) => {
118
+ const durationMs = Math.round(performance.now() - attemptStart);
119
+ safeInvoke(hooks, "onRequestEnd", requestInfoFor(currentAttempt), {
120
+ statusCode: outcome.statusCode,
121
+ durationMs,
122
+ fromCache: false,
123
+ ...(outcome.error ? { error: outcome.error } : {}),
124
+ });
125
+ },
126
+ retrying: (failedAttempt, error, delayMs) => {
127
+ safeInvoke(hooks, "onRetry", requestInfoFor(failedAttempt), failedAttempt + 1, error, delayMs);
128
+ },
84
129
  };
85
- safeInvoke(hooks, "onRequestStart", requestInfo);
86
- const reqStart = performance.now();
87
- let response;
88
- try {
130
+ const makeAttempt = async (attempt) => {
131
+ if (attempt > 1) {
132
+ // Refresh auth (the token may have rotated since the last attempt),
133
+ // so EVERY hop-1 attempt goes out authenticated. A throwing refresh
134
+ // is terminal: the marker carries it raw past retry classification.
135
+ try {
136
+ await authStrategy.authenticate(headers);
137
+ }
138
+ catch (error) {
139
+ throw new TerminalRetryError(error);
140
+ }
141
+ }
142
+ // Per-attempt timeout: the controller aborts only its own fetch, and
143
+ // an abort-shaped rejection is terminal in the loop — a request that
144
+ // consumed its whole time budget is a slowness shape a retry tends to
145
+ // repeat, not a transient blip.
89
146
  const controller = new AbortController();
90
147
  const timeoutId = setTimeout(() => controller.abort(), requestTimeoutMs);
91
148
  try {
92
- response = await fetch(rewrittenURL, {
149
+ return await fetch(rewrittenURL, {
93
150
  method: "GET",
94
151
  headers,
95
152
  redirect: "manual",
@@ -99,24 +156,27 @@ export function createDownloadURL(deps) {
99
156
  finally {
100
157
  clearTimeout(timeoutId);
101
158
  }
159
+ };
160
+ let response;
161
+ try {
162
+ response = await executeWithRetry(makeAttempt, downloadRetryConfig, emit);
102
163
  }
103
164
  catch (err) {
104
- const durationMs = Math.round(performance.now() - reqStart);
165
+ if (err instanceof TerminalRetryError) {
166
+ // A retry's auth refresh failed: finalize the live attempt, then
167
+ // surface the strategy's own error raw — auth faults are neither
168
+ // transport failures nor API errors.
169
+ const reason = err.reason;
170
+ const error = reason instanceof Error ? reason : new Error(String(reason));
171
+ emit.finalize({ statusCode: 0, error });
172
+ throw reason;
173
+ }
105
174
  const error = err instanceof Error ? err : new Error(String(err));
106
- safeInvoke(hooks, "onRequestEnd", requestInfo, {
107
- statusCode: 0,
108
- durationMs,
109
- fromCache: false,
110
- error,
111
- });
175
+ emit.finalize({ statusCode: 0, error });
112
176
  throw Errors.network(error.message, error);
113
177
  }
114
- const durationMs = Math.round(performance.now() - reqStart);
115
- safeInvoke(hooks, "onRequestEnd", requestInfo, {
116
- statusCode: response.status,
117
- durationMs,
118
- fromCache: false,
119
- });
178
+ // Terminal attempt's end — the loop deliberately leaves it to us.
179
+ emit.finalize({ statusCode: response.status });
120
180
  // Dispatch on response status
121
181
  const isRedirect = [301, 302, 303, 307, 308].includes(response.status);
122
182
  if (isRedirect) {
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -49,6 +49,8 @@ export interface BasecampErrorOptions {
49
49
  retryAfter?: number;
50
50
  /** Request ID from the server for debugging */
51
51
  requestId?: string;
52
+ /** Field-keyed validation messages from a 400/422 body, wrapped ({"errors": {field: [messages]}}) or bare ({field: [messages]}) */
53
+ fieldErrors?: Record<string, string[]>;
52
54
  }
53
55
  /**
54
56
  * Structured error class for Basecamp API errors.
@@ -69,6 +71,15 @@ export declare class BasecampError extends Error {
69
71
  readonly retryAfter?: number;
70
72
  /** Request ID from the server for debugging */
71
73
  readonly requestId?: string;
74
+ /**
75
+ * Field-keyed validation messages from a 422 body of the form
76
+ * `{"errors": {"field": ["msg", ...]}}` — the Rails RecordInvalid rendering —
77
+ * or the same map with no wrapper at all (`{"field": ["msg", ...]}`), which
78
+ * some controllers emit. Undefined for every other error shape. The flattened
79
+ * form is also folded into `message`; this slot preserves the raw, untruncated
80
+ * per-field messages.
81
+ */
82
+ readonly fieldErrors?: Record<string, string[]>;
72
83
  /** Original error that caused this error (ES2022+) */
73
84
  readonly cause?: Error;
74
85
  constructor(code: ErrorCode, message: string, options?: BasecampErrorOptions);
@@ -140,6 +151,13 @@ export declare const Errors: {
140
151
  * Useful for mapping API responses to typed errors.
141
152
  */
142
153
  export declare function errorFromResponse(response: Response, requestId?: string): Promise<BasecampError>;
154
+ /**
155
+ * Creates a BasecampError from an HTTP response whose body has already been
156
+ * read and parsed (e.g. by openapi-fetch, which consumes the error body before
157
+ * the service layer sees the response — re-reading it would throw and lose the
158
+ * server's message).
159
+ */
160
+ export declare function errorFromParsedBody(response: Response, body: unknown, requestId?: string): BasecampError;
143
161
  /**
144
162
  * Type guard to check if an error is a BasecampError.
145
163
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiC,GAAG,MAAM,CAGjG;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,WAAW,GACX,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAEzB,iDAAiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,sDAAsD;IACtD,SAAiB,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEnB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAqB5E;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAYlC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;kBACW,MAAM,UAAU,KAAK,KAAG,aAAa;IAOnD;;OAEG;uBACgB,MAAM,UAAU,KAAK,KAAG,aAAa;IAOxD;;OAEG;yBACkB,MAAM,OAAO,MAAM,GAAG,MAAM,KAAG,aAAa;IAOjE;;OAEG;6BACsB,MAAM,UAAU,KAAK,KAAG,aAAa;IAS9D;;OAEG;0BACmB,MAAM,SAAS,MAAM,KAAG,aAAa;IAM3D;;OAEG;0BACmB,MAAM,WAAW,MAAM,EAAE,KAAG,aAAa;IAO/D;;OAEG;uBACgB,MAAM,UAAU,KAAK,KAAG,aAAa;IAOxD;;OAEG;qBACc,MAAM,SAAS,MAAM,KAAG,aAAa;IAGtD;;OAEG;wBAEQ,MAAM,eACF,MAAM,YACT,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC,KACjF,aAAa;CAKjB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAmDxB;AA2BD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CAEnF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiC,GAAG,MAAM,CAGjG;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,WAAW,GACX,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mIAAmI;IACnI,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAkBD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAEzB,iDAAiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhD,sDAAsD;IACtD,SAAiB,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEnB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAsB5E;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAalC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;kBACW,MAAM,UAAU,KAAK,KAAG,aAAa;IAOnD;;OAEG;uBACgB,MAAM,UAAU,KAAK,KAAG,aAAa;IAOxD;;OAEG;yBACkB,MAAM,OAAO,MAAM,GAAG,MAAM,KAAG,aAAa;IAOjE;;OAEG;6BACsB,MAAM,UAAU,KAAK,KAAG,aAAa;IAS9D;;OAEG;0BACmB,MAAM,SAAS,MAAM,KAAG,aAAa;IAM3D;;OAEG;0BACmB,MAAM,WAAW,MAAM,EAAE,KAAG,aAAa;IAO/D;;OAEG;uBACgB,MAAM,UAAU,KAAK,KAAG,aAAa;IAOxD;;OAEG;qBACc,MAAM,SAAS,MAAM,KAAG,aAAa;IAGtD;;OAEG;wBAEQ,MAAM,eACF,MAAM,YACT,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC,KACjF,aAAa;CAKjB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CASxB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa,CA+Df;AAkGD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CAEnF"}
package/dist/errors.js CHANGED
@@ -71,6 +71,15 @@ export class BasecampError extends Error {
71
71
  retryAfter;
72
72
  /** Request ID from the server for debugging */
73
73
  requestId;
74
+ /**
75
+ * Field-keyed validation messages from a 422 body of the form
76
+ * `{"errors": {"field": ["msg", ...]}}` — the Rails RecordInvalid rendering —
77
+ * or the same map with no wrapper at all (`{"field": ["msg", ...]}`), which
78
+ * some controllers emit. Undefined for every other error shape. The flattened
79
+ * form is also folded into `message`; this slot preserves the raw, untruncated
80
+ * per-field messages.
81
+ */
82
+ fieldErrors;
74
83
  constructor(code, message, options) {
75
84
  super(message);
76
85
  this.name = "BasecampError";
@@ -80,6 +89,7 @@ export class BasecampError extends Error {
80
89
  this.retryable = options?.retryable ?? false;
81
90
  this.retryAfter = options?.retryAfter;
82
91
  this.requestId = options?.requestId;
92
+ this.fieldErrors = options?.fieldErrors;
83
93
  // Set cause if provided (ES2022+)
84
94
  if (options?.cause) {
85
95
  this.cause = options.cause;
@@ -109,6 +119,7 @@ export class BasecampError extends Error {
109
119
  retryable: this.retryable,
110
120
  retryAfter: this.retryAfter,
111
121
  requestId: this.requestId,
122
+ fieldErrors: this.fieldErrors,
112
123
  };
113
124
  }
114
125
  }
@@ -199,26 +210,55 @@ export const Errors = {
199
210
  * Useful for mapping API responses to typed errors.
200
211
  */
201
212
  export async function errorFromResponse(response, requestId) {
213
+ let body;
214
+ try {
215
+ body = await response.json();
216
+ }
217
+ catch {
218
+ // Body is not JSON or empty, use status text
219
+ body = undefined;
220
+ }
221
+ return errorFromParsedBody(response, body, requestId);
222
+ }
223
+ /**
224
+ * Creates a BasecampError from an HTTP response whose body has already been
225
+ * read and parsed (e.g. by openapi-fetch, which consumes the error body before
226
+ * the service layer sees the response — re-reading it would throw and lose the
227
+ * server's message).
228
+ */
229
+ export function errorFromParsedBody(response, body, requestId) {
202
230
  const httpStatus = response.status;
203
231
  const retryAfter = parseRetryAfter(response.headers.get("Retry-After"));
204
- // Try to extract error message from response body
232
+ // Try to extract error message from the parsed body
205
233
  let message = response.statusText || "Request failed";
234
+ let serverMessage;
206
235
  let hint;
207
- try {
208
- const body = await response.json();
209
- if (typeof body === "object" && body !== null) {
210
- if ("error" in body && typeof body.error === "string") {
211
- // Truncate error messages to prevent information leakage and unbounded memory growth
212
- message = truncateErrorMessage(body.error);
213
- }
214
- if ("error_description" in body && typeof body.error_description === "string") {
215
- hint = truncateErrorMessage(body.error_description);
236
+ let fieldErrors;
237
+ if (typeof body === "object" && body !== null) {
238
+ if ("error" in body && typeof body.error === "string") {
239
+ // Truncate error messages to prevent information leakage and unbounded memory growth
240
+ serverMessage = truncateErrorMessage(body.error);
241
+ message = serverMessage;
242
+ }
243
+ else if ("message" in body && typeof body.message === "string") {
244
+ // SPEC §6 step 4: "message" is the fallback for APIs that use it
245
+ // instead of "error".
246
+ serverMessage = truncateErrorMessage(body.message);
247
+ message = serverMessage;
248
+ }
249
+ if ("error_description" in body && typeof body.error_description === "string") {
250
+ hint = truncateErrorMessage(body.error_description);
251
+ }
252
+ if (httpStatus === 400 || httpStatus === 422) {
253
+ fieldErrors = parseFieldErrors(body);
254
+ if (fieldErrors) {
255
+ const flat = flattenFieldErrors(fieldErrors);
256
+ // Appended in parentheses after a top-level message, standing alone
257
+ // otherwise; truncated after flattening so the tail is capped too.
258
+ message = truncateErrorMessage(serverMessage ? `${serverMessage} (${flat})` : flat);
216
259
  }
217
260
  }
218
261
  }
219
- catch {
220
- // Body is not JSON or empty, use status text
221
- }
222
262
  switch (httpStatus) {
223
263
  case 401:
224
264
  return new BasecampError("auth_required", message, { httpStatus, hint, requestId });
@@ -236,7 +276,7 @@ export async function errorFromResponse(response, requestId) {
236
276
  });
237
277
  case 400:
238
278
  case 422:
239
- return new BasecampError("validation", message, { httpStatus, hint, requestId });
279
+ return new BasecampError("validation", message, { httpStatus, hint, requestId, fieldErrors });
240
280
  default:
241
281
  // 5xx errors are retryable
242
282
  const retryable = httpStatus >= 500 && httpStatus < 600;
@@ -248,6 +288,79 @@ export async function errorFromResponse(response, requestId) {
248
288
  });
249
289
  }
250
290
  }
291
+ /**
292
+ * Extracts the field-keyed validation errors map from a parsed error body —
293
+ * the Rails RecordInvalid rendering `{"errors": {"field": ["msg", ...]}}`.
294
+ * Entries whose value is not an array are skipped, non-string elements are
295
+ * dropped, and a map with no usable entries is treated as absent (undefined).
296
+ *
297
+ * A body with no `errors` key falls through to `parseBareFieldErrors` for the
298
+ * unwrapped rendering.
299
+ */
300
+ function parseFieldErrors(body) {
301
+ const errors = body.errors;
302
+ if (typeof errors !== "object" || errors === null || Array.isArray(errors)) {
303
+ return parseBareFieldErrors(body);
304
+ }
305
+ // Null prototype so an untrusted field name like "__proto__" becomes an
306
+ // ordinary own property instead of invoking the legacy prototype setter
307
+ // (which would both drop the entry and mutate the map's prototype).
308
+ const fieldErrors = Object.create(null);
309
+ let found = false;
310
+ for (const [field, value] of Object.entries(errors)) {
311
+ if (!Array.isArray(value))
312
+ continue;
313
+ const messages = value.filter((m) => typeof m === "string");
314
+ if (messages.length === 0)
315
+ continue;
316
+ fieldErrors[field] = messages;
317
+ found = true;
318
+ }
319
+ return found ? fieldErrors : undefined;
320
+ }
321
+ /**
322
+ * Extracts an unwrapped field map — the `render json: @webhook.errors`
323
+ * rendering, where the whole body is `{"field": ["msg", ...]}`. The gate is
324
+ * all-or-nothing by design (SPEC §6 step 2): with no `errors` key to declare
325
+ * intent, only shape distinguishes a field map from any other JSON object, so
326
+ * a single non-conforming member means this is not one. Returns undefined
327
+ * unless every member is a non-empty array of non-empty strings.
328
+ */
329
+ function parseBareFieldErrors(body) {
330
+ if (Array.isArray(body))
331
+ return undefined;
332
+ // Only "errors" is structurally reserved (it belongs to step 1). "error" and
333
+ // "message" are not excluded by name: a flat body carries them as strings,
334
+ // which the shape gate below already rejects.
335
+ if ("errors" in body)
336
+ return undefined;
337
+ const entries = Object.entries(body);
338
+ if (entries.length === 0)
339
+ return undefined;
340
+ // Null prototype, for the same reason as the wrapped map: field names are
341
+ // data, and "__proto__" must land as an ordinary own property.
342
+ const fieldErrors = Object.create(null);
343
+ for (const [field, value] of entries) {
344
+ if (!Array.isArray(value) || value.length === 0)
345
+ return undefined;
346
+ if (!value.every((m) => typeof m === "string" && m.length > 0))
347
+ return undefined;
348
+ fieldErrors[field] = value;
349
+ }
350
+ return fieldErrors;
351
+ }
352
+ /**
353
+ * Flattens a field-keyed errors map as "field: msg1; msg2, other: msg" —
354
+ * fields sorted lexicographically, a field's messages joined with "; ",
355
+ * fields joined with ", ". This shape is shared by all six SDKs; change it
356
+ * everywhere or nowhere.
357
+ */
358
+ function flattenFieldErrors(fieldErrors) {
359
+ return Object.entries(fieldErrors)
360
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
361
+ .map(([field, messages]) => `${field}: ${messages.join("; ")}`)
362
+ .join(", ");
363
+ }
251
364
  /**
252
365
  * Parses the Retry-After header value.
253
366
  * Supports both seconds (integer) and HTTP-date formats.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/generated/metadata.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC/C;AAED,QAAA,MAAM,QAAQ,EAAE,cAslGf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/generated/metadata.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC/C;AAED,QAAA,MAAM,QAAQ,EAAE,cAiuGf,CAAC;AAEF,eAAe,QAAQ,CAAC"}