@knpkv/atlassian-common 1.2.0 → 1.4.1
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/CHANGELOG.md +79 -0
- package/README.md +6 -0
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Hash.d.ts.map +1 -1
- package/dist/ast/Document.d.ts +3 -19
- package/dist/ast/Document.d.ts.map +1 -1
- package/dist/ast/Document.js +4 -3
- package/dist/ast/Document.js.map +1 -1
- package/dist/ast/MacroNode.d.ts +3 -3
- package/dist/attachments.d.ts.map +1 -1
- package/dist/attachments.js +2 -6
- package/dist/attachments.js.map +1 -1
- package/dist/auth/OAuthEndpoints.d.ts +23 -0
- package/dist/auth/OAuthEndpoints.d.ts.map +1 -1
- package/dist/auth/OAuthEndpoints.js +36 -0
- package/dist/auth/OAuthEndpoints.js.map +1 -1
- package/dist/auth/OAuthErrors.d.ts +22 -0
- package/dist/auth/OAuthErrors.d.ts.map +1 -1
- package/dist/auth/OAuthErrors.js +1 -1
- package/dist/auth/OAuthErrors.js.map +1 -1
- package/dist/auth/OAuthOperations.d.ts +15 -1
- package/dist/auth/OAuthOperations.d.ts.map +1 -1
- package/dist/auth/OAuthOperations.js +23 -4
- package/dist/auth/OAuthOperations.js.map +1 -1
- package/dist/auth/OAuthResponseSchemas.d.ts +11 -0
- package/dist/auth/OAuthResponseSchemas.d.ts.map +1 -1
- package/dist/auth/OAuthResponseSchemas.js +11 -0
- package/dist/auth/OAuthResponseSchemas.js.map +1 -1
- package/dist/auth/index.d.ts +2 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +5 -3
- package/dist/auth/index.js.map +1 -1
- package/dist/bin.js +2 -2
- package/dist/bin.js.map +1 -1
- package/dist/config/AuthProfiles.d.ts +140 -175
- package/dist/config/AuthProfiles.d.ts.map +1 -1
- package/dist/config/AuthProfiles.js +2 -1
- package/dist/config/AuthProfiles.js.map +1 -1
- package/dist/config/ConfigPaths.d.ts.map +1 -1
- package/dist/config/ProfileManager.d.ts +15 -2
- package/dist/config/ProfileManager.d.ts.map +1 -1
- package/dist/config/ProfileManager.js +46 -6
- package/dist/config/ProfileManager.js.map +1 -1
- package/dist/config/TokenStorage.d.ts +8 -0
- package/dist/config/TokenStorage.d.ts.map +1 -1
- package/dist/config/TokenStorage.js +17 -7
- package/dist/config/TokenStorage.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/internal/legacyWallClock.d.ts +11 -0
- package/dist/internal/legacyWallClock.d.ts.map +1 -0
- package/dist/internal/legacyWallClock.js +11 -0
- package/dist/internal/legacyWallClock.js.map +1 -0
- package/dist/serializers/MarkdownSerializer.d.ts.map +1 -1
- package/dist/serializers/MarkdownSerializer.js.map +1 -1
- package/package.json +7 -7
- package/src/ast/Document.ts +5 -4
- package/src/attachments.ts +2 -1
- package/src/auth/OAuthEndpoints.ts +38 -0
- package/src/auth/OAuthErrors.ts +23 -1
- package/src/auth/OAuthOperations.ts +44 -6
- package/src/auth/OAuthResponseSchemas.ts +12 -0
- package/src/auth/index.ts +6 -1
- package/src/bin.ts +4 -5
- package/src/config/AuthProfiles.ts +4 -2
- package/src/config/ProfileManager.ts +56 -7
- package/src/config/TokenStorage.ts +24 -8
- package/src/config/index.ts +2 -0
- package/src/internal/legacyWallClock.ts +10 -0
- package/test/ApiUpdateWorkflows.test.ts +80 -0
- package/test/OAuthEndpoints.test.ts +23 -0
- package/test/ProfileManager.test.ts +61 -0
- package/test/PublicExports.test.ts +16 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,84 @@
|
|
|
1
1
|
# @knpkv/atlassian-common
|
|
2
2
|
|
|
3
|
+
## 1.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#361](https://github.com/knpkv/npm/pull/361) [`676419e`](https://github.com/knpkv/npm/commit/676419e39c395dd4cfea6d9ffaee7d002a3f75e2) Thanks [@konopkov](https://github.com/konopkov)! - Upgrade the workspace to Effect 4.0.0-rc.109, pin the vendored Effect reference to that exact upstream release, guard source/package alignment, and bound Control Center test concurrency for reliable CI execution.
|
|
8
|
+
|
|
9
|
+
## 1.4.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#358](https://github.com/knpkv/npm/pull/358) [`503d345`](https://github.com/knpkv/npm/commit/503d3459b419a3c9fd366715d5916e41086f493d) Thanks [@konopkov](https://github.com/konopkov)! - Add `OAuthError.status` and `OAuthError.errorCode`, and make
|
|
14
|
+
`refreshActiveProfiles`' token rotation atomic and bounded.
|
|
15
|
+
|
|
16
|
+
`OAuthError` now carries the HTTP `status` when the provider actually answered,
|
|
17
|
+
plus the OAuth 2.0 `errorCode` from the response body (RFC 6749 §5.2) when it is
|
|
18
|
+
parseable. Both are absent for transport failures, timeouts and interruptions —
|
|
19
|
+
cases where no response arrived and nothing can be concluded about the
|
|
20
|
+
credential. `refreshToken` populates them on a non-2xx response.
|
|
21
|
+
|
|
22
|
+
They exist so callers can tell "the provider rejected this token" from "we never
|
|
23
|
+
found out", which is the difference between correctly forcing a re-login and
|
|
24
|
+
destroying a working credential. Status alone is too coarse: `400` covers
|
|
25
|
+
`invalid_client` and `invalid_request`, which indict the request rather than the
|
|
26
|
+
token, so `@knpkv/jira-cli` and `@knpkv/confluence-to-markdown` delete only on
|
|
27
|
+
`400 invalid_grant` or a `403` revocation, leaving `429`, `408`, middlebox
|
|
28
|
+
replies and unparseable bodies alone.
|
|
29
|
+
|
|
30
|
+
`refreshActiveProfiles` performed the same rotate-then-persist sequence as
|
|
31
|
+
`@knpkv/jira-cli`'s `JiraAuth`: `refreshToken(...)` followed by a separate,
|
|
32
|
+
interruptible `saveProfileToken(...)`. Atlassian rotates refresh tokens, so an
|
|
33
|
+
interrupt between the two spends the stored credential without persisting its
|
|
34
|
+
replacement, and the next refresh fails — the user is silently logged out of
|
|
35
|
+
that profile. The grant and the persist now share one `Effect.uninterruptible`
|
|
36
|
+
region.
|
|
37
|
+
|
|
38
|
+
That region carries its own 30s deadline. An uninterruptible region with no
|
|
39
|
+
bound of its own absorbs SIGINT/SIGTERM entirely, since `runMain`'s handlers do
|
|
40
|
+
nothing but interrupt the main fiber, so `atlassian auth refresh` would have
|
|
41
|
+
stopped answering Ctrl-C against a stalled token endpoint. A deadline forked
|
|
42
|
+
inside the region is itself interruptible, so it does bound it.
|
|
43
|
+
|
|
44
|
+
Covered by a test asserting an interrupt mid-rotation still persists the
|
|
45
|
+
replacement token.
|
|
46
|
+
|
|
47
|
+
- [#366](https://github.com/knpkv/npm/pull/366) [`b08ca20`](https://github.com/knpkv/npm/commit/b08ca2004b3efcd72a695b44c72b56dae20afdfd) Thanks [@konopkov](https://github.com/konopkov)! - Add `confluence folder` and `confluence search`, so folders and content lookup no longer need the Confluence UI or a separate MCP client.
|
|
48
|
+
|
|
49
|
+
`folder get`, `folder children` and `folder create` cover the container the page commands cannot address — `/pages/{id}` 404s on a folder id and vice versa. `folder get` and `folder children` accept either `--folder-id` or `--url`, and a folder URL pasted into either is read for its id, because the URL bar is the only place a folder id is actually visible: it appears in no page's front-matter. `folder children` follows pagination and reports each child's type, since a folder holds mixed content (pages, sub-folders, whiteboards, databases, embeds).
|
|
50
|
+
|
|
51
|
+
`confluence search --cql "<query>"` runs a CQL query — the only way to find content by title or by parent, as there is no children-by-title endpoint. It sits at the top level rather than under `page` because CQL matches any content type.
|
|
52
|
+
|
|
53
|
+
Request the OAuth scopes these endpoints need: `read:folder:confluence`, `write:folder:confluence`, `read:hierarchical-content:confluence` (direct children) and `read:content-details:confluence` (CQL search). They are requested on every `confluence auth login`, so add them to the OAuth app **before** logging in again — Atlassian rejects an authorization request naming a scope the app does not enable, which makes `auth login` itself fail at the authorize step. Existing tokens keep working for page and attachment commands until then; `folder` and `search` fail with 401/403 until the re-login lands. The scopes are kept in a separate `CONFLUENCE_FOLDER_SCOPES` constant so control-center, which shares `CONFLUENCE_SCOPES` for its own sign-in, keeps requesting only what it uses.
|
|
54
|
+
|
|
55
|
+
Add `confluence auth manage`, which opens the Developer Console app list and prints the scopes to enable. It opens the list rather than the app itself because the console addresses an app by an id that is not the OAuth client id, and the client id is all this CLI stores. Both it and `auth create` derive the printed scopes from the constant `auth login` reads, so the setup instructions cannot drift from what login requests — the previous hardcoded list in `auth create` had already fallen behind the attachment scopes.
|
|
56
|
+
|
|
57
|
+
`folder` and `search` refuse a site mismatch rather than acting on the wrong site. Content ids are per-site, so a `--base-url` disagreeing with the URL, a `--parent` pasted from another site, and — under OAuth — a `--base-url` that is not the active profile's site are all rejected. The OAuth case is the one that bites: those requests route by the profile's cloud id and ignore `--base-url` entirely, so `folder create --base-url site-a` while signed in to site B would otherwise create the folder on site B with no warning.
|
|
58
|
+
|
|
59
|
+
Accept a folder's `createdAt` as epoch milliseconds. The v2 folder endpoints return a number there even though the upstream spec declares an ISO-8601 string and every other content type honours it — so before this, `folder get` and `folder create` failed to decode every real folder. The spec patch widens the generated schema to accept both shapes and the client normalizes to ISO-8601, so callers see one representation.
|
|
60
|
+
|
|
61
|
+
Patch the Confluence v2 spec so `FolderSingle.position`/`parentId`/`parentType` and `ChildrenResponse.childPosition` generate as nullable rather than `never`. The generator turns the upstream `{"type": "integer", "nullable": true}` shape into `never`, so a folder or child payload carrying any of these fields failed the generated decode before the response reached the caller — the same fix already applied to `Page`, `PageBulk` and `ChildPage`.
|
|
62
|
+
|
|
63
|
+
- [#370](https://github.com/knpkv/npm/pull/370) [`27d2ca1`](https://github.com/knpkv/npm/commit/27d2ca18b0c0b0f8a252d461c0aaf10eb92e9ffc) Thanks [@konopkov](https://github.com/konopkov)! - Enforce the complete anti-slop rule set with zero accepted diagnostics and update affected APIs and implementations to satisfy the required contracts.
|
|
64
|
+
|
|
65
|
+
### Patch Changes
|
|
66
|
+
|
|
67
|
+
- [#361](https://github.com/knpkv/npm/pull/361) [`676419e`](https://github.com/knpkv/npm/commit/676419e39c395dd4cfea6d9ffaee7d002a3f75e2) Thanks [@konopkov](https://github.com/konopkov)! - Update Effect and effect-qb, migrate schema-tagged errors to the current Effect API, and adopt the dialect-scoped SQLite function and type APIs introduced by effect-qb 0.22.
|
|
68
|
+
|
|
69
|
+
## 1.3.0
|
|
70
|
+
|
|
71
|
+
### Minor Changes
|
|
72
|
+
|
|
73
|
+
- [#343](https://github.com/knpkv/npm/pull/343) [`4def7db`](https://github.com/knpkv/npm/commit/4def7db2f400cf68218262994d67ed90a7154bf1) Thanks [@konopkov](https://github.com/konopkov)! - Align runtime ownership, cancellation, caching, time, failure handling, polling,
|
|
74
|
+
decoding, and executable entrypoints with Effect v4 idioms. Expose clock-injected
|
|
75
|
+
Atlassian token construction and expiry helpers, and enable workspace-wide
|
|
76
|
+
Effect diagnostics and prevention checks.
|
|
77
|
+
|
|
78
|
+
### Patch Changes
|
|
79
|
+
|
|
80
|
+
- [#339](https://github.com/knpkv/npm/pull/339) [`a9d5408`](https://github.com/knpkv/npm/commit/a9d54085f6fc25cde1d5b298f50cb6e06e2bc93f) Thanks [@konopkov](https://github.com/konopkov)! - Reconcile Control Center's Jira capability boundary with provider-enforced revision guarantees, expose the proposal-only Jira OAuth scope contract, and document the M5.6 release-gate evidence workflow.
|
|
81
|
+
|
|
3
82
|
## 1.2.0
|
|
4
83
|
|
|
5
84
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -60,6 +60,12 @@ const program = Effect.gen(function* () {
|
|
|
60
60
|
}).pipe(Effect.provide(NodeCrypto.layer))
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
`JIRA_SCOPES` is the broad legacy CLI set and includes Jira issue-mutation scopes. Control Center
|
|
64
|
+
defines its own least-privilege release-publication set: it adds `manage:jira-project` to the
|
|
65
|
+
read/identity scopes required for create-only project-version publication, but excludes
|
|
66
|
+
`write:jira-work` and `manage:jira-configuration`. Jira issue edits remain proposal-only in Control
|
|
67
|
+
Center and must not be presented as atomic Jira writes.
|
|
68
|
+
|
|
63
69
|
## Token And Profile Storage
|
|
64
70
|
|
|
65
71
|
Stores OAuth config, auth profiles, and the active token mirror in `~/.config/atlassian/<tool>/` with 0600 permissions.
|
package/dist/Brand.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brand.d.ts","sourceRoot":"","sources":["../src/Brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"Brand.d.ts","sourceRoot":"","sources":["../src/Brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,QAC1C,CAAC,WACE,MAAM;;;CAahB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,QAAQ,CAAC;;;CAYlE,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,MAAM;;;CAAsC,CAAA;AACzD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;CAAoD,CAAA;AACzE,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;CAAwD,CAAA;AAC7E,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;CAAsD,CAAA;AAC7E,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;CAAqD,CAAA;AAC7E,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA"}
|
package/dist/Hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../src/Hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAaxC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../src/Hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAaxC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,YAAa,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CACxE,CAAA;AAE3C;;;;GAIG;AACH,eAAO,MAAM,UAAU,WACb,UAAU,KACjB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAyB,CAAA;AAEjG;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,WAAW,KAAK,WAAW,KAAG,OAAkB,CAAA"}
|
package/dist/ast/Document.d.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Root AST node wrapping a sequence of {@link DocumentNode} children.
|
|
3
|
-
*
|
|
4
|
-
* **Mental model**
|
|
5
|
-
*
|
|
6
|
-
* - **Document = version + children**: The top-level container for parsed Atlassian content.
|
|
7
|
-
* `children` is a union of `BlockNode | MacroNode`.
|
|
8
|
-
* - **Raw source preservation**: Optional `rawSource` field enables lossless roundtripping.
|
|
9
|
-
*
|
|
10
|
-
* **Common tasks**
|
|
11
|
-
*
|
|
12
|
-
* - Construct a document: {@link makeDocument}
|
|
13
|
-
* - Type-guard check: {@link isDocument}
|
|
14
|
-
*
|
|
15
|
-
* @module
|
|
16
|
-
*/
|
|
17
1
|
import * as Schema from "effect/Schema";
|
|
18
2
|
import { type BlockNode as BlockNodeType } from "./BlockNode.js";
|
|
19
3
|
import { type MacroNode as MacroNodeType } from "./MacroNode.js";
|
|
@@ -54,7 +38,7 @@ export declare const DocumentNode: Schema.Union<readonly [Schema.Union<readonly
|
|
|
54
38
|
}>, typeof import("./BlockNode.js").UnsupportedBlock]>, Schema.Union<readonly [Schema.Struct<{
|
|
55
39
|
readonly _tag: Schema.Literal<"InfoPanel">;
|
|
56
40
|
readonly version: Schema.withConstructorDefault<Schema.Int>;
|
|
57
|
-
readonly panelType: Schema.Literals<readonly ("
|
|
41
|
+
readonly panelType: Schema.Literals<readonly ("error" | "info" | "note" | "panel" | "tip" | "warning")[]>;
|
|
58
42
|
readonly title: Schema.optional<Schema.String>;
|
|
59
43
|
readonly children: Schema.$Array<Schema.Union<readonly [typeof import("./BlockNode.js").Heading, typeof import("./BlockNode.js").Paragraph, typeof import("./BlockNode.js").CodeBlock, typeof import("./BlockNode.js").ThematicBreak, typeof import("./BlockNode.js").Image, typeof import("./BlockNode.js").Table, typeof import("./BlockNode.js").UnsupportedBlock]>>;
|
|
60
44
|
readonly rawSource: Schema.optional<Schema.String>;
|
|
@@ -148,7 +132,7 @@ export declare const Document: Schema.Struct<{
|
|
|
148
132
|
}>, typeof import("./BlockNode.js").UnsupportedBlock]>, Schema.Union<readonly [Schema.Struct<{
|
|
149
133
|
readonly _tag: Schema.Literal<"InfoPanel">;
|
|
150
134
|
readonly version: Schema.withConstructorDefault<Schema.Int>;
|
|
151
|
-
readonly panelType: Schema.Literals<readonly ("
|
|
135
|
+
readonly panelType: Schema.Literals<readonly ("error" | "info" | "note" | "panel" | "tip" | "warning")[]>;
|
|
152
136
|
readonly title: Schema.optional<Schema.String>;
|
|
153
137
|
readonly children: Schema.$Array<Schema.Union<readonly [typeof import("./BlockNode.js").Heading, typeof import("./BlockNode.js").Paragraph, typeof import("./BlockNode.js").CodeBlock, typeof import("./BlockNode.js").ThematicBreak, typeof import("./BlockNode.js").Image, typeof import("./BlockNode.js").Table, typeof import("./BlockNode.js").UnsupportedBlock]>>;
|
|
154
138
|
readonly rawSource: Schema.optional<Schema.String>;
|
|
@@ -209,5 +193,5 @@ export declare const makeDocument: (children: ReadonlyArray<DocumentNode>, rawSo
|
|
|
209
193
|
*
|
|
210
194
|
* @category Guards
|
|
211
195
|
*/
|
|
212
|
-
export declare const isDocument: (value:
|
|
196
|
+
export declare const isDocument: <UnparsedInput>(value: UnparsedInput) => value is UnparsedInput & Document;
|
|
213
197
|
//# sourceMappingURL=Document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../../src/ast/Document.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../../src/ast/Document.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAa,KAAK,SAAS,IAAI,aAAa,EAA4B,MAAM,gBAAgB,CAAA;AACrG,OAAO,EAAa,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE3E;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAuC,CAAA;AAEhE;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE1D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,aACb,aAAa,CAAC,YAAY,CAAC,cACzB,MAAM,KACjB,QAID,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,aAAa,SAAS,aAAa,KAAG,KAAK,IAAI,aAAa,GAAG,QAI3D,CAAA"}
|
package/dist/ast/Document.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
|
+
import * as Predicate from "effect/Predicate";
|
|
17
18
|
import * as Schema from "effect/Schema";
|
|
18
19
|
import { BlockNode, RawSource, SchemaVersion } from "./BlockNode.js";
|
|
19
20
|
import { MacroNode } from "./MacroNode.js";
|
|
@@ -66,15 +67,15 @@ export const Document = Schema.Struct({
|
|
|
66
67
|
export const makeDocument = (children, rawSource) => ({
|
|
67
68
|
version: 1,
|
|
68
69
|
children,
|
|
69
|
-
...(rawSource !== undefined
|
|
70
|
+
...((rawSource !== undefined) && { rawSource })
|
|
70
71
|
});
|
|
71
72
|
/**
|
|
72
73
|
* Check if a node is a Document.
|
|
73
74
|
*
|
|
74
75
|
* @category Guards
|
|
75
76
|
*/
|
|
76
|
-
export const isDocument = (value) =>
|
|
77
|
+
export const isDocument = (value) => Predicate.isObjectOrArray(value) &&
|
|
77
78
|
value !== null &&
|
|
78
79
|
"children" in value &&
|
|
79
|
-
Array.isArray(
|
|
80
|
+
Array.isArray(value.children);
|
|
80
81
|
//# sourceMappingURL=Document.js.map
|
package/dist/ast/Document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Document.js","sourceRoot":"","sources":["../../src/ast/Document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAmC,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACrG,OAAO,EAAE,SAAS,EAAmC,MAAM,gBAAgB,CAAA;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAShE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IACpC,SAAS,EAAE,SAAS;CACrB,CAAC,CAAA;AASF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAqC,EACrC,SAAkB,EACR,EAAE,CAAC,CAAC;IACd,OAAO,EAAE,CAAC;IACV,QAAQ;IACR,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"Document.js","sourceRoot":"","sources":["../../src/ast/Document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAmC,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACrG,OAAO,EAAE,SAAS,EAAmC,MAAM,gBAAgB,CAAA;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAShE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IACpC,SAAS,EAAE,SAAS;CACrB,CAAC,CAAA;AASF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAqC,EACrC,SAAkB,EACR,EAAE,CAAC,CAAC;IACd,OAAO,EAAE,CAAC;IACV,QAAQ;IACR,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;CAChD,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAgB,KAAoB,EAAqC,EAAE,CACnG,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC;IAChC,KAAK,KAAK,IAAI;IACd,UAAU,IAAI,KAAK;IACnB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA"}
|
package/dist/ast/MacroNode.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare const PanelTypes: ReadonlyArray<"info" | "warning" | "note" | "ti
|
|
|
10
10
|
*
|
|
11
11
|
* @category MacroNode
|
|
12
12
|
*/
|
|
13
|
-
export declare const PanelType: Schema.Literals<readonly ("
|
|
13
|
+
export declare const PanelType: Schema.Literals<readonly ("error" | "info" | "note" | "panel" | "tip" | "warning")[]>;
|
|
14
14
|
/**
|
|
15
15
|
* Type for panel type.
|
|
16
16
|
*
|
|
@@ -37,7 +37,7 @@ export type PanelType = Schema.Schema.Type<typeof PanelType>;
|
|
|
37
37
|
export declare const InfoPanel: Schema.Struct<{
|
|
38
38
|
readonly _tag: Schema.Literal<"InfoPanel">;
|
|
39
39
|
readonly version: Schema.withConstructorDefault<Schema.Int>;
|
|
40
|
-
readonly panelType: Schema.Literals<readonly ("
|
|
40
|
+
readonly panelType: Schema.Literals<readonly ("error" | "info" | "note" | "panel" | "tip" | "warning")[]>;
|
|
41
41
|
readonly title: Schema.optional<Schema.String>;
|
|
42
42
|
readonly children: Schema.$Array<Schema.Union<readonly [typeof import("./BlockNode.js").Heading, typeof import("./BlockNode.js").Paragraph, typeof import("./BlockNode.js").CodeBlock, typeof import("./BlockNode.js").ThematicBreak, typeof import("./BlockNode.js").Image, typeof import("./BlockNode.js").Table, typeof import("./BlockNode.js").UnsupportedBlock]>>;
|
|
43
43
|
readonly rawSource: Schema.optional<Schema.String>;
|
|
@@ -132,7 +132,7 @@ export type StatusMacro = Schema.Schema.Type<typeof StatusMacro>;
|
|
|
132
132
|
export declare const MacroNode: Schema.Union<readonly [Schema.Struct<{
|
|
133
133
|
readonly _tag: Schema.Literal<"InfoPanel">;
|
|
134
134
|
readonly version: Schema.withConstructorDefault<Schema.Int>;
|
|
135
|
-
readonly panelType: Schema.Literals<readonly ("
|
|
135
|
+
readonly panelType: Schema.Literals<readonly ("error" | "info" | "note" | "panel" | "tip" | "warning")[]>;
|
|
136
136
|
readonly title: Schema.optional<Schema.String>;
|
|
137
137
|
readonly children: Schema.$Array<Schema.Union<readonly [typeof import("./BlockNode.js").Heading, typeof import("./BlockNode.js").Paragraph, typeof import("./BlockNode.js").CodeBlock, typeof import("./BlockNode.js").ThematicBreak, typeof import("./BlockNode.js").Image, typeof import("./BlockNode.js").Table, typeof import("./BlockNode.js").UnsupportedBlock]>>;
|
|
138
138
|
readonly rawSource: Schema.optional<Schema.String>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAC1C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAID;;;GAGG;AACH,eAAO,MAAM,uBAAuB,eAAgB,sBAAsB,KAAG,OAG5E,CAAA;AAED,eAAO,MAAM,4BAA4B,cAC5B,MAAM,GAAG,IAAI,GAAG,SAAS,aACzB,MAAM,GAAG,IAAI,GAAG,SAAS,KACnC,MAAM,GAAG,IAGX,CAAA;AAED,eAAO,MAAM,wBAAwB,eACvB,wBAAwB,YAC1B;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,KACtG,MAOF,CAAA;AAED,eAAO,MAAM,4BAA4B,YAC9B,MAAM,mBACE,MAAM,sBACH,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,0BAA0B,KAAK,MAAM,CAAC,YAClE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,KACtD,gCAcF,CAAA"}
|
package/dist/attachments.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Shared attachment reference helpers for Atlassian Markdown surfaces.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
1
|
+
import * as Predicate from "effect/Predicate";
|
|
6
2
|
const IMAGE_EXTENSION_RE = /\.(avif|bmp|gif|jpe?g|png|svg|webp)$/i;
|
|
7
3
|
/**
|
|
8
4
|
* Returns true when an attachment should render as a Markdown image preview.
|
|
@@ -30,7 +26,7 @@ export const replaceAttachmentPlaceholder = (content, placeholderPath, renderedA
|
|
|
30
26
|
let replacements = 0;
|
|
31
27
|
const replaced = content.replace(placeholder, (match, label) => {
|
|
32
28
|
replacements++;
|
|
33
|
-
return
|
|
29
|
+
return Predicate.isString(renderedAttachment)
|
|
34
30
|
? renderedAttachment
|
|
35
31
|
: renderedAttachment({ isImage: match.startsWith("!"), label });
|
|
36
32
|
});
|
package/dist/attachments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,12 +51,35 @@ export declare const ME_URL = "https://api.atlassian.com/me";
|
|
|
51
51
|
* @category Scopes
|
|
52
52
|
*/
|
|
53
53
|
export declare const CONFLUENCE_SCOPES: string[];
|
|
54
|
+
/**
|
|
55
|
+
* Additional scopes for the CLI's folder and CQL-search commands.
|
|
56
|
+
*
|
|
57
|
+
* Deliberately *not* folded into {@link CONFLUENCE_SCOPES}: that constant is the
|
|
58
|
+
* shared page/attachment set, and control-center feeds it straight into its own
|
|
59
|
+
* `authorize` request. Adding folder authority there would widen every
|
|
60
|
+
* control-center sign-in — asking for a scope its documented OAuth app does not
|
|
61
|
+
* enable, and granting `write:folder:confluence` to a product that never creates
|
|
62
|
+
* folders. Union these in only where the folder/search commands actually live.
|
|
63
|
+
*
|
|
64
|
+
* @category Scopes
|
|
65
|
+
*/
|
|
66
|
+
export declare const CONFLUENCE_FOLDER_SCOPES: string[];
|
|
54
67
|
/**
|
|
55
68
|
* Jira scopes for OAuth2.
|
|
56
69
|
*
|
|
57
70
|
* @category Scopes
|
|
58
71
|
*/
|
|
59
72
|
export declare const JIRA_SCOPES: string[];
|
|
73
|
+
/**
|
|
74
|
+
* Legacy proposal-only Jira scopes retained for public API compatibility.
|
|
75
|
+
*
|
|
76
|
+
* Control Center owns a separate least-privilege release-publication scope set;
|
|
77
|
+
* {@link JIRA_SCOPES} remains the legacy write-capable set for other consumers,
|
|
78
|
+
* while proposal-only integrations may continue using this read-only set.
|
|
79
|
+
*
|
|
80
|
+
* @category Scopes
|
|
81
|
+
*/
|
|
82
|
+
export declare const JIRA_PROPOSAL_SCOPES: string[];
|
|
60
83
|
/**
|
|
61
84
|
* Options for building OAuth2 authorization URL.
|
|
62
85
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthEndpoints.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthEndpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAE1D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,yCAAyC,CAAA;AAE9D;;;;GAIG;AACH,eAAO,MAAM,SAAS,2CAA2C,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,UAAU,4CAA4C,CAAA;AAEnE;;;;GAIG;AACH,eAAO,MAAM,aAAa,+DAA+D,CAAA;AAEzF;;;;GAIG;AACH,eAAO,MAAM,MAAM,iCAAiC,CAAA;AAEpD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAQ7B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAQvB,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,oBAAoB;IACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,qDAAqD;IACrD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"OAuthEndpoints.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthEndpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAE1D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,yCAAyC,CAAA;AAE9D;;;;GAIG;AACH,eAAO,MAAM,SAAS,2CAA2C,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,UAAU,4CAA4C,CAAA;AAEnE;;;;GAIG;AACH,eAAO,MAAM,aAAa,+DAA+D,CAAA;AAEzF;;;;GAIG;AACH,eAAO,MAAM,MAAM,iCAAiC,CAAA;AAEpD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAQ7B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,UAQpC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAQvB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,UAKhC,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,oBAAoB;IACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,qDAAqD;IACrD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,YAAa,mBAAmB,KAAG,MAe3D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAKpG,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,aACrB,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAK/D,CAAA"}
|
|
@@ -59,6 +59,27 @@ export const CONFLUENCE_SCOPES = [
|
|
|
59
59
|
"read:me",
|
|
60
60
|
"offline_access"
|
|
61
61
|
];
|
|
62
|
+
/**
|
|
63
|
+
* Additional scopes for the CLI's folder and CQL-search commands.
|
|
64
|
+
*
|
|
65
|
+
* Deliberately *not* folded into {@link CONFLUENCE_SCOPES}: that constant is the
|
|
66
|
+
* shared page/attachment set, and control-center feeds it straight into its own
|
|
67
|
+
* `authorize` request. Adding folder authority there would widen every
|
|
68
|
+
* control-center sign-in — asking for a scope its documented OAuth app does not
|
|
69
|
+
* enable, and granting `write:folder:confluence` to a product that never creates
|
|
70
|
+
* folders. Union these in only where the folder/search commands actually live.
|
|
71
|
+
*
|
|
72
|
+
* @category Scopes
|
|
73
|
+
*/
|
|
74
|
+
export const CONFLUENCE_FOLDER_SCOPES = [
|
|
75
|
+
// Folders are a separate v2 content type: read/write for the folder itself,
|
|
76
|
+
// hierarchical-content for its direct children.
|
|
77
|
+
"read:folder:confluence",
|
|
78
|
+
"write:folder:confluence",
|
|
79
|
+
"read:hierarchical-content:confluence",
|
|
80
|
+
// CQL search (`GET /wiki/rest/api/search`).
|
|
81
|
+
"read:content-details:confluence"
|
|
82
|
+
];
|
|
62
83
|
/**
|
|
63
84
|
* Jira scopes for OAuth2.
|
|
64
85
|
*
|
|
@@ -73,6 +94,21 @@ export const JIRA_SCOPES = [
|
|
|
73
94
|
"read:me",
|
|
74
95
|
"offline_access"
|
|
75
96
|
];
|
|
97
|
+
/**
|
|
98
|
+
* Legacy proposal-only Jira scopes retained for public API compatibility.
|
|
99
|
+
*
|
|
100
|
+
* Control Center owns a separate least-privilege release-publication scope set;
|
|
101
|
+
* {@link JIRA_SCOPES} remains the legacy write-capable set for other consumers,
|
|
102
|
+
* while proposal-only integrations may continue using this read-only set.
|
|
103
|
+
*
|
|
104
|
+
* @category Scopes
|
|
105
|
+
*/
|
|
106
|
+
export const JIRA_PROPOSAL_SCOPES = [
|
|
107
|
+
"read:jira-work",
|
|
108
|
+
"read:jira-user",
|
|
109
|
+
"read:me",
|
|
110
|
+
"offline_access"
|
|
111
|
+
];
|
|
76
112
|
/**
|
|
77
113
|
* Build OAuth2 authorization URL.
|
|
78
114
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthEndpoints.js","sourceRoot":"","sources":["../../src/auth/OAuthEndpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAG3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,sCAAsC,CAAA;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,wCAAwC,CAAA;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,yCAAyC,CAAA;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,4DAA4D,CAAA;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,8BAA8B,CAAA;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;IACxB,4BAA4B;IAC5B,6BAA6B;IAC7B,SAAS;IACT,gBAAgB;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,qBAAqB;IACrB,2BAA2B;IAC3B,SAAS;IACT,gBAAgB;CACjB,CAAA;AAsBD;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAA4B,EAAU,EAAE;IACnE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,QAAQ,EAAE,mBAAmB;QAC7B,SAAS,EAAE,OAAO,CAAC,QAAQ;QAC3B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/B,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,oBAAoB,OAAO,CAAC,IAAI,WAAW;QAChF,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,MAAM;QACrB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAA;IACF,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;AAC3C,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAsE,EAAE,CAC1G,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;AACxC,CAAC,CAAC,CAAA;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAAgB,EACmD,EAAE,CACrE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvF,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"OAuthEndpoints.js","sourceRoot":"","sources":["../../src/auth/OAuthEndpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,28 @@ declare const OAuthError_base: new <A extends Record<string, any> = {}>(args: im
|
|
|
29
29
|
export declare class OAuthError extends OAuthError_base<{
|
|
30
30
|
readonly step: OAuthStep;
|
|
31
31
|
readonly cause?: unknown;
|
|
32
|
+
/**
|
|
33
|
+
* HTTP status, present only when the provider actually answered.
|
|
34
|
+
*
|
|
35
|
+
* Absent means the request never produced a response — transport failure,
|
|
36
|
+
* timeout, interruption — which is *not* evidence about the credential.
|
|
37
|
+
* Callers deciding whether to discard stored tokens must key off this and
|
|
38
|
+
* {@link errorCode} rather than off {@link step}, since a refresh that merely
|
|
39
|
+
* failed to complete may well have been consumed server-side.
|
|
40
|
+
*/
|
|
41
|
+
readonly status?: number;
|
|
42
|
+
/**
|
|
43
|
+
* The OAuth 2.0 `error` code from the response body (RFC 6749 §5.2), when the
|
|
44
|
+
* provider sent a parseable one.
|
|
45
|
+
*
|
|
46
|
+
* Status alone is too coarse to act on: `400` covers `invalid_grant` (the
|
|
47
|
+
* stored token really is spent) as well as `invalid_client`,
|
|
48
|
+
* `invalid_request` and `unsupported_grant_type`, which say the *request* was
|
|
49
|
+
* wrong and imply nothing about the token. Absent when the body was missing
|
|
50
|
+
* or unparseable, in which case callers should assume the credential is still
|
|
51
|
+
* good rather than discard it on a guess.
|
|
52
|
+
*/
|
|
53
|
+
readonly errorCode?: string;
|
|
32
54
|
}> {
|
|
33
55
|
get message(): string;
|
|
34
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthErrors.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthErrors.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;;;;AAE9G;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"OAuthErrors.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthErrors.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;;;;AAE9G;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAQ7B;CACF;;;;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAG7B;CACF;;;;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,6BAA4C;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAG7B;CACF"}
|
package/dist/auth/OAuthErrors.js
CHANGED
|
@@ -38,7 +38,7 @@ import * as Predicate from "effect/Predicate";
|
|
|
38
38
|
*/
|
|
39
39
|
export class OAuthError extends Data.TaggedError("OAuthError") {
|
|
40
40
|
get message() {
|
|
41
|
-
if (
|
|
41
|
+
if (Predicate.isString(this.cause)) {
|
|
42
42
|
return `OAuth ${this.step} failed: ${this.cause}`;
|
|
43
43
|
}
|
|
44
44
|
if (Predicate.hasProperty(this.cause, "message")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthErrors.js","sourceRoot":"","sources":["../../src/auth/OAuthErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAS7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"OAuthErrors.js","sourceRoot":"","sources":["../../src/auth/OAuthErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAS7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAyB3D;IACA,IAAa,OAAO;QAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,KAAK,EAAE,CAAA;QACnD,CAAC;QACD,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACjD,OAAO,SAAS,IAAI,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;QACnE,CAAC;QACD,OAAO,SAAS,IAAI,CAAC,IAAI,SAAS,CAAA;IACpC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,gBAAiB,SAAQ,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAEvE;IACA,IAAa,OAAO;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACrD,OAAO,gBAAgB,QAAQ,kCAAkC,CAAA;IACnE,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAErF;IACA,IAAa,OAAO;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAA;QACjF,OAAO,6BAA6B,QAAQ,SAAS,CAAA;IACvD,CAAC;CACF"}
|
|
@@ -21,7 +21,13 @@ export interface ExchangeCodeOptions {
|
|
|
21
21
|
*
|
|
22
22
|
* @category Operations
|
|
23
23
|
*/
|
|
24
|
-
export declare const exchangeCodeForTokens: (code: string, config: OAuthConfig, options: ExchangeCodeOptions) => Effect.Effect<
|
|
24
|
+
export declare const exchangeCodeForTokens: (code: string, config: OAuthConfig, options: ExchangeCodeOptions) => Effect.Effect<{
|
|
25
|
+
readonly access_token: string;
|
|
26
|
+
readonly refresh_token: string;
|
|
27
|
+
readonly expires_in: number;
|
|
28
|
+
readonly scope: string;
|
|
29
|
+
readonly token_type: string;
|
|
30
|
+
}, OAuthError, HttpClient.HttpClient>;
|
|
25
31
|
/**
|
|
26
32
|
* Get accessible resources (sites) for the authenticated user.
|
|
27
33
|
*
|
|
@@ -65,5 +71,13 @@ export declare const revokeToken: (token: OAuthToken, config: OAuthConfig) => Ef
|
|
|
65
71
|
*
|
|
66
72
|
* @category Utilities
|
|
67
73
|
*/
|
|
74
|
+
export declare const buildOAuthTokenAt: (tokenResponse: TokenResponse, site: AccessibleResource, user: UserInfo, nowMs: number) => OAuthToken;
|
|
75
|
+
/**
|
|
76
|
+
* Build an OAuth token using the host clock.
|
|
77
|
+
*
|
|
78
|
+
* @deprecated Effect workflows should call {@link buildOAuthTokenAt} with
|
|
79
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
80
|
+
* public API until the next major release.
|
|
81
|
+
*/
|
|
68
82
|
export declare const buildOAuthToken: (tokenResponse: TokenResponse, site: AccessibleResource, user: UserInfo) => OAuthToken;
|
|
69
83
|
//# sourceMappingURL=OAuthOperations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthOperations.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthOperations.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"OAuthOperations.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthOperations.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAG7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,aAAa,EAElB,KAAK,QAAQ,EAEd,MAAM,2BAA2B,CAAA;AAElC;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3C;AAWD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAC1B,MAAM,UACJ,WAAW,WACV,mBAAmB;;;;;;qCAgC3B,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,gBACpB,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAuBlF,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,gBACT,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAuBzD,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAChB,UAAU,UACT,WAAW,KAClB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAuD1D,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,UACf,UAAU,UACT,WAAW,KAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAyBpD,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,QACtB,kBAAkB,QAClB,QAAQ,SACP,MAAM,KACZ,UAYD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,kBACX,aAAa,QACtB,kBAAkB,QAClB,QAAQ,KACb,UAAqF,CAAA"}
|
|
@@ -23,9 +23,10 @@ import * as Effect from "effect/Effect";
|
|
|
23
23
|
import * as Schema from "effect/Schema";
|
|
24
24
|
import { HttpClient, HttpClientRequest } from "effect/unstable/http";
|
|
25
25
|
import {} from "../config/OAuthSchemas.js";
|
|
26
|
+
import { unsafeCurrentTimeMillis } from "../internal/legacyWallClock.js";
|
|
26
27
|
import { ME_URL, RESOURCES_URL, REVOKE_URL, TOKEN_URL } from "./OAuthEndpoints.js";
|
|
27
28
|
import { OAuthError } from "./OAuthErrors.js";
|
|
28
|
-
import { AccessibleResourceSchema, TokenResponseSchema, UserInfoSchema } from "./OAuthResponseSchemas.js";
|
|
29
|
+
import { AccessibleResourceSchema, TokenErrorSchema, TokenResponseSchema, UserInfoSchema } from "./OAuthResponseSchemas.js";
|
|
29
30
|
/**
|
|
30
31
|
* Exchange authorization code for tokens.
|
|
31
32
|
*
|
|
@@ -109,7 +110,17 @@ export const refreshToken = (token, config) => Effect.gen(function* () {
|
|
|
109
110
|
const response = yield* httpClient.execute(request).pipe(Effect.mapError((cause) => new OAuthError({ step: "refresh", cause })));
|
|
110
111
|
if (response.status >= 400) {
|
|
111
112
|
const text = yield* response.text.pipe(Effect.mapError((cause) => new OAuthError({ step: "refresh", cause })));
|
|
112
|
-
|
|
113
|
+
// The OAuth `error` code is what distinguishes "this grant is spent" from
|
|
114
|
+
// "your request was malformed", and callers key credential deletion off
|
|
115
|
+
// it. A body that is not JSON, or not shaped like an OAuth error, simply
|
|
116
|
+
// leaves it absent — which callers read as "no verdict", not "rejected".
|
|
117
|
+
const errorCode = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(TokenErrorSchema))(text).pipe(Effect.map((decoded) => decoded.error), Effect.catch(() => Effect.succeed(undefined)));
|
|
118
|
+
return yield* Effect.fail(new OAuthError({
|
|
119
|
+
step: "refresh",
|
|
120
|
+
cause: `HTTP ${response.status}: ${text}`,
|
|
121
|
+
status: response.status,
|
|
122
|
+
...(!(errorCode === undefined) && { errorCode })
|
|
123
|
+
}));
|
|
113
124
|
}
|
|
114
125
|
const body = yield* response.json.pipe(Effect.mapError((cause) => new OAuthError({ step: "refresh", cause })));
|
|
115
126
|
const tokenResponse = yield* Schema.decodeUnknownEffect(TokenResponseSchema)(body).pipe(Effect.mapError((cause) => new OAuthError({ step: "refresh", cause })));
|
|
@@ -154,10 +165,10 @@ export const revokeToken = (token, config) => Effect.gen(function* () {
|
|
|
154
165
|
*
|
|
155
166
|
* @category Utilities
|
|
156
167
|
*/
|
|
157
|
-
export const
|
|
168
|
+
export const buildOAuthTokenAt = (tokenResponse, site, user, nowMs) => ({
|
|
158
169
|
access_token: tokenResponse.access_token,
|
|
159
170
|
refresh_token: tokenResponse.refresh_token,
|
|
160
|
-
expires_at:
|
|
171
|
+
expires_at: nowMs + tokenResponse.expires_in * 1000,
|
|
161
172
|
scope: tokenResponse.scope,
|
|
162
173
|
cloud_id: site.id,
|
|
163
174
|
site_url: site.url,
|
|
@@ -167,4 +178,12 @@ export const buildOAuthToken = (tokenResponse, site, user) => ({
|
|
|
167
178
|
email: user.email
|
|
168
179
|
}
|
|
169
180
|
});
|
|
181
|
+
/**
|
|
182
|
+
* Build an OAuth token using the host clock.
|
|
183
|
+
*
|
|
184
|
+
* @deprecated Effect workflows should call {@link buildOAuthTokenAt} with
|
|
185
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
186
|
+
* public API until the next major release.
|
|
187
|
+
*/
|
|
188
|
+
export const buildOAuthToken = (tokenResponse, site, user) => buildOAuthTokenAt(tokenResponse, site, user, unsafeCurrentTimeMillis());
|
|
170
189
|
//# sourceMappingURL=OAuthOperations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthOperations.js","sourceRoot":"","sources":["../../src/auth/OAuthOperations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAqC,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAEL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"OAuthOperations.js","sourceRoot":"","sources":["../../src/auth/OAuthOperations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAqC,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAEL,wBAAwB,EACxB,gBAAgB,EAEhB,mBAAmB,EAEnB,cAAc,EACf,MAAM,2BAA2B,CAAA;AAyBlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAY,EACZ,MAAmB,EACnB,OAA4B,EAC5B,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAC/C,MAAM,SAAS,GAA+B;QAC5C,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,IAAI;QACJ,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,oBAAoB,OAAO,CAAC,IAAI,WAAW;KACjF,CAAA;IACD,IAAI,OAAO,CAAC,YAAY;QAAE,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAA;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3D,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAC/D,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CACtC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;QAC7E,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CACpE,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IAEjC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAA;AACrE,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACrE,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,WAAmB,EACkE,EAAE,CACvF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAC/C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CACvD,iBAAiB,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,EACrE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAC1D,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;QACnF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CACxE,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IAEjC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACxF,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CACzE,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,WAAmB,EACyC,EAAE,CAC9D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAC/C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAChD,iBAAiB,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,EACrE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAC1D,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;QACxE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CACxE,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IAEjC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAA;AAChE,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CACzE,CAAA;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAiB,EACjB,MAAmB,EAC2C,EAAE,CAChE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3D,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAC/D,iBAAiB,CAAC,QAAQ,CAAC;QACzB,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CACvE,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CACvE,CAAA;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CACvE,CAAA;QACD,0EAA0E;QAC1E,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACrG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EACtC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAC9C,CAAA;QACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;YACzC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;SACjD,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CACvE,CAAA;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACrF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CACvE,CAAA;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAA;IAE5C,OAAO;QACL,GAAG,KAAK;QACR,YAAY,EAAE,aAAa,CAAC,YAAY;QACxC,aAAa,EAAE,aAAa,CAAC,aAAa;QAC1C,UAAU,EAAE,KAAK,GAAG,aAAa,CAAC,UAAU,GAAG,IAAI;QACnD,KAAK,EAAE,aAAa,CAAC,KAAK;KAC3B,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAiB,EACjB,MAAmB,EACqC,EAAE,CAC1D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAC5D,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAC/D,iBAAiB,CAAC,QAAQ,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,KAAK,EAAE,KAAK,CAAC,aAAa;KAC3B,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CACtE,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CACtE,CAAA;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,uCAAuC,QAAQ,CAAC,MAAM,EAAE;SAChE,CAAC,CACH,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAA4B,EAC5B,IAAwB,EACxB,IAAc,EACd,KAAa,EACD,EAAE,CAAC,CAAC;IAChB,YAAY,EAAE,aAAa,CAAC,YAAY;IACxC,aAAa,EAAE,aAAa,CAAC,aAAa;IAC1C,UAAU,EAAE,KAAK,GAAG,aAAa,CAAC,UAAU,GAAG,IAAI;IACnD,KAAK,EAAE,aAAa,CAAC,KAAK;IAC1B,QAAQ,EAAE,IAAI,CAAC,EAAE;IACjB,QAAQ,EAAE,IAAI,CAAC,GAAG;IAClB,IAAI,EAAE;QACJ,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB;CACF,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,aAA4B,EAC5B,IAAwB,EACxB,IAAc,EACF,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAA"}
|
|
@@ -10,6 +10,17 @@
|
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
12
12
|
import * as Schema from "effect/Schema";
|
|
13
|
+
/**
|
|
14
|
+
* OAuth 2.0 error response body (RFC 6749 §5.2).
|
|
15
|
+
*
|
|
16
|
+
* Only `error` is required; providers vary on the rest, so nothing else is
|
|
17
|
+
* modelled — the code is the part callers act on.
|
|
18
|
+
*
|
|
19
|
+
* @category Schema
|
|
20
|
+
*/
|
|
21
|
+
export declare const TokenErrorSchema: Schema.Struct<{
|
|
22
|
+
readonly error: Schema.String;
|
|
23
|
+
}>;
|
|
13
24
|
/**
|
|
14
25
|
* Schema for OAuth2 token response from Atlassian.
|
|
15
26
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthResponseSchemas.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthResponseSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;EAM9B,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE1E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;EAIzB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"OAuthResponseSchemas.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthResponseSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;;EAE3B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;EAM9B,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE1E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;EAIzB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAA"}
|