@37signals/basecamp 0.7.3 → 0.8.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 +80 -1
- package/dist/client.d.ts +4 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +30 -23
- package/dist/client.js.map +1 -1
- package/dist/download.d.ts.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -1
- package/dist/errors.js.map +1 -1
- package/dist/generated/metadata.d.ts +32 -0
- package/dist/generated/metadata.d.ts.map +1 -0
- package/dist/generated/metadata.js +2670 -0
- package/dist/generated/metadata.js.map +1 -0
- package/dist/generated/{metadata.json → metadata.ts} +98 -45
- package/dist/generated/openapi-stripped.json +713 -440
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +6 -5
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +6 -5
- package/dist/generated/schema.d.ts +510 -297
- package/dist/generated/services/campfires.d.ts +22 -1
- package/dist/generated/services/campfires.d.ts.map +1 -1
- package/dist/generated/services/campfires.js +33 -1
- package/dist/generated/services/campfires.js.map +1 -1
- package/dist/generated/services/campfires.ts +46 -1
- package/dist/generated/services/card-columns.d.ts +31 -28
- package/dist/generated/services/card-columns.d.ts.map +1 -1
- package/dist/generated/services/card-columns.js +54 -51
- package/dist/generated/services/card-columns.js.map +1 -1
- package/dist/generated/services/card-columns.ts +62 -59
- package/dist/generated/services/index.d.ts +2 -2
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +2 -2
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +2 -2
- package/dist/generated/services/reports.d.ts +1 -1
- package/dist/generated/services/reports.js +1 -1
- package/dist/generated/services/reports.ts +1 -1
- package/dist/generated/services/todos.d.ts +8 -8
- package/dist/generated/services/todos.d.ts.map +1 -1
- package/dist/generated/services/todos.js +9 -6
- package/dist/generated/services/todos.js.map +1 -1
- package/dist/generated/services/todos.ts +12 -9
- package/dist/generated/services/tools.d.ts +11 -10
- package/dist/generated/services/tools.d.ts.map +1 -1
- package/dist/generated/services/tools.js +16 -8
- package/dist/generated/services/tools.js.map +1 -1
- package/dist/generated/services/tools.ts +21 -13
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/oauth/discovery.d.ts +105 -23
- package/dist/oauth/discovery.d.ts.map +1 -1
- package/dist/oauth/discovery.js +453 -61
- package/dist/oauth/discovery.js.map +1 -1
- package/dist/oauth/index.d.ts +2 -2
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +1 -1
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/interactive-login.d.ts +20 -2
- package/dist/oauth/interactive-login.d.ts.map +1 -1
- package/dist/oauth/interactive-login.js +58 -4
- package/dist/oauth/interactive-login.js.map +1 -1
- package/dist/oauth/types.d.ts +54 -2
- package/dist/oauth/types.d.ts.map +1 -1
- package/dist/security.d.ts +22 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +56 -1
- package/dist/security.js.map +1 -1
- package/dist/services/authorization.d.ts.map +1 -1
- package/dist/services/authorization.js +3 -0
- package/dist/services/authorization.js.map +1 -1
- package/dist/services/base.d.ts.map +1 -1
- package/dist/services/base.js +1 -3
- package/dist/services/base.js.map +1 -1
- package/dist/services/todos-extensions.d.ts +118 -0
- package/dist/services/todos-extensions.d.ts.map +1 -0
- package/dist/services/todos-extensions.js +113 -0
- package/dist/services/todos-extensions.js.map +1 -0
- package/dist/services/uploads-extensions.d.ts +33 -0
- package/dist/services/uploads-extensions.d.ts.map +1 -0
- package/dist/services/uploads-extensions.js +48 -0
- package/dist/services/uploads-extensions.js.map +1 -0
- package/package.json +7 -4
- package/src/generated/{metadata.json → metadata.ts} +98 -45
- package/src/generated/openapi-stripped.json +713 -440
- package/src/generated/path-mapping.ts +6 -5
- package/src/generated/schema.d.ts +510 -297
- package/src/generated/services/campfires.ts +46 -1
- package/src/generated/services/card-columns.ts +62 -59
- package/src/generated/services/index.ts +2 -2
- package/src/generated/services/reports.ts +1 -1
- package/src/generated/services/todos.ts +12 -9
- package/src/generated/services/tools.ts +21 -13
|
@@ -16,12 +16,12 @@ import { Errors } from "../../errors.js";
|
|
|
16
16
|
export type Tool = components["schemas"]["Tool"];
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Request parameters for
|
|
19
|
+
* Request parameters for create.
|
|
20
20
|
*/
|
|
21
|
-
export interface
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
/** Title */
|
|
21
|
+
export interface CreateToolRequest {
|
|
22
|
+
/** Tool type to add to the project dock. Values: Chat::Transcript|Inbox|Kanban::Board|Message::Board|Questionnaire|Schedule|Todoset|Vault. */
|
|
23
|
+
toolType: string;
|
|
24
|
+
/** Title for the new tool. When omitted, Basecamp assigns the next available default title for the tool type. */
|
|
25
25
|
title?: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -52,28 +52,36 @@ export interface RepositionToolRequest {
|
|
|
52
52
|
export class ToolsService extends BaseService {
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @param
|
|
55
|
+
* Create a tool in a project dock
|
|
56
|
+
* @param bucketId - The bucket ID
|
|
57
|
+
* @param req - Tool creation parameters
|
|
57
58
|
* @returns The Tool
|
|
58
|
-
* @throws {BasecampError} If
|
|
59
|
+
* @throws {BasecampError} If required fields are missing or invalid
|
|
59
60
|
*
|
|
60
61
|
* @example
|
|
61
62
|
* ```ts
|
|
62
|
-
* const result = await client.tools.
|
|
63
|
+
* const result = await client.tools.create(123, { toolType: "example" });
|
|
63
64
|
* ```
|
|
64
65
|
*/
|
|
65
|
-
async
|
|
66
|
+
async create(bucketId: number, req: CreateToolRequest): Promise<Tool> {
|
|
67
|
+
if (!req.toolType) {
|
|
68
|
+
throw Errors.validation("Tool type is required");
|
|
69
|
+
}
|
|
66
70
|
const response = await this.request(
|
|
67
71
|
{
|
|
68
72
|
service: "Tools",
|
|
69
|
-
operation: "
|
|
73
|
+
operation: "CreateTool",
|
|
70
74
|
resourceType: "tool",
|
|
71
75
|
isMutation: true,
|
|
76
|
+
resourceId: bucketId,
|
|
72
77
|
},
|
|
73
78
|
() =>
|
|
74
|
-
this.client.POST("/dock/tools.json", {
|
|
79
|
+
this.client.POST("/buckets/{bucketId}/dock/tools.json", {
|
|
80
|
+
params: {
|
|
81
|
+
path: { bucketId },
|
|
82
|
+
},
|
|
75
83
|
body: {
|
|
76
|
-
|
|
84
|
+
tool_type: req.toolType,
|
|
77
85
|
title: req.title,
|
|
78
86
|
},
|
|
79
87
|
})
|
package/dist/index.d.ts
CHANGED
|
@@ -40,7 +40,8 @@ export { chainHooks, consoleHooks, noopHooks, safeInvoke, type BasecampHooks, ty
|
|
|
40
40
|
export { BaseService, type FetchResponse } from "./services/base.js";
|
|
41
41
|
export { AuthorizationService, type Identity, type AuthorizedAccount, type AuthorizationInfo, type GetAuthorizationInfoOptions, } from "./services/authorization.js";
|
|
42
42
|
export { ProjectsService, type Project, type ListProjectOptions, type CreateProjectRequest, type UpdateProjectRequest, } from "./generated/services/projects.js";
|
|
43
|
-
export { TodosService, type
|
|
43
|
+
export { TodosService, type UpdateTodoRequest, type TodoFields, } from "./services/todos-extensions.js";
|
|
44
|
+
export { type Todo, type ListTodoOptions, type CreateTodoRequest, type ReplaceTodoRequest, type RepositionTodoRequest, } from "./generated/services/todos.js";
|
|
44
45
|
export { TodolistsService, type Todolist, type ListTodolistOptions, type CreateTodolistRequest, type UpdateTodolistRequest, } from "./generated/services/todolists.js";
|
|
45
46
|
export { TodosetsService, type Todoset, } from "./generated/services/todosets.js";
|
|
46
47
|
export { HillChartsService, type UpdateSettingsHillChartRequest, } from "./generated/services/hill-charts.js";
|
|
@@ -70,7 +71,8 @@ export { EventsService, type Event, } from "./generated/services/events.js";
|
|
|
70
71
|
export { AttachmentsService, } from "./generated/services/attachments.js";
|
|
71
72
|
export { VaultsService, type Vault, type CreateVaultRequest, type UpdateVaultRequest, } from "./generated/services/vaults.js";
|
|
72
73
|
export { DocumentsService, type Document, type CreateDocumentRequest, type UpdateDocumentRequest, } from "./generated/services/documents.js";
|
|
73
|
-
export { UploadsService
|
|
74
|
+
export { UploadsService } from "./services/uploads-extensions.js";
|
|
75
|
+
export { type Upload, type CreateUploadRequest, type UpdateUploadRequest, } from "./generated/services/uploads.js";
|
|
74
76
|
export { SchedulesService, type Schedule, type ScheduleEntry, type CreateEntryScheduleRequest, type UpdateEntryScheduleRequest, type UpdateSettingsScheduleRequest, type ListEntriesScheduleOptions, } from "./generated/services/schedules.js";
|
|
75
77
|
export { TimesheetsService, type ForRecordingTimesheetOptions, type ForProjectTimesheetOptions, type ReportTimesheetOptions, } from "./generated/services/timesheets.js";
|
|
76
78
|
export { TimelineService, } from "./generated/services/timeline.js";
|
|
@@ -88,8 +90,8 @@ export { GaugesService, } from "./generated/services/gauges.js";
|
|
|
88
90
|
export { MyAssignmentsService, } from "./generated/services/my-assignments.js";
|
|
89
91
|
export { MyNotificationsService, } from "./generated/services/my-notifications.js";
|
|
90
92
|
export { otelHooks, type OtelHooksOptions, } from "./hooks/otel.js";
|
|
91
|
-
export type { OAuthConfig, OAuthToken, ExchangeRequest, RefreshRequest, RawTokenResponse, OAuthErrorResponse, } from "./oauth/types.js";
|
|
92
|
-
export { discover, discoverLaunchpad, LAUNCHPAD_BASE_URL, type DiscoverOptions, } from "./oauth/discovery.js";
|
|
93
|
+
export type { OAuthConfig, OAuthToken, ExchangeRequest, RefreshRequest, RawTokenResponse, OAuthErrorResponse, ProtectedResourceMetadata, FallbackReason, DiscoverySelectionErrorReason, DiscoverFromResourceResult, } from "./oauth/types.js";
|
|
94
|
+
export { discover, discoverProtectedResource, discoverFromResource, discoverLaunchpad, requireOriginRoot, DiscoverySelectionError, LAUNCHPAD_BASE_URL, type DiscoverOptions, type DiscoverFromResourceOptions, } from "./oauth/discovery.js";
|
|
93
95
|
export { exchangeCode, refreshToken, isTokenExpired, type TokenOptions, } from "./oauth/exchange.js";
|
|
94
96
|
export { generatePKCE, generateState, type PKCE, } from "./oauth/pkce.js";
|
|
95
97
|
export { redactHeaders, redactHeadersRecord, } from "./security.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EACL,oBAAoB,EACpB,OAAO,EACP,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAG/E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EACL,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,KAAK,SAAS,EACd,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EACL,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,YAAY,EACZ,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -53,7 +53,7 @@ export { BaseService } from "./services/base.js";
|
|
|
53
53
|
export { AuthorizationService, } from "./services/authorization.js";
|
|
54
54
|
// Core services - generated
|
|
55
55
|
export { ProjectsService, } from "./generated/services/projects.js";
|
|
56
|
-
export { TodosService, } from "./
|
|
56
|
+
export { TodosService, } from "./services/todos-extensions.js";
|
|
57
57
|
export { TodolistsService, } from "./generated/services/todolists.js";
|
|
58
58
|
export { TodosetsService, } from "./generated/services/todosets.js";
|
|
59
59
|
export { HillChartsService, } from "./generated/services/hill-charts.js";
|
|
@@ -92,7 +92,7 @@ export { EventsService, } from "./generated/services/events.js";
|
|
|
92
92
|
export { AttachmentsService, } from "./generated/services/attachments.js";
|
|
93
93
|
export { VaultsService, } from "./generated/services/vaults.js";
|
|
94
94
|
export { DocumentsService, } from "./generated/services/documents.js";
|
|
95
|
-
export { UploadsService
|
|
95
|
+
export { UploadsService } from "./services/uploads-extensions.js";
|
|
96
96
|
// Schedule & Time services - generated
|
|
97
97
|
export { SchedulesService, } from "./generated/services/schedules.js";
|
|
98
98
|
export { TimesheetsService, } from "./generated/services/timesheets.js";
|
|
@@ -124,7 +124,7 @@ export { MyNotificationsService, } from "./generated/services/my-notifications.j
|
|
|
124
124
|
// OpenTelemetry hooks
|
|
125
125
|
export { otelHooks, } from "./hooks/otel.js";
|
|
126
126
|
// OAuth functions
|
|
127
|
-
export { discover, discoverLaunchpad, LAUNCHPAD_BASE_URL, } from "./oauth/discovery.js";
|
|
127
|
+
export { discover, discoverProtectedResource, discoverFromResource, discoverLaunchpad, requireOriginRoot, DiscoverySelectionError, LAUNCHPAD_BASE_URL, } from "./oauth/discovery.js";
|
|
128
128
|
export { exchangeCode, refreshToken, isTokenExpired, } from "./oauth/exchange.js";
|
|
129
129
|
// PKCE utilities
|
|
130
130
|
export { generatePKCE, generateState, } from "./oauth/pkce.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,sBAAsB;AACtB,OAAO,EACL,oBAAoB,EACpB,OAAO,EACP,WAAW,GAKZ,MAAM,aAAa,CAAC;AAErB,4BAA4B;AAC5B,OAAO,EAAqB,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/E,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD,iCAAiC;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAyC,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,WAAW;AACX,OAAO,EAAuB,eAAe,EAAE,MAAM,eAAe,CAAC;AAErE,SAAS;AACT,OAAO,EACL,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,WAAW,GAGZ,MAAM,aAAa,CAAC;AAErB,QAAQ;AACR,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,GAOX,MAAM,YAAY,CAAC;AAEpB,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;AAEhF,6DAA6D;AAC7D,OAAO,EAAE,WAAW,EAAsB,MAAM,oBAAoB,CAAC;AAErE,yEAAyE;AACzE,OAAO,EACL,oBAAoB,GAKrB,MAAM,6BAA6B,CAAC;AAErC,4BAA4B;AAC5B,OAAO,EACL,eAAe,GAKhB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OAuth 2.0 discovery for Basecamp SDK.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Two composable operations plus an orchestrator (SPEC.md §16, communique §2/§3):
|
|
5
|
+
* - discover(issuerURL) — RFC 8414 AS metadata + issuer binding
|
|
6
|
+
* - discoverProtectedResource(origin) — RFC 9728 resource metadata
|
|
7
|
+
* - discoverFromResource(origin, opts) — resource-first selection + fallback
|
|
8
|
+
*
|
|
9
|
+
* All fetches are SSRF-hardened: HTTPS-only origins (localhost exempt), origin
|
|
10
|
+
* parsed/validated with the platform URL parser before any socket opens,
|
|
11
|
+
* redirects suppressed, timeouts bounded, and bodies read under a genuine
|
|
12
|
+
* bounded cap that aborts before the whole oversized body is buffered.
|
|
5
13
|
*/
|
|
6
|
-
import
|
|
14
|
+
import { BasecampError } from "../errors.js";
|
|
15
|
+
import type { OAuthConfig, ProtectedResourceMetadata, DiscoverySelectionErrorReason, DiscoverFromResourceResult } from "./types.js";
|
|
7
16
|
/**
|
|
8
17
|
* Options for OAuth discovery.
|
|
9
18
|
*/
|
|
@@ -12,43 +21,116 @@ export interface DiscoverOptions {
|
|
|
12
21
|
fetch?: typeof globalThis.fetch;
|
|
13
22
|
/** Request timeout in milliseconds (default: 10000) */
|
|
14
23
|
timeoutMs?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Maximum discovery response body size in bytes (default: 1 MiB). Must be a
|
|
26
|
+
* finite, non-negative number; Infinity/NaN/negative values are ignored and
|
|
27
|
+
* the default cap applies (the bound cannot be disabled).
|
|
28
|
+
*/
|
|
29
|
+
maxBodyBytes?: number;
|
|
15
30
|
}
|
|
16
31
|
/**
|
|
17
|
-
*
|
|
32
|
+
* Options for {@link discoverFromResource}.
|
|
33
|
+
*/
|
|
34
|
+
export interface DiscoverFromResourceOptions extends DiscoverOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Explicit, authoritative issuer selection. When provided, the advertised
|
|
37
|
+
* member equal by code-point is selected; if none matches, discovery raises
|
|
38
|
+
* `expected_issuer_unavailable` (never falls back). Omit to use the
|
|
39
|
+
* Basecamp-profile exclusion heuristic.
|
|
40
|
+
*/
|
|
41
|
+
expectedIssuer?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Hard resource-first selection/validation failure. Thrown — never returned as a
|
|
45
|
+
* fallback — so no consumer can convert it into a Launchpad request.
|
|
46
|
+
*/
|
|
47
|
+
export declare class DiscoverySelectionError extends BasecampError {
|
|
48
|
+
readonly reason: DiscoverySelectionErrorReason;
|
|
49
|
+
constructor(reason: DiscoverySelectionErrorReason, message: string, options?: {
|
|
50
|
+
cause?: Error;
|
|
51
|
+
httpStatus?: number;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Default Basecamp/Launchpad OAuth server URL.
|
|
56
|
+
*/
|
|
57
|
+
export declare const LAUNCHPAD_BASE_URL = "https://launchpad.37signals.com";
|
|
58
|
+
/**
|
|
59
|
+
* Parses a caller- or metadata-supplied origin and enforces the origin-root
|
|
60
|
+
* profile: https (or http+localhost), host present, optional valid port, path
|
|
61
|
+
* empty or exactly "/", and no query/fragment/userinfo. Uses the platform URL
|
|
62
|
+
* parser (never a regex) so bracketed IPv6 and ports agree with the host the
|
|
63
|
+
* client actually dials.
|
|
64
|
+
*
|
|
65
|
+
* Throws `BasecampError("usage")` on violation — a bad *caller* origin is a
|
|
66
|
+
* usage error. Callers validating an *advertised* origin catch and reclassify.
|
|
67
|
+
*
|
|
68
|
+
* @returns the normalized origin (scheme://host[:port], no trailing slash)
|
|
69
|
+
*/
|
|
70
|
+
export declare function requireOriginRoot(raw: string, label?: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* True when an issuer string is a valid origin root equal to Launchpad's.
|
|
18
73
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
74
|
+
* The comparison runs both sides through {@link requireOriginRoot}, so an
|
|
75
|
+
* advertised look-alike that is *not* a clean origin root — e.g.
|
|
76
|
+
* `https://launchpad.37signals.com/path` (path), userinfo, or a query — is not
|
|
77
|
+
* treated as Launchpad. It stays a non-Launchpad candidate and later fails hard
|
|
78
|
+
* (`ambiguous_issuers` / `invalid_issuer_origin`) rather than being silently
|
|
79
|
+
* excluded from selection. A trailing-slash-only origin root still matches
|
|
80
|
+
* because `requireOriginRoot` normalizes it away.
|
|
21
81
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
82
|
+
* Exported so the login orchestrator derives the legacy-token decision from the
|
|
83
|
+
* same predicate the selection heuristic uses.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isLaunchpadIssuer(issuer: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Reads a Response body under a bounded, streaming cap. Aborts (cancels the
|
|
88
|
+
* stream) the moment the accumulated size exceeds `maxBytes`, so an oversized
|
|
89
|
+
* body is never fully buffered — real memory bounding, not a post-hoc check.
|
|
90
|
+
*
|
|
91
|
+
* Exported for reuse by the device-flow transport (same bounding, different
|
|
92
|
+
* `label` in the error message); not re-exported from the package index.
|
|
93
|
+
*/
|
|
94
|
+
export declare function readBodyBounded(response: Response, maxBytes: number, label?: string): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Discovers OAuth 2.0 Authorization Server Metadata (RFC 8414) from
|
|
97
|
+
* `{issuerURL}/.well-known/oauth-authorization-server`, and binds it: the
|
|
98
|
+
* returned `issuer` must equal the requested issuer by code-point (no
|
|
99
|
+
* normalization beyond origin-root parsing). `token_endpoint` is required;
|
|
100
|
+
* `authorization_endpoint` is optional (device-only servers omit it).
|
|
101
|
+
*
|
|
102
|
+
* @param baseUrl - The OAuth server's issuer origin (e.g. "https://launchpad.37signals.com")
|
|
103
|
+
* @throws BasecampError("usage") on a malformed origin, api_error on invalid metadata
|
|
26
104
|
*
|
|
27
105
|
* @example
|
|
28
106
|
* ```ts
|
|
29
107
|
* const config = await discover("https://launchpad.37signals.com");
|
|
30
108
|
* console.log(config.tokenEndpoint);
|
|
31
|
-
* // => "https://launchpad.37signals.com/authorization/token"
|
|
32
109
|
* ```
|
|
33
110
|
*/
|
|
34
111
|
export declare function discover(baseUrl: string, options?: DiscoverOptions): Promise<OAuthConfig>;
|
|
35
112
|
/**
|
|
36
|
-
*
|
|
113
|
+
* Discovers RFC 9728 protected-resource metadata from
|
|
114
|
+
* `{resourceOrigin}/.well-known/oauth-protected-resource`. `resource` is
|
|
115
|
+
* required and must equal the requested origin by code-point.
|
|
116
|
+
* `authorization_servers` is preserved distinctly as absent vs `[]`.
|
|
117
|
+
*
|
|
118
|
+
* @throws BasecampError("usage") on a malformed caller origin, api_error on
|
|
119
|
+
* invalid metadata
|
|
37
120
|
*/
|
|
38
|
-
export declare
|
|
121
|
+
export declare function discoverProtectedResource(resourceOrigin: string, options?: DiscoverOptions): Promise<ProtectedResourceMetadata>;
|
|
39
122
|
/**
|
|
40
|
-
*
|
|
123
|
+
* Resource-first discovery orchestrator (SPEC.md §16). Composes RFC 9728 + RFC
|
|
124
|
+
* 8414 and applies the stage-sensitive fallback state machine.
|
|
41
125
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* @
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
* // Use config.authorizationEndpoint to start OAuth flow
|
|
51
|
-
* ```
|
|
126
|
+
* Returns `{ kind: "selected", config, issuer }` or `{ kind: "fallback", reason }`
|
|
127
|
+
* where `reason ∈ {resource_discovery_failed, no_as_advertised}`. Every hard
|
|
128
|
+
* failure throws {@link DiscoverySelectionError} — callers MUST NOT convert a
|
|
129
|
+
* throw into a Launchpad request.
|
|
130
|
+
*/
|
|
131
|
+
export declare function discoverFromResource(resourceOrigin: string, options?: DiscoverFromResourceOptions): Promise<DiscoverFromResourceResult>;
|
|
132
|
+
/**
|
|
133
|
+
* Discovers OAuth configuration from Basecamp's Launchpad server.
|
|
52
134
|
*/
|
|
53
135
|
export declare function discoverLaunchpad(options?: DiscoverOptions): Promise<OAuthConfig>;
|
|
54
136
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/oauth/discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/oauth/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAEnE,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EAEzB,6BAA6B,EAC7B,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAwCpB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,aAAa;IACxD,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;gBAG7C,MAAM,EAAE,6BAA6B,EACrC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAcnD;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,MAAM,CA6EvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAoB,GACxB,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAuED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAKtB;AAmHD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,yBAAyB,CAAC,CA0CpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,0BAA0B,CAAC,CA4ErC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAEtB"}
|