@37signals/basecamp 0.12.0 → 0.14.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.
- package/README.md +114 -17
- package/dist/.build-complete +0 -0
- package/dist/client.d.ts +53 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +132 -150
- package/dist/client.js.map +1 -1
- package/dist/download.d.ts +7 -0
- package/dist/download.d.ts.map +1 -1
- package/dist/download.js +82 -22
- package/dist/download.js.map +1 -1
- package/dist/errors.d.ts +19 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +138 -14
- package/dist/errors.js.map +1 -1
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +291 -141
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/metadata.ts +291 -141
- package/dist/generated/openapi-stripped.json +5954 -3523
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +28 -16
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +28 -16
- package/dist/generated/schema.d.ts +4390 -2357
- package/dist/generated/services/bookmarks.d.ts +1 -1
- package/dist/generated/services/bookmarks.d.ts.map +1 -1
- package/dist/generated/services/bookmarks.ts +1 -1
- package/dist/generated/services/boosts.d.ts +10 -0
- package/dist/generated/services/boosts.d.ts.map +1 -1
- package/dist/generated/services/boosts.js +8 -0
- package/dist/generated/services/boosts.js.map +1 -1
- package/dist/generated/services/boosts.ts +12 -0
- package/dist/generated/services/campfires.d.ts +54 -40
- package/dist/generated/services/campfires.d.ts.map +1 -1
- package/dist/generated/services/campfires.js +82 -65
- package/dist/generated/services/campfires.js.map +1 -1
- package/dist/generated/services/campfires.ts +107 -85
- package/dist/generated/services/cards.d.ts +5 -0
- package/dist/generated/services/cards.d.ts.map +1 -1
- package/dist/generated/services/cards.js +4 -0
- package/dist/generated/services/cards.js.map +1 -1
- package/dist/generated/services/cards.ts +6 -0
- package/dist/generated/services/checkins.d.ts +14 -0
- package/dist/generated/services/checkins.d.ts.map +1 -1
- package/dist/generated/services/checkins.js +14 -1
- package/dist/generated/services/checkins.js.map +1 -1
- package/dist/generated/services/checkins.ts +20 -0
- package/dist/generated/services/client-approvals.d.ts +6 -3
- package/dist/generated/services/client-approvals.d.ts.map +1 -1
- package/dist/generated/services/client-approvals.js +8 -5
- package/dist/generated/services/client-approvals.js.map +1 -1
- package/dist/generated/services/client-approvals.ts +10 -5
- package/dist/generated/services/client-correspondences.d.ts +6 -3
- package/dist/generated/services/client-correspondences.d.ts.map +1 -1
- package/dist/generated/services/client-correspondences.js +8 -5
- package/dist/generated/services/client-correspondences.js.map +1 -1
- package/dist/generated/services/client-correspondences.ts +10 -5
- package/dist/generated/services/client-replies.d.ts +11 -4
- package/dist/generated/services/client-replies.d.ts.map +1 -1
- package/dist/generated/services/client-replies.js +16 -8
- package/dist/generated/services/client-replies.js.map +1 -1
- package/dist/generated/services/client-replies.ts +18 -8
- package/dist/generated/services/cloud-files.d.ts +92 -0
- package/dist/generated/services/cloud-files.d.ts.map +1 -0
- package/dist/generated/services/cloud-files.js +121 -0
- package/dist/generated/services/cloud-files.js.map +1 -0
- package/dist/generated/services/cloud-files.ts +188 -0
- package/dist/generated/services/comments.d.ts +5 -0
- package/dist/generated/services/comments.d.ts.map +1 -1
- package/dist/generated/services/comments.js +4 -0
- package/dist/generated/services/comments.js.map +1 -1
- package/dist/generated/services/comments.ts +6 -0
- package/dist/generated/services/documents.d.ts +12 -7
- package/dist/generated/services/documents.d.ts.map +1 -1
- package/dist/generated/services/documents.js +10 -6
- package/dist/generated/services/documents.js.map +1 -1
- package/dist/generated/services/documents.ts +14 -8
- package/dist/generated/services/drafts.d.ts +1 -1
- package/dist/generated/services/drafts.d.ts.map +1 -1
- package/dist/generated/services/drafts.ts +1 -1
- package/dist/generated/services/events.d.ts +5 -0
- package/dist/generated/services/events.d.ts.map +1 -1
- package/dist/generated/services/events.js +4 -0
- package/dist/generated/services/events.js.map +1 -1
- package/dist/generated/services/events.ts +6 -0
- package/dist/generated/services/everything.d.ts +14 -14
- package/dist/generated/services/everything.d.ts.map +1 -1
- package/dist/generated/services/everything.ts +14 -14
- package/dist/generated/services/folders.d.ts +96 -0
- package/dist/generated/services/folders.d.ts.map +1 -0
- package/dist/generated/services/folders.js +140 -0
- package/dist/generated/services/folders.js.map +1 -0
- package/dist/generated/services/folders.ts +201 -0
- package/dist/generated/services/forwards.d.ts +7 -20
- package/dist/generated/services/forwards.d.ts.map +1 -1
- package/dist/generated/services/forwards.js +6 -35
- package/dist/generated/services/forwards.js.map +1 -1
- package/dist/generated/services/forwards.ts +10 -48
- package/dist/generated/services/gauges.d.ts +7 -0
- package/dist/generated/services/gauges.d.ts.map +1 -1
- package/dist/generated/services/gauges.js +5 -1
- package/dist/generated/services/gauges.js.map +1 -1
- package/dist/generated/services/gauges.ts +9 -1
- package/dist/generated/services/google-documents.d.ts +98 -0
- package/dist/generated/services/google-documents.d.ts.map +1 -0
- package/dist/generated/services/google-documents.js +123 -0
- package/dist/generated/services/google-documents.js.map +1 -0
- package/dist/generated/services/google-documents.ts +196 -0
- package/dist/generated/services/index.d.ts +7 -4
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +7 -4
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +7 -4
- package/dist/generated/services/messages.d.ts +2 -0
- package/dist/generated/services/messages.d.ts.map +1 -1
- package/dist/generated/services/messages.js +1 -1
- package/dist/generated/services/messages.js.map +1 -1
- package/dist/generated/services/messages.ts +3 -1
- package/dist/generated/services/my-notes.d.ts +1 -1
- package/dist/generated/services/my-notes.js +1 -1
- package/dist/generated/services/my-notes.ts +1 -1
- package/dist/generated/services/my-notifications.d.ts +4 -2
- package/dist/generated/services/my-notifications.d.ts.map +1 -1
- package/dist/generated/services/my-notifications.js.map +1 -1
- package/dist/generated/services/my-notifications.ts +4 -2
- package/dist/generated/services/people.d.ts +11 -1
- package/dist/generated/services/people.d.ts.map +1 -1
- package/dist/generated/services/people.js +13 -2
- package/dist/generated/services/people.js.map +1 -1
- package/dist/generated/services/people.ts +15 -1
- package/dist/generated/services/projects.d.ts +26 -0
- package/dist/generated/services/projects.d.ts.map +1 -1
- package/dist/generated/services/projects.js +49 -1
- package/dist/generated/services/projects.js.map +1 -1
- package/dist/generated/services/projects.ts +61 -1
- package/dist/generated/services/recordings.d.ts +2 -12
- package/dist/generated/services/recordings.d.ts.map +1 -1
- package/dist/generated/services/recordings.js +1 -26
- package/dist/generated/services/recordings.js.map +1 -1
- package/dist/generated/services/recordings.ts +3 -31
- package/dist/generated/services/reports.d.ts +8 -12
- package/dist/generated/services/reports.d.ts.map +1 -1
- package/dist/generated/services/reports.js +11 -5
- package/dist/generated/services/reports.js.map +1 -1
- package/dist/generated/services/reports.ts +13 -14
- package/dist/generated/services/schedules.d.ts +94 -15
- package/dist/generated/services/schedules.d.ts.map +1 -1
- package/dist/generated/services/schedules.js +19 -8
- package/dist/generated/services/schedules.js.map +1 -1
- package/dist/generated/services/schedules.ts +107 -17
- package/dist/generated/services/search.d.ts +2 -0
- package/dist/generated/services/search.d.ts.map +1 -1
- package/dist/generated/services/search.js +1 -1
- package/dist/generated/services/search.js.map +1 -1
- package/dist/generated/services/search.ts +3 -1
- package/dist/generated/services/templates.d.ts +2 -0
- package/dist/generated/services/templates.d.ts.map +1 -1
- package/dist/generated/services/templates.js +1 -1
- package/dist/generated/services/templates.js.map +1 -1
- package/dist/generated/services/templates.ts +3 -1
- package/dist/generated/services/timeline.d.ts +2 -0
- package/dist/generated/services/timeline.d.ts.map +1 -1
- package/dist/generated/services/timeline.js +1 -0
- package/dist/generated/services/timeline.js.map +1 -1
- package/dist/generated/services/timeline.ts +3 -0
- package/dist/generated/services/timesheets.d.ts +16 -0
- package/dist/generated/services/timesheets.d.ts.map +1 -1
- package/dist/generated/services/timesheets.js +26 -2
- package/dist/generated/services/timesheets.js.map +1 -1
- package/dist/generated/services/timesheets.ts +35 -2
- package/dist/generated/services/todolist-groups.d.ts +11 -6
- package/dist/generated/services/todolist-groups.d.ts.map +1 -1
- package/dist/generated/services/todolist-groups.js +7 -3
- package/dist/generated/services/todolist-groups.js.map +1 -1
- package/dist/generated/services/todolist-groups.ts +13 -7
- package/dist/generated/services/todolists.d.ts +15 -13
- package/dist/generated/services/todolists.d.ts.map +1 -1
- package/dist/generated/services/todolists.js +11 -8
- package/dist/generated/services/todolists.js.map +1 -1
- package/dist/generated/services/todolists.ts +19 -14
- package/dist/generated/services/todos.d.ts +2 -12
- package/dist/generated/services/todos.d.ts.map +1 -1
- package/dist/generated/services/todos.js +1 -25
- package/dist/generated/services/todos.js.map +1 -1
- package/dist/generated/services/todos.ts +3 -30
- package/dist/generated/services/uploads.d.ts +41 -2
- package/dist/generated/services/uploads.d.ts.map +1 -1
- package/dist/generated/services/uploads.js +41 -1
- package/dist/generated/services/uploads.js.map +1 -1
- package/dist/generated/services/uploads.ts +71 -2
- package/dist/generated/services/vaults.d.ts +5 -0
- package/dist/generated/services/vaults.d.ts.map +1 -1
- package/dist/generated/services/vaults.js +4 -0
- package/dist/generated/services/vaults.js.map +1 -1
- package/dist/generated/services/vaults.ts +6 -0
- package/dist/index.d.ts +16 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -8
- package/dist/index.js.map +1 -1
- package/dist/oauth/authorization-document.d.ts +201 -0
- package/dist/oauth/authorization-document.d.ts.map +1 -0
- package/dist/oauth/authorization-document.js +130 -0
- package/dist/oauth/authorization-document.js.map +1 -0
- package/dist/oauth/identity.d.ts +7 -1
- package/dist/oauth/identity.d.ts.map +1 -1
- package/dist/oauth/identity.js +8 -19
- package/dist/oauth/identity.js.map +1 -1
- package/dist/oauth/index.d.ts +1 -0
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +2 -0
- package/dist/oauth/index.js.map +1 -1
- package/dist/pagination-utils.d.ts +46 -0
- package/dist/pagination-utils.d.ts.map +1 -1
- package/dist/pagination-utils.js +85 -2
- package/dist/pagination-utils.js.map +1 -1
- package/dist/pagination.d.ts +11 -0
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/retry.d.ts +110 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +253 -0
- package/dist/retry.js.map +1 -0
- package/dist/services/authorization.d.ts +22 -52
- package/dist/services/authorization.d.ts.map +1 -1
- package/dist/services/authorization.js +14 -32
- package/dist/services/authorization.js.map +1 -1
- package/dist/services/base.d.ts.map +1 -1
- package/dist/services/base.js +59 -5
- package/dist/services/base.js.map +1 -1
- package/dist/services/cards-extensions.d.ts +26 -21
- package/dist/services/cards-extensions.d.ts.map +1 -1
- package/dist/services/cards-extensions.js +28 -31
- package/dist/services/cards-extensions.js.map +1 -1
- package/dist/services/documents-extensions.d.ts +122 -0
- package/dist/services/documents-extensions.d.ts.map +1 -0
- package/dist/services/documents-extensions.js +125 -0
- package/dist/services/documents-extensions.js.map +1 -0
- package/dist/services/merge-safe.d.ts +167 -0
- package/dist/services/merge-safe.d.ts.map +1 -0
- package/dist/services/merge-safe.js +217 -0
- package/dist/services/merge-safe.js.map +1 -0
- package/dist/services/schedules-extensions.d.ts +266 -0
- package/dist/services/schedules-extensions.d.ts.map +1 -0
- package/dist/services/schedules-extensions.js +268 -0
- package/dist/services/schedules-extensions.js.map +1 -0
- package/dist/services/todolists-extensions.d.ts +110 -0
- package/dist/services/todolists-extensions.d.ts.map +1 -0
- package/dist/services/todolists-extensions.js +262 -0
- package/dist/services/todolists-extensions.js.map +1 -0
- package/dist/services/todos-extensions.d.ts +12 -1
- package/dist/services/todos-extensions.d.ts.map +1 -1
- package/dist/services/todos-extensions.js +27 -8
- package/dist/services/todos-extensions.js.map +1 -1
- package/package.json +6 -5
- package/src/generated/metadata.ts +291 -141
- package/src/generated/openapi-stripped.json +5954 -3523
- package/src/generated/path-mapping.ts +28 -16
- package/src/generated/schema.d.ts +4390 -2357
- package/src/generated/services/bookmarks.ts +1 -1
- package/src/generated/services/boosts.ts +12 -0
- package/src/generated/services/campfires.ts +107 -85
- package/src/generated/services/cards.ts +6 -0
- package/src/generated/services/checkins.ts +20 -0
- package/src/generated/services/client-approvals.ts +10 -5
- package/src/generated/services/client-correspondences.ts +10 -5
- package/src/generated/services/client-replies.ts +18 -8
- package/src/generated/services/cloud-files.ts +188 -0
- package/src/generated/services/comments.ts +6 -0
- package/src/generated/services/documents.ts +14 -8
- package/src/generated/services/drafts.ts +1 -1
- package/src/generated/services/events.ts +6 -0
- package/src/generated/services/everything.ts +14 -14
- package/src/generated/services/folders.ts +201 -0
- package/src/generated/services/forwards.ts +10 -48
- package/src/generated/services/gauges.ts +9 -1
- package/src/generated/services/google-documents.ts +196 -0
- package/src/generated/services/index.ts +7 -4
- package/src/generated/services/messages.ts +3 -1
- package/src/generated/services/my-notes.ts +1 -1
- package/src/generated/services/my-notifications.ts +4 -2
- package/src/generated/services/people.ts +15 -1
- package/src/generated/services/projects.ts +61 -1
- package/src/generated/services/recordings.ts +3 -31
- package/src/generated/services/reports.ts +13 -14
- package/src/generated/services/schedules.ts +107 -17
- package/src/generated/services/search.ts +3 -1
- package/src/generated/services/templates.ts +3 -1
- package/src/generated/services/timeline.ts +3 -0
- package/src/generated/services/timesheets.ts +35 -2
- package/src/generated/services/todolist-groups.ts +13 -7
- package/src/generated/services/todolists.ts +19 -14
- package/src/generated/services/todos.ts +3 -30
- package/src/generated/services/uploads.ts +71 -2
- package/src/generated/services/vaults.ts +6 -0
package/dist/services/base.js
CHANGED
|
@@ -21,12 +21,33 @@
|
|
|
21
21
|
* }
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
import { BasecampError, errorFromResponse } from "../errors.js";
|
|
24
|
+
import { BasecampError, errorFromParsedBody, errorFromResponse } from "../errors.js";
|
|
25
25
|
import metadata from "../generated/metadata.js";
|
|
26
26
|
import { ListResult, parseTotalCount } from "../pagination.js";
|
|
27
|
-
import { parseNextLink, resolveURL, isSameOrigin } from "../pagination-utils.js";
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
import { parseNextLink, resolveURL, isSameOrigin, DEFAULT_MAX_PAGES, assertValidMaxPages } from "../pagination-utils.js";
|
|
28
|
+
import { saturatingBackoff } from "../retry.js";
|
|
29
|
+
/**
|
|
30
|
+
* True when the caller pinned a single page (SPEC section 8).
|
|
31
|
+
*
|
|
32
|
+
* A positive `page` is a selector, not a starting offset: the operation issues
|
|
33
|
+
* exactly one request and never follows `Link: rel="next"`. Absent, 0, and
|
|
34
|
+
* negative all mean "walk the collection".
|
|
35
|
+
*/
|
|
36
|
+
function isPageSelected(opts) {
|
|
37
|
+
return typeof opts?.page === "number" && opts.page > 0;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Builds the ListResult for a pinned page.
|
|
41
|
+
*
|
|
42
|
+
* `truncated` still answers "were there more items than these": true when the
|
|
43
|
+
* selected page carried a next link, or when the maxItems cap dropped items
|
|
44
|
+
* from it.
|
|
45
|
+
*/
|
|
46
|
+
function selectedPageResult(response, items, totalCount, maxItems) {
|
|
47
|
+
const capped = maxItems !== undefined && maxItems > 0 && items.length > maxItems;
|
|
48
|
+
const truncated = capped || parseNextLink(response.headers.get("Link")) !== null;
|
|
49
|
+
return new ListResult(capped ? items.slice(0, maxItems) : items, { totalCount, truncated });
|
|
50
|
+
}
|
|
30
51
|
/**
|
|
31
52
|
* Abstract base class for all Basecamp API services.
|
|
32
53
|
*
|
|
@@ -106,6 +127,20 @@ export class BaseService {
|
|
|
106
127
|
*/
|
|
107
128
|
authenticatedFetch;
|
|
108
129
|
constructor(client, hooks, fetchPage, maxPages, authenticatedFetch, baseUrl) {
|
|
130
|
+
// BaseService is exported, and so is every generated service extending it,
|
|
131
|
+
// so `new ProjectsService(client, hooks, fetchPage, Infinity)` is a
|
|
132
|
+
// supported call that reaches followPagination's `page < this.maxPages`
|
|
133
|
+
// without passing through createBasecampClient. Validating only at the
|
|
134
|
+
// client factory would leave this door open. Checked only when supplied, so
|
|
135
|
+
// an omitted cap still falls through to the default.
|
|
136
|
+
// `!= null` rather than `!== undefined`, to agree with the `??` below:
|
|
137
|
+
// that treats an explicit `null` as "not supplied" and falls back to the
|
|
138
|
+
// default, so the guard must treat it the same way. A JS caller passing
|
|
139
|
+
// `null` — outside the declared type, but reachable from untyped code —
|
|
140
|
+
// would otherwise have started throwing where it previously defaulted.
|
|
141
|
+
if (maxPages != null) {
|
|
142
|
+
assertValidMaxPages(maxPages);
|
|
143
|
+
}
|
|
109
144
|
this.client = client;
|
|
110
145
|
this.hooks = hooks;
|
|
111
146
|
this.fetchPage = fetchPage ?? ((url) => fetch(url, { headers: { Accept: "application/json" } }));
|
|
@@ -175,9 +210,11 @@ export class BaseService {
|
|
|
175
210
|
const retryAfter = response.status === 429
|
|
176
211
|
? parseInt(response.headers.get("Retry-After") ?? "", 10) * 1000
|
|
177
212
|
: NaN;
|
|
213
|
+
// The locally-computed term is bounded by SPEC §7's ceiling; the
|
|
214
|
+
// server-directed Retry-After is not, per the same section.
|
|
178
215
|
const delay = !isNaN(retryAfter) && retryAfter >= 0
|
|
179
216
|
? retryAfter
|
|
180
|
-
: (retryConfig.baseDelayMs ?? 1000
|
|
217
|
+
: saturatingBackoff(retryConfig.baseDelayMs ?? 1000, "exponential", attempt);
|
|
181
218
|
try {
|
|
182
219
|
const retryError = new Error(`${response.status} ${response.statusText}`);
|
|
183
220
|
// SPEC section 7: RequestInfo.attempt is the attempt that just failed
|
|
@@ -301,6 +338,11 @@ export class BaseService {
|
|
|
301
338
|
normalizePersonIds(firstPageItems);
|
|
302
339
|
const totalCount = parseTotalCount(response);
|
|
303
340
|
const maxItems = paginationOpts?.maxItems;
|
|
341
|
+
// A pinned page is the whole answer: return it without following links.
|
|
342
|
+
if (isPageSelected(paginationOpts)) {
|
|
343
|
+
result.durationMs = Math.round(performance.now() - start);
|
|
344
|
+
return selectedPageResult(response, firstPageItems, totalCount, maxItems);
|
|
345
|
+
}
|
|
304
346
|
// If maxItems is set and first page satisfies it, return early
|
|
305
347
|
if (maxItems && maxItems > 0 && firstPageItems.length >= maxItems) {
|
|
306
348
|
// Only mark truncated if there are actually more items beyond maxItems
|
|
@@ -370,6 +412,12 @@ export class BaseService {
|
|
|
370
412
|
}
|
|
371
413
|
const firstPageItems = firstPageData[key] ?? [];
|
|
372
414
|
const maxItems = paginationOpts?.maxItems;
|
|
415
|
+
// A pinned page is the whole answer: return it without following links.
|
|
416
|
+
if (isPageSelected(paginationOpts)) {
|
|
417
|
+
result.durationMs = Math.round(performance.now() - start);
|
|
418
|
+
const listResult = selectedPageResult(response, firstPageItems, totalCount, maxItems);
|
|
419
|
+
return { ...wrapper, [key]: listResult };
|
|
420
|
+
}
|
|
373
421
|
// If maxItems is set and first page satisfies it, return early
|
|
374
422
|
if (maxItems && maxItems > 0 && firstPageItems.length >= maxItems) {
|
|
375
423
|
const hasMore = firstPageItems.length > maxItems
|
|
@@ -491,6 +539,12 @@ export class BaseService {
|
|
|
491
539
|
}
|
|
492
540
|
// Extract request ID from response headers if available
|
|
493
541
|
const requestId = response.headers.get("X-Request-Id") ?? undefined;
|
|
542
|
+
// openapi-fetch has already consumed and parsed the error body into
|
|
543
|
+
// `error`; re-reading the response would throw and lose the server's
|
|
544
|
+
// message (and any field-keyed 422 errors map).
|
|
545
|
+
if (error !== undefined) {
|
|
546
|
+
return errorFromParsedBody(response, error, requestId);
|
|
547
|
+
}
|
|
494
548
|
// Use the errorFromResponse helper to create the appropriate error
|
|
495
549
|
return errorFromResponse(response, requestId);
|
|
496
550
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,9 @@ import type { Card } from "../generated/services/cards.js";
|
|
|
5
5
|
*
|
|
6
6
|
* Every field is presence-bearing: omitting it leaves that part of the card
|
|
7
7
|
* alone. `dueOn` additionally accepts `null`, which is how you ask for the due
|
|
8
|
-
* date to be *cleared* — a distinction the raw
|
|
9
|
-
*
|
|
8
|
+
* date to be *cleared* — a distinction the raw generated shape cannot express,
|
|
9
|
+
* because its `dueOn` is a plain optional string and absence now means "leave
|
|
10
|
+
* it alone".
|
|
10
11
|
*/
|
|
11
12
|
export interface UpdateCardRequest {
|
|
12
13
|
/** Card title. Omit to leave unchanged. */
|
|
@@ -16,8 +17,8 @@ export interface UpdateCardRequest {
|
|
|
16
17
|
/**
|
|
17
18
|
* Due date (YYYY-MM-DD).
|
|
18
19
|
*
|
|
19
|
-
* - omitted → the current due date is
|
|
20
|
-
* - `null` → the due date is cleared
|
|
20
|
+
* - omitted → the current due date is left unchanged
|
|
21
|
+
* - `null` → the due date is cleared, sent on the wire as `"due_on": ""`
|
|
21
22
|
* - a date → the due date is set
|
|
22
23
|
*/
|
|
23
24
|
dueOn?: string | null;
|
|
@@ -32,39 +33,43 @@ export interface UpdateCardRequest {
|
|
|
32
33
|
assigneeIds?: number[];
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
|
-
* CardsService with a
|
|
36
|
+
* CardsService with a presence-aware `update` on top of the generated surface
|
|
36
37
|
* (`get`, `updateVerbatim`, `move`, ...).
|
|
37
38
|
*
|
|
38
|
-
* BC3 builds
|
|
39
|
-
* (
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* BC3's `kanban/cards_controller.rb` builds a JSON card update's params
|
|
40
|
+
* straight from `card_params` (basecamp/bc3#12521), so on the JSON
|
|
41
|
+
* representation an omitted key means **leave unchanged** — `due_on` included.
|
|
42
|
+
* Clearing the due date is asked for explicitly: the server accepts JSON `null`
|
|
43
|
+
* or `""`, and this SDK sends `""`, because a null would violate body
|
|
44
|
+
* compaction (SPEC §18). Only the HTML/turbo_stream web forms still default an
|
|
45
|
+
* omitted `due_on` to nil (`card_params.with_defaults(due_on: nil)`), which is
|
|
46
|
+
* how the JSON path could be made presence-aware without disturbing the web
|
|
47
|
+
* contract.
|
|
42
48
|
*
|
|
43
|
-
* `update`
|
|
44
|
-
*
|
|
49
|
+
* `update` therefore sends exactly what the caller addressed, in a single PUT.
|
|
50
|
+
* It differs from `updateVerbatim` only in accepting `dueOn: null` and encoding
|
|
51
|
+
* it as the wire spelling of a clear.
|
|
45
52
|
*/
|
|
46
53
|
export declare class CardsService extends GeneratedCardsService {
|
|
47
54
|
/**
|
|
48
55
|
* Updates a card without disturbing fields you did not mention.
|
|
49
56
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* the API would otherwise destroy something. Naming `dueOn` explicitly (a
|
|
53
|
-
* date, or `null` to clear) skips the fetch entirely.
|
|
57
|
+
* One request. A field you omit is omitted from the body and the server
|
|
58
|
+
* leaves it alone; `dueOn: null` clears the due date.
|
|
54
59
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* round-trip
|
|
58
|
-
*
|
|
60
|
+
* Earlier releases read the card back first and resent its due date, because
|
|
61
|
+
* a JSON update that omitted `due_on` used to erase it. bc3#12521 removed
|
|
62
|
+
* that behaviour, so the extra round-trip — and the race between the read and
|
|
63
|
+
* the write — is gone.
|
|
59
64
|
*
|
|
60
65
|
* @param cardId - The card ID
|
|
61
|
-
* @param req - Fields to set; omitted fields are
|
|
66
|
+
* @param req - Fields to set; omitted fields are left unchanged
|
|
62
67
|
* @returns The updated Card
|
|
63
68
|
* @throws {BasecampError} If the request fails
|
|
64
69
|
*
|
|
65
70
|
* @example
|
|
66
71
|
* ```ts
|
|
67
|
-
* // Retitle without
|
|
72
|
+
* // Retitle without touching the due date.
|
|
68
73
|
* await client.cards.update(123, { title: "New title" });
|
|
69
74
|
*
|
|
70
75
|
* // Clear the due date.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-extensions.d.ts","sourceRoot":"","sources":["../../src/services/cards-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAE3D
|
|
1
|
+
{"version":3,"file":"cards-extensions.d.ts","sourceRoot":"","sources":["../../src/services/cards-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,YAAa,SAAQ,qBAAqB;IACrD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBpE"}
|
|
@@ -1,38 +1,42 @@
|
|
|
1
1
|
import { CardsService as GeneratedCardsService } from "../generated/services/cards.js";
|
|
2
2
|
/**
|
|
3
|
-
* CardsService with a
|
|
3
|
+
* CardsService with a presence-aware `update` on top of the generated surface
|
|
4
4
|
* (`get`, `updateVerbatim`, `move`, ...).
|
|
5
5
|
*
|
|
6
|
-
* BC3 builds
|
|
7
|
-
* (
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* BC3's `kanban/cards_controller.rb` builds a JSON card update's params
|
|
7
|
+
* straight from `card_params` (basecamp/bc3#12521), so on the JSON
|
|
8
|
+
* representation an omitted key means **leave unchanged** — `due_on` included.
|
|
9
|
+
* Clearing the due date is asked for explicitly: the server accepts JSON `null`
|
|
10
|
+
* or `""`, and this SDK sends `""`, because a null would violate body
|
|
11
|
+
* compaction (SPEC §18). Only the HTML/turbo_stream web forms still default an
|
|
12
|
+
* omitted `due_on` to nil (`card_params.with_defaults(due_on: nil)`), which is
|
|
13
|
+
* how the JSON path could be made presence-aware without disturbing the web
|
|
14
|
+
* contract.
|
|
10
15
|
*
|
|
11
|
-
* `update`
|
|
12
|
-
*
|
|
16
|
+
* `update` therefore sends exactly what the caller addressed, in a single PUT.
|
|
17
|
+
* It differs from `updateVerbatim` only in accepting `dueOn: null` and encoding
|
|
18
|
+
* it as the wire spelling of a clear.
|
|
13
19
|
*/
|
|
14
20
|
export class CardsService extends GeneratedCardsService {
|
|
15
21
|
/**
|
|
16
22
|
* Updates a card without disturbing fields you did not mention.
|
|
17
23
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* the API would otherwise destroy something. Naming `dueOn` explicitly (a
|
|
21
|
-
* date, or `null` to clear) skips the fetch entirely.
|
|
24
|
+
* One request. A field you omit is omitted from the body and the server
|
|
25
|
+
* leaves it alone; `dueOn: null` clears the due date.
|
|
22
26
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* round-trip
|
|
26
|
-
*
|
|
27
|
+
* Earlier releases read the card back first and resent its due date, because
|
|
28
|
+
* a JSON update that omitted `due_on` used to erase it. bc3#12521 removed
|
|
29
|
+
* that behaviour, so the extra round-trip — and the race between the read and
|
|
30
|
+
* the write — is gone.
|
|
27
31
|
*
|
|
28
32
|
* @param cardId - The card ID
|
|
29
|
-
* @param req - Fields to set; omitted fields are
|
|
33
|
+
* @param req - Fields to set; omitted fields are left unchanged
|
|
30
34
|
* @returns The updated Card
|
|
31
35
|
* @throws {BasecampError} If the request fails
|
|
32
36
|
*
|
|
33
37
|
* @example
|
|
34
38
|
* ```ts
|
|
35
|
-
* // Retitle without
|
|
39
|
+
* // Retitle without touching the due date.
|
|
36
40
|
* await client.cards.update(123, { title: "New title" });
|
|
37
41
|
*
|
|
38
42
|
* // Clear the due date.
|
|
@@ -47,20 +51,13 @@ export class CardsService extends GeneratedCardsService {
|
|
|
47
51
|
body.content = req.content;
|
|
48
52
|
if (req.assigneeIds !== undefined)
|
|
49
53
|
body.assigneeIds = req.assigneeIds;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
else if (req.dueOn !== null) {
|
|
59
|
-
body.dueOn = req.dueOn;
|
|
60
|
-
}
|
|
61
|
-
// req.dueOn === null falls through with dueOn unset: an omitted due_on is
|
|
62
|
-
// how the API clears the date, so omission IS the clear encoding. Sending
|
|
63
|
-
// `{"due_on": null}` would violate body compaction (SPEC §18).
|
|
54
|
+
// `due_on` stays off the wire unless the caller addressed it, which the
|
|
55
|
+
// server reads as "leave the due date alone". A date sets it; `null` asks
|
|
56
|
+
// for a clear and is sent as `""` — the server casts the blank to nil (a
|
|
57
|
+
// BC3 server test pins it), while `{"due_on": null}` would violate body
|
|
58
|
+
// compaction (SPEC §18) and omission would now be silently ignored.
|
|
59
|
+
if (req.dueOn !== undefined)
|
|
60
|
+
body.dueOn = req.dueOn ?? "";
|
|
64
61
|
return this.updateVerbatim(cardId, body);
|
|
65
62
|
}
|
|
66
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-extensions.js","sourceRoot":"","sources":["../../src/services/cards-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"cards-extensions.js","sourceRoot":"","sources":["../../src/services/cards-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAoCvF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,YAAa,SAAQ,qBAAqB;IACrD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,GAAsB;QACjD,MAAM,IAAI,GAKN,EAAE,CAAC;QAEP,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACpD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1D,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAEtE,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAE1D,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { DocumentsService as GeneratedDocumentsService } from "../generated/services/documents.js";
|
|
2
|
+
import type { Document } from "../generated/services/documents.js";
|
|
3
|
+
/**
|
|
4
|
+
* Request parameters for update. Both fields are optional: an omitted field
|
|
5
|
+
* is left untouched on the document, guaranteed. An explicitly-passed empty
|
|
6
|
+
* string is a set (clears the field).
|
|
7
|
+
*/
|
|
8
|
+
export interface UpdateDocumentRequest {
|
|
9
|
+
/** Plain-text title. Omit to leave unchanged; `""` clears it. */
|
|
10
|
+
title?: string;
|
|
11
|
+
/** Rich text body (HTML). Omit to leave unchanged; `""` clears it. */
|
|
12
|
+
content?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A document's full writable state, handed to the `edit` callback. The whole
|
|
16
|
+
* object is PUT back to the server, so clearing a field means setting it empty
|
|
17
|
+
* (`""`) — there is no third state. The writable set is exactly
|
|
18
|
+
* `{title, content}`.
|
|
19
|
+
*/
|
|
20
|
+
export interface DocumentFields {
|
|
21
|
+
/** Plain-text title. Set `""` to clear — the document then reads back as "Untitled". */
|
|
22
|
+
title: string;
|
|
23
|
+
/** Rich text body (HTML). Set `""` to clear. */
|
|
24
|
+
content: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* DocumentsService with merge-safe `update` and read-modify-write `edit` on
|
|
28
|
+
* top of the generated surface (`get`, `replace`, ...).
|
|
29
|
+
*
|
|
30
|
+
* `PUT /{accountId}/documents/{documentId}` is a full replace: BC3's
|
|
31
|
+
* `DocumentsController#update` builds a brand-new `Document` from only the
|
|
32
|
+
* permitted params and swaps the recordable wholesale, so a sparse PUT that
|
|
33
|
+
* omits `content` erases it. Omitting `title` erases that too — the document
|
|
34
|
+
* then reads back as `"Untitled"`, because `Document#title` falls back when
|
|
35
|
+
* blank. Neither field is presence-validated, so **neither omission is a 422**;
|
|
36
|
+
* both are a `200` that quietly clears. What BC3 does require is the wrapping
|
|
37
|
+
* `document` object, so a body naming neither field is a `400`.
|
|
38
|
+
*
|
|
39
|
+
* Both methods compose the public `get` and `replace` methods, so hooks
|
|
40
|
+
* observe the two wire operations (`GetDocument` then `ReplaceDocument`), not
|
|
41
|
+
* a synthetic composite.
|
|
42
|
+
*
|
|
43
|
+
* Publishing a draft (`status: "active"`) is not part of this surface: the
|
|
44
|
+
* spec models only `title` and `content`, and BC3 rejects a status-only update
|
|
45
|
+
* for the same reason it rejects an empty body.
|
|
46
|
+
*/
|
|
47
|
+
export declare class DocumentsService extends GeneratedDocumentsService {
|
|
48
|
+
/**
|
|
49
|
+
* Sets the given fields on a document and preserves everything else: GETs
|
|
50
|
+
* the current document, overlays the explicitly-set request fields, and PUTs
|
|
51
|
+
* the full representation back. An omitted (`undefined`) field is untouched,
|
|
52
|
+
* guaranteed; an explicitly-passed `""` clears.
|
|
53
|
+
*
|
|
54
|
+
* Not atomic: there is no conditional-update signal on this endpoint, so a
|
|
55
|
+
* concurrent write between the GET and PUT is overwritten — last write wins
|
|
56
|
+
* for the whole representation. The window is one round-trip. Use `replace`
|
|
57
|
+
* to overwrite deliberately.
|
|
58
|
+
*
|
|
59
|
+
* @param documentId - The document ID
|
|
60
|
+
* @param req - Fields to set; omitted fields are preserved
|
|
61
|
+
* @returns The updated Document
|
|
62
|
+
* @throws {BasecampError} If the request fails
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* // Retitle without erasing the body.
|
|
67
|
+
* await client.documents.update(123, { title: "Q3 Plan" });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
update(documentId: number, req: UpdateDocumentRequest): Promise<Document>;
|
|
71
|
+
/**
|
|
72
|
+
* Applies a read-modify-write callback to a document: GETs the current
|
|
73
|
+
* document, hands the callback its full writable representation, and PUTs
|
|
74
|
+
* the whole thing back. Clearing a field means setting it empty (`""`) — an
|
|
75
|
+
* untouched field keeps its current value. If the callback throws (or
|
|
76
|
+
* rejects), the edit aborts and nothing is written.
|
|
77
|
+
*
|
|
78
|
+
* Not atomic: there is no conditional-update signal on this endpoint, so a
|
|
79
|
+
* concurrent write between the GET and PUT is overwritten — last write wins
|
|
80
|
+
* for the whole representation. The window is one round-trip. Use `replace`
|
|
81
|
+
* to overwrite deliberately.
|
|
82
|
+
*
|
|
83
|
+
* @param documentId - The document ID
|
|
84
|
+
* @param fn - Callback that mutates the document's writable fields in place
|
|
85
|
+
* @returns The updated Document
|
|
86
|
+
* @throws {BasecampError} If the request fails
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* await client.documents.edit(123, (d) => {
|
|
91
|
+
* d.title = `🚨 ${d.title}`;
|
|
92
|
+
* d.content = ""; // clearing = setting empty on a full object
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
edit(documentId: number, fn: (d: DocumentFields) => void | Promise<void>): Promise<Document>;
|
|
97
|
+
/**
|
|
98
|
+
* Fetches the document and derives its full writable state.
|
|
99
|
+
*
|
|
100
|
+
* Every value here is resent in the full-replace PUT, so every value is
|
|
101
|
+
* validated before it is read. `?? ""` coalesces only `null` and
|
|
102
|
+
* `undefined`, leaving corruption wide open: `false`, `0`, `[]`, `{}`, `42`,
|
|
103
|
+
* `true` and friends would all be forwarded **verbatim** and written to the
|
|
104
|
+
* document on a call that never mentioned the field. Nothing below this
|
|
105
|
+
* rejects them — `schema.d.ts` is erased at build time, so `Document` is a
|
|
106
|
+
* compile-time claim about runtime data. See `merge-safe.ts` and #576.
|
|
107
|
+
*
|
|
108
|
+
* The two writable fields read differently because the spec models them
|
|
109
|
+
* differently: `title` is `@required`, so absent or null is malformed;
|
|
110
|
+
* `content` is optional, so absent or null is a genuinely empty body.
|
|
111
|
+
*/
|
|
112
|
+
private currentFields;
|
|
113
|
+
/**
|
|
114
|
+
* PUTs the full writable state via `replace`. Both fields are always sent,
|
|
115
|
+
* empties included: on a full-replace endpoint `""` is how a clear is
|
|
116
|
+
* expressed — never JSON null (SPEC §18 body compaction), and never by
|
|
117
|
+
* omission, which would leave the field to the server's own clear-by-default
|
|
118
|
+
* and read as an accident rather than an intent.
|
|
119
|
+
*/
|
|
120
|
+
private putFields;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=documents-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents-extensions.d.ts","sourceRoot":"","sources":["../../src/services/documents-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAMnE;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAiB,SAAQ,yBAAyB;IAC7D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO/E;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC9C,OAAO,CAAC,QAAQ,CAAC;IAMpB;;;;;;;;;;;;;;OAcG;YACW,aAAa;IAa3B;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { DocumentsService as GeneratedDocumentsService } from "../generated/services/documents.js";
|
|
2
|
+
import { requireRecord, requiredWritableString, writableString } from "./merge-safe.js";
|
|
3
|
+
/** The deliberate-overwrite escape hatch named in this composite's error hints. */
|
|
4
|
+
const ESCAPE = "replace()";
|
|
5
|
+
/**
|
|
6
|
+
* DocumentsService with merge-safe `update` and read-modify-write `edit` on
|
|
7
|
+
* top of the generated surface (`get`, `replace`, ...).
|
|
8
|
+
*
|
|
9
|
+
* `PUT /{accountId}/documents/{documentId}` is a full replace: BC3's
|
|
10
|
+
* `DocumentsController#update` builds a brand-new `Document` from only the
|
|
11
|
+
* permitted params and swaps the recordable wholesale, so a sparse PUT that
|
|
12
|
+
* omits `content` erases it. Omitting `title` erases that too — the document
|
|
13
|
+
* then reads back as `"Untitled"`, because `Document#title` falls back when
|
|
14
|
+
* blank. Neither field is presence-validated, so **neither omission is a 422**;
|
|
15
|
+
* both are a `200` that quietly clears. What BC3 does require is the wrapping
|
|
16
|
+
* `document` object, so a body naming neither field is a `400`.
|
|
17
|
+
*
|
|
18
|
+
* Both methods compose the public `get` and `replace` methods, so hooks
|
|
19
|
+
* observe the two wire operations (`GetDocument` then `ReplaceDocument`), not
|
|
20
|
+
* a synthetic composite.
|
|
21
|
+
*
|
|
22
|
+
* Publishing a draft (`status: "active"`) is not part of this surface: the
|
|
23
|
+
* spec models only `title` and `content`, and BC3 rejects a status-only update
|
|
24
|
+
* for the same reason it rejects an empty body.
|
|
25
|
+
*/
|
|
26
|
+
export class DocumentsService extends GeneratedDocumentsService {
|
|
27
|
+
/**
|
|
28
|
+
* Sets the given fields on a document and preserves everything else: GETs
|
|
29
|
+
* the current document, overlays the explicitly-set request fields, and PUTs
|
|
30
|
+
* the full representation back. An omitted (`undefined`) field is untouched,
|
|
31
|
+
* guaranteed; an explicitly-passed `""` clears.
|
|
32
|
+
*
|
|
33
|
+
* Not atomic: there is no conditional-update signal on this endpoint, so a
|
|
34
|
+
* concurrent write between the GET and PUT is overwritten — last write wins
|
|
35
|
+
* for the whole representation. The window is one round-trip. Use `replace`
|
|
36
|
+
* to overwrite deliberately.
|
|
37
|
+
*
|
|
38
|
+
* @param documentId - The document ID
|
|
39
|
+
* @param req - Fields to set; omitted fields are preserved
|
|
40
|
+
* @returns The updated Document
|
|
41
|
+
* @throws {BasecampError} If the request fails
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* // Retitle without erasing the body.
|
|
46
|
+
* await client.documents.update(123, { title: "Q3 Plan" });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
async update(documentId, req) {
|
|
50
|
+
const fields = await this.currentFields(documentId);
|
|
51
|
+
if (req.title !== undefined)
|
|
52
|
+
fields.title = req.title;
|
|
53
|
+
if (req.content !== undefined)
|
|
54
|
+
fields.content = req.content;
|
|
55
|
+
return this.putFields(documentId, fields);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Applies a read-modify-write callback to a document: GETs the current
|
|
59
|
+
* document, hands the callback its full writable representation, and PUTs
|
|
60
|
+
* the whole thing back. Clearing a field means setting it empty (`""`) — an
|
|
61
|
+
* untouched field keeps its current value. If the callback throws (or
|
|
62
|
+
* rejects), the edit aborts and nothing is written.
|
|
63
|
+
*
|
|
64
|
+
* Not atomic: there is no conditional-update signal on this endpoint, so a
|
|
65
|
+
* concurrent write between the GET and PUT is overwritten — last write wins
|
|
66
|
+
* for the whole representation. The window is one round-trip. Use `replace`
|
|
67
|
+
* to overwrite deliberately.
|
|
68
|
+
*
|
|
69
|
+
* @param documentId - The document ID
|
|
70
|
+
* @param fn - Callback that mutates the document's writable fields in place
|
|
71
|
+
* @returns The updated Document
|
|
72
|
+
* @throws {BasecampError} If the request fails
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* await client.documents.edit(123, (d) => {
|
|
77
|
+
* d.title = `🚨 ${d.title}`;
|
|
78
|
+
* d.content = ""; // clearing = setting empty on a full object
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
async edit(documentId, fn) {
|
|
83
|
+
const fields = await this.currentFields(documentId);
|
|
84
|
+
await fn(fields);
|
|
85
|
+
return this.putFields(documentId, fields);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Fetches the document and derives its full writable state.
|
|
89
|
+
*
|
|
90
|
+
* Every value here is resent in the full-replace PUT, so every value is
|
|
91
|
+
* validated before it is read. `?? ""` coalesces only `null` and
|
|
92
|
+
* `undefined`, leaving corruption wide open: `false`, `0`, `[]`, `{}`, `42`,
|
|
93
|
+
* `true` and friends would all be forwarded **verbatim** and written to the
|
|
94
|
+
* document on a call that never mentioned the field. Nothing below this
|
|
95
|
+
* rejects them — `schema.d.ts` is erased at build time, so `Document` is a
|
|
96
|
+
* compile-time claim about runtime data. See `merge-safe.ts` and #576.
|
|
97
|
+
*
|
|
98
|
+
* The two writable fields read differently because the spec models them
|
|
99
|
+
* differently: `title` is `@required`, so absent or null is malformed;
|
|
100
|
+
* `content` is optional, so absent or null is a genuinely empty body.
|
|
101
|
+
*/
|
|
102
|
+
async currentFields(documentId) {
|
|
103
|
+
const current = requireRecord(await this.get(documentId), {
|
|
104
|
+
record: "Document",
|
|
105
|
+
operation: "GetDocument",
|
|
106
|
+
escape: ESCAPE,
|
|
107
|
+
});
|
|
108
|
+
const opts = { record: "Document", escape: ESCAPE };
|
|
109
|
+
return {
|
|
110
|
+
title: requiredWritableString(current, "title", opts),
|
|
111
|
+
content: writableString(current, "content", opts),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* PUTs the full writable state via `replace`. Both fields are always sent,
|
|
116
|
+
* empties included: on a full-replace endpoint `""` is how a clear is
|
|
117
|
+
* expressed — never JSON null (SPEC §18 body compaction), and never by
|
|
118
|
+
* omission, which would leave the field to the server's own clear-by-default
|
|
119
|
+
* and read as an accident rather than an intent.
|
|
120
|
+
*/
|
|
121
|
+
putFields(documentId, f) {
|
|
122
|
+
return this.replace(documentId, { title: f.title, content: f.content });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=documents-extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents-extensions.js","sourceRoot":"","sources":["../../src/services/documents-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAExF,mFAAmF;AACnF,MAAM,MAAM,GAAG,WAAW,CAAC;AA2B3B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,gBAAiB,SAAQ,yBAAyB;IAC7D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,GAA0B;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACtD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,EAA+C;QAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACK,KAAK,CAAC,aAAa,CAAC,UAAkB;QAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACxD,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACpD,OAAO;YACL,KAAK,EAAE,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YACrD,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;SAClD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,SAAS,CAAC,UAAkB,EAAE,CAAiB;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF"}
|