@knpkv/atlassian-common 1.2.0 → 1.3.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/CHANGELOG.md +13 -0
- package/README.md +6 -0
- package/dist/auth/OAuthEndpoints.d.ts +10 -0
- package/dist/auth/OAuthEndpoints.d.ts.map +1 -1
- package/dist/auth/OAuthEndpoints.js +15 -0
- package/dist/auth/OAuthEndpoints.js.map +1 -1
- package/dist/auth/OAuthOperations.d.ts +8 -0
- package/dist/auth/OAuthOperations.d.ts.map +1 -1
- package/dist/auth/OAuthOperations.js +11 -2
- package/dist/auth/OAuthOperations.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/ProfileManager.d.ts +2 -0
- package/dist/config/ProfileManager.d.ts.map +1 -1
- package/dist/config/ProfileManager.js +16 -4
- 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 +15 -6
- 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/package.json +1 -1
- package/src/auth/OAuthEndpoints.ts +16 -0
- package/src/auth/OAuthOperations.ts +18 -3
- package/src/auth/index.ts +5 -1
- package/src/bin.ts +1 -4
- package/src/config/ProfileManager.ts +17 -4
- package/src/config/TokenStorage.ts +20 -6
- package/src/config/index.ts +2 -0
- package/src/internal/legacyWallClock.ts +10 -0
- package/test/PublicExports.test.ts +16 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @knpkv/atlassian-common
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#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,
|
|
8
|
+
decoding, and executable entrypoints with Effect v4 idioms. Expose clock-injected
|
|
9
|
+
Atlassian token construction and expiry helpers, and enable workspace-wide
|
|
10
|
+
Effect diagnostics and prevention checks.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [#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.
|
|
15
|
+
|
|
3
16
|
## 1.2.0
|
|
4
17
|
|
|
5
18
|
### 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.
|
|
@@ -57,6 +57,16 @@ export declare const CONFLUENCE_SCOPES: string[];
|
|
|
57
57
|
* @category Scopes
|
|
58
58
|
*/
|
|
59
59
|
export declare const JIRA_SCOPES: string[];
|
|
60
|
+
/**
|
|
61
|
+
* Legacy proposal-only Jira scopes retained for public API compatibility.
|
|
62
|
+
*
|
|
63
|
+
* Control Center owns a separate least-privilege release-publication scope set;
|
|
64
|
+
* {@link JIRA_SCOPES} remains the legacy write-capable set for other consumers,
|
|
65
|
+
* while proposal-only integrations may continue using this read-only set.
|
|
66
|
+
*
|
|
67
|
+
* @category Scopes
|
|
68
|
+
*/
|
|
69
|
+
export declare const JIRA_PROPOSAL_SCOPES: string[];
|
|
60
70
|
/**
|
|
61
71
|
* Options for building OAuth2 authorization URL.
|
|
62
72
|
*
|
|
@@ -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,GAAI,SAAS,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,GAC/B,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAK/D,CAAA"}
|
|
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;;;;;;;;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,GAAI,SAAS,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,GAC/B,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAK/D,CAAA"}
|
|
@@ -73,6 +73,21 @@ export const JIRA_SCOPES = [
|
|
|
73
73
|
"read:me",
|
|
74
74
|
"offline_access"
|
|
75
75
|
];
|
|
76
|
+
/**
|
|
77
|
+
* Legacy proposal-only Jira scopes retained for public API compatibility.
|
|
78
|
+
*
|
|
79
|
+
* Control Center owns a separate least-privilege release-publication scope set;
|
|
80
|
+
* {@link JIRA_SCOPES} remains the legacy write-capable set for other consumers,
|
|
81
|
+
* while proposal-only integrations may continue using this read-only set.
|
|
82
|
+
*
|
|
83
|
+
* @category Scopes
|
|
84
|
+
*/
|
|
85
|
+
export const JIRA_PROPOSAL_SCOPES = [
|
|
86
|
+
"read:jira-work",
|
|
87
|
+
"read:jira-user",
|
|
88
|
+
"read:me",
|
|
89
|
+
"offline_access"
|
|
90
|
+
];
|
|
76
91
|
/**
|
|
77
92
|
* Build OAuth2 authorization URL.
|
|
78
93
|
*
|
|
@@ -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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"}
|
|
@@ -65,5 +65,13 @@ export declare const revokeToken: (token: OAuthToken, config: OAuthConfig) => Ef
|
|
|
65
65
|
*
|
|
66
66
|
* @category Utilities
|
|
67
67
|
*/
|
|
68
|
+
export declare const buildOAuthTokenAt: (tokenResponse: TokenResponse, site: AccessibleResource, user: UserInfo, nowMs: number) => OAuthToken;
|
|
69
|
+
/**
|
|
70
|
+
* Build an OAuth token using the host clock.
|
|
71
|
+
*
|
|
72
|
+
* @deprecated Effect workflows should call {@link buildOAuthTokenAt} with
|
|
73
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
74
|
+
* public API until the next major release.
|
|
75
|
+
*/
|
|
68
76
|
export declare const buildOAuthToken: (tokenResponse: TokenResponse, site: AccessibleResource, user: UserInfo) => OAuthToken;
|
|
69
77
|
//# 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,EAEvB,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;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,QAAQ,WAAW,EACnB,SAAS,mBAAmB,KAC3B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CA+B9D,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAuBlF,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,aAAa,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAuBzD,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,UAAU,EACjB,QAAQ,WAAW,KAClB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CA0C1D,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,UAAU,EACjB,QAAQ,WAAW,KAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,CAyBpD,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,eAAe,aAAa,EAC5B,MAAM,kBAAkB,EACxB,MAAM,QAAQ,EACd,OAAO,MAAM,KACZ,UAYD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,eAAe,aAAa,EAC5B,MAAM,kBAAkB,EACxB,MAAM,QAAQ,KACb,UAAqF,CAAA"}
|
|
@@ -23,6 +23,7 @@ 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
29
|
import { AccessibleResourceSchema, TokenResponseSchema, UserInfoSchema } from "./OAuthResponseSchemas.js";
|
|
@@ -154,10 +155,10 @@ export const revokeToken = (token, config) => Effect.gen(function* () {
|
|
|
154
155
|
*
|
|
155
156
|
* @category Utilities
|
|
156
157
|
*/
|
|
157
|
-
export const
|
|
158
|
+
export const buildOAuthTokenAt = (tokenResponse, site, user, nowMs) => ({
|
|
158
159
|
access_token: tokenResponse.access_token,
|
|
159
160
|
refresh_token: tokenResponse.refresh_token,
|
|
160
|
-
expires_at:
|
|
161
|
+
expires_at: nowMs + tokenResponse.expires_in * 1000,
|
|
161
162
|
scope: tokenResponse.scope,
|
|
162
163
|
cloud_id: site.id,
|
|
163
164
|
site_url: site.url,
|
|
@@ -167,4 +168,12 @@ export const buildOAuthToken = (tokenResponse, site, user) => ({
|
|
|
167
168
|
email: user.email
|
|
168
169
|
}
|
|
169
170
|
});
|
|
171
|
+
/**
|
|
172
|
+
* Build an OAuth token using the host clock.
|
|
173
|
+
*
|
|
174
|
+
* @deprecated Effect workflows should call {@link buildOAuthTokenAt} with
|
|
175
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
176
|
+
* public API until the next major release.
|
|
177
|
+
*/
|
|
178
|
+
export const buildOAuthToken = (tokenResponse, site, user) => buildOAuthTokenAt(tokenResponse, site, user, unsafeCurrentTimeMillis());
|
|
170
179
|
//# sourceMappingURL=OAuthOperations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthOperations.js","sourceRoot":"","sources":["../../src/auth/OAuthOperations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"OAuthOperations.js","sourceRoot":"","sources":["../../src/auth/OAuthOperations.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
export { AUTH_URL, buildAuthUrl, type BuildAuthUrlOptions, computeCodeChallenge, CONFLUENCE_SCOPES, generateCodeVerifier, JIRA_SCOPES, ME_URL, RESOURCES_URL, REVOKE_URL, TOKEN_URL } from "./OAuthEndpoints.js";
|
|
6
|
+
export { AUTH_URL, buildAuthUrl, type BuildAuthUrlOptions, computeCodeChallenge, CONFLUENCE_SCOPES, generateCodeVerifier, JIRA_PROPOSAL_SCOPES, JIRA_SCOPES, ME_URL, RESOURCES_URL, REVOKE_URL, TOKEN_URL } from "./OAuthEndpoints.js";
|
|
7
7
|
export { AuthMissingError, OAuthError, OAuthNotConfiguredError, type OAuthStep } from "./OAuthErrors.js";
|
|
8
|
-
export { buildOAuthToken, exchangeCodeForTokens, type ExchangeCodeOptions, getAccessibleResources, getUserInfo, refreshToken, revokeToken } from "./OAuthOperations.js";
|
|
8
|
+
export { buildOAuthToken, buildOAuthTokenAt, exchangeCodeForTokens, type ExchangeCodeOptions, getAccessibleResources, getUserInfo, refreshToken, revokeToken } from "./OAuthOperations.js";
|
|
9
9
|
export { type AccessibleResource, AccessibleResourceSchema, type TokenResponse, TokenResponseSchema, type UserInfo, UserInfoSchema } from "./OAuthResponseSchemas.js";
|
|
10
10
|
export { generateUUID } from "./uuid.js";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,aAAa,EACb,UAAU,EACV,SAAS,EACV,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,uBAAuB,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGxG,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,WAAW,EACZ,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,QAAQ,EACb,cAAc,EACf,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/auth/index.js
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
// Endpoints and
|
|
7
|
-
|
|
6
|
+
// Endpoints and legacy public scope sets. Control Center owns a separate
|
|
7
|
+
// least-privilege release-publication set; proposal-only consumers can use
|
|
8
|
+
// JIRA_PROPOSAL_SCOPES and other write-capable consumers can use JIRA_SCOPES.
|
|
9
|
+
export { AUTH_URL, buildAuthUrl, computeCodeChallenge, CONFLUENCE_SCOPES, generateCodeVerifier, JIRA_PROPOSAL_SCOPES, JIRA_SCOPES, ME_URL, RESOURCES_URL, REVOKE_URL, TOKEN_URL } from "./OAuthEndpoints.js";
|
|
8
10
|
// Errors
|
|
9
11
|
export { AuthMissingError, OAuthError, OAuthNotConfiguredError } from "./OAuthErrors.js";
|
|
10
12
|
// Operations
|
|
11
|
-
export { buildOAuthToken, exchangeCodeForTokens, getAccessibleResources, getUserInfo, refreshToken, revokeToken } from "./OAuthOperations.js";
|
|
13
|
+
export { buildOAuthToken, buildOAuthTokenAt, exchangeCodeForTokens, getAccessibleResources, getUserInfo, refreshToken, revokeToken } from "./OAuthOperations.js";
|
|
12
14
|
// Response schemas
|
|
13
15
|
export { AccessibleResourceSchema, TokenResponseSchema, UserInfoSchema } from "./OAuthResponseSchemas.js";
|
|
14
16
|
// Utilities
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,OAAO,EACL,QAAQ,EACR,YAAY,EAEZ,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,aAAa,EACb,UAAU,EACV,SAAS,EACV,MAAM,qBAAqB,CAAA;AAE5B,SAAS;AACT,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,uBAAuB,EAAkB,MAAM,kBAAkB,CAAA;AAExG,aAAa;AACb,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EAErB,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,WAAW,EACZ,MAAM,sBAAsB,CAAA;AAE7B,mBAAmB;AACnB,OAAO,EAEL,wBAAwB,EAExB,mBAAmB,EAEnB,cAAc,EACf,MAAM,2BAA2B,CAAA;AAElC,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/bin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { NodeHttpClient, NodeRuntime, NodeServices } from "@effect/platform-node";
|
|
3
3
|
import * as Console from "effect/Console";
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
import * as Layer from "effect/Layer";
|
|
@@ -53,6 +53,6 @@ const program = Effect.gen(function* () {
|
|
|
53
53
|
const stdio = yield* Stdio.Stdio;
|
|
54
54
|
const args = yield* stdio.args;
|
|
55
55
|
return yield* cli(args);
|
|
56
|
-
}).pipe(Effect.provide(
|
|
56
|
+
}).pipe(Effect.provide(Layer.mergeAll(NodeServices.layer, NodeHttpClient.layerFetch, HomeDirectoryLive)), Effect.catch((error) => Console.error(String(error)).pipe(Effect.andThen(Effect.fail(error)))));
|
|
57
57
|
NodeRuntime.runMain(program, { disableErrorReporting: true });
|
|
58
58
|
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACvD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EAErB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC5C,IAAI,CAAC,eAAe,CAAC,qDAAqD,CAAC,CAC5E,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,QAA0C,EAAE,EAAE,CACnE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAA;QACnC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpE,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;YAChD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACtD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;YACpD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAChB,aAAa,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CACvG,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KAC9G,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,8CAA8C,CAAC,CAAC,CAAA;AAEhF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,KAAK,EACL,EAAE,OAAO,EAAE,UAAU,EAAE,EACvB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CACpF,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,sCAAsC,CAAC,CAAC,CAAA;AAEvE,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CACrD,sBAAsB,EAAE,CAAC,IAAI,CAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC9B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,SAAS,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QAC5F,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAChB,gDAAgD,MAAM,CAAC,IAAI,CAAC,SAAS,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CACnG,CAAA;QACH,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAChB,6BAA6B,MAAM,CAAC,IAAI,CAAC,KAAK,qBAAqB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtG,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CACH,CACF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,mDAAmD,CAAC,CAAC,CAAA;AAEvF,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KACnH,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,kEAAkE,CAAC,CAAC,CAAA;AAEpG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAC5C,OAAO,CAAC,eAAe,CAAC,uCAAuC,CAAC,EAChE,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CACtF,CAAA;AAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KAC/G,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,qCAAqC,CAAC,CAAC,CAAA;AAEvE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACpC,OAAO,CAAC,eAAe,CAAC,iCAAiC,CAAC,EAC1D,OAAO,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CACvC,CAAA;AAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CACvG,OAAO,CAAC,eAAe,CAAC,mCAAmC,CAAC,EAC5D,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAC1C,CAAA;AAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;AAChE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;IAC9B,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CACZ,KAAK,CAAC,QAAQ,CACZ,YAAY,CAAC,KAAK,EAClB,cAAc,CAAC,UAAU,EACzB,iBAAiB,CAClB,CACF,EACD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACxG,CAAA;AAED,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAA"}
|
|
@@ -17,6 +17,8 @@ export interface AtlassianToolDefinition {
|
|
|
17
17
|
readonly requiredScopes: ReadonlyArray<string>;
|
|
18
18
|
}
|
|
19
19
|
export declare const JIRA_REQUIRED_SCOPES: ReadonlyArray<string>;
|
|
20
|
+
/** Legacy read-only Jira requirements retained for proposal-only consumers. */
|
|
21
|
+
export declare const JIRA_PROPOSAL_REQUIRED_SCOPES: ReadonlyArray<string>;
|
|
20
22
|
export declare const CONFLUENCE_REQUIRED_SCOPES: ReadonlyArray<string>;
|
|
21
23
|
export declare const ATLASSIAN_TOOLS: ReadonlyArray<AtlassianToolDefinition>;
|
|
22
24
|
export type ProfileTokenStatus = "valid" | "expired";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileManager.d.ts","sourceRoot":"","sources":["../../src/config/ProfileManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProfileManager.d.ts","sourceRoot":"","sources":["../../src/config/ProfileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
import * as Clock from "effect/Clock";
|
|
6
7
|
import * as Data from "effect/Data";
|
|
7
8
|
import * as Effect from "effect/Effect";
|
|
8
9
|
import * as FileSystem from "effect/FileSystem";
|
|
@@ -12,7 +13,7 @@ import { refreshToken } from "../auth/OAuthOperations.js";
|
|
|
12
13
|
import { findProfile, loadProfiles, saveProfiles, saveProfileToken } from "./AuthProfiles.js";
|
|
13
14
|
import { getProfilesPath, HomeDirectoryTag } from "./ConfigPaths.js";
|
|
14
15
|
import { OAuthTokenSchema } from "./OAuthSchemas.js";
|
|
15
|
-
import { FileSystemError,
|
|
16
|
+
import { FileSystemError, isTokenExpiredAt, loadOAuthConfig } from "./TokenStorage.js";
|
|
16
17
|
export const JIRA_REQUIRED_SCOPES = [
|
|
17
18
|
"read:jira-work",
|
|
18
19
|
"write:jira-work",
|
|
@@ -21,6 +22,13 @@ export const JIRA_REQUIRED_SCOPES = [
|
|
|
21
22
|
"read:me",
|
|
22
23
|
"offline_access"
|
|
23
24
|
];
|
|
25
|
+
/** Legacy read-only Jira requirements retained for proposal-only consumers. */
|
|
26
|
+
export const JIRA_PROPOSAL_REQUIRED_SCOPES = [
|
|
27
|
+
"read:jira-work",
|
|
28
|
+
"read:jira-user",
|
|
29
|
+
"read:me",
|
|
30
|
+
"offline_access"
|
|
31
|
+
];
|
|
24
32
|
export const CONFLUENCE_REQUIRED_SCOPES = [
|
|
25
33
|
"read:page:confluence",
|
|
26
34
|
"write:page:confluence",
|
|
@@ -77,7 +85,7 @@ const loadLegacyToken = (tool) => Effect.gen(function* () {
|
|
|
77
85
|
const content = yield* fs.readFileString(authPath).pipe(Effect.mapError((cause) => new FileSystemError({ operation: "read", path: authPath, cause })));
|
|
78
86
|
const parsed = yield* Effect.try({
|
|
79
87
|
try: () => JSON.parse(content),
|
|
80
|
-
catch: (
|
|
88
|
+
catch: () => "invalid-json"
|
|
81
89
|
}).pipe(Effect.catch(() => Effect.succeed(null)));
|
|
82
90
|
if (parsed === null)
|
|
83
91
|
return null;
|
|
@@ -93,12 +101,15 @@ export const inspectToolProfiles = (tool) => Effect.gen(function* () {
|
|
|
93
101
|
const [store, config] = yield* Effect.all([loadProfiles(storeName), loadOAuthConfig(storeName)]);
|
|
94
102
|
const activeProfile = store.profiles.find((profile) => profile.id === store.activeProfileId) ?? store.profiles[0] ??
|
|
95
103
|
null;
|
|
104
|
+
const nowMs = yield* Clock.currentTimeMillis;
|
|
96
105
|
return {
|
|
97
106
|
tool,
|
|
98
107
|
authStoreName: storeName,
|
|
99
108
|
activeProfile,
|
|
100
109
|
profiles: store.profiles,
|
|
101
|
-
tokenStatus: activeProfile === null ? "missing" :
|
|
110
|
+
tokenStatus: activeProfile === null ? "missing" : isTokenExpiredAt(activeProfile.token, nowMs, 0)
|
|
111
|
+
? "expired"
|
|
112
|
+
: "valid",
|
|
102
113
|
missingScopes: activeProfile === null ? [] : missingScopes(activeProfile.token, tool.requiredScopes),
|
|
103
114
|
oauthConfigured: config !== null
|
|
104
115
|
};
|
|
@@ -162,7 +173,8 @@ export const refreshActiveProfiles = (tools = ATLASSIAN_TOOLS) => Effect.gen(fun
|
|
|
162
173
|
const store = yield* loadProfiles(storeName);
|
|
163
174
|
const active = store.profiles.find((profile) => profile.id === store.activeProfileId) ?? store.profiles[0] ??
|
|
164
175
|
null;
|
|
165
|
-
|
|
176
|
+
const nowMs = yield* Clock.currentTimeMillis;
|
|
177
|
+
if (!active || !isTokenExpiredAt(active.token, nowMs, 0))
|
|
166
178
|
return;
|
|
167
179
|
const config = yield* loadOAuthConfig(storeName);
|
|
168
180
|
if (!config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileManager.js","sourceRoot":"","sources":["../../src/config/ProfileManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAEnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAGL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,eAAe,EAA2B,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"ProfileManager.js","sourceRoot":"","sources":["../../src/config/ProfileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,14 @@ export declare const saveOAuthConfig: (toolName: string, config: OAuthConfig) =>
|
|
|
72
72
|
*
|
|
73
73
|
* @category Utilities
|
|
74
74
|
*/
|
|
75
|
+
export declare const isTokenExpiredAt: (token: OAuthToken, nowMs: number, bufferMs?: number) => boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Check token expiration using the host clock.
|
|
78
|
+
*
|
|
79
|
+
* @deprecated Effect workflows should call {@link isTokenExpiredAt} with
|
|
80
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
81
|
+
* public API until the next major release.
|
|
82
|
+
*/
|
|
75
83
|
export declare const isTokenExpired: (token: OAuthToken, bufferMs?: number) => boolean;
|
|
76
84
|
export {};
|
|
77
85
|
//# sourceMappingURL=TokenStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../../src/config/TokenStorage.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../../src/config/TokenStorage.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAG1D,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAE,KAAK,WAAW,EAAqB,KAAK,UAAU,EAAoB,MAAM,mBAAmB,CAAA;;;;AAU1G;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,qBAAoC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CACd,UAAU,GAAG,IAAI,EACjB,eAAe,GAAG,kBAAkB,EACpC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CA8BlD,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,MAAM,EAChB,OAAO,UAAU,KAChB,MAAM,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,GAAG,kBAAkB,GAAG,aAAa,CAAC,aAAa,EAClE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAUlD,CAAA;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,EAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAQ7G,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CACd,WAAW,GAAG,IAAI,EAClB,eAAe,GAAG,kBAAkB,EACpC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CA8BlD,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,QAAQ,WAAW,KAClB,MAAM,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,GAAG,kBAAkB,GAAG,aAAa,CAAC,aAAa,EAClE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAUlD,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,UAAU,EACjB,OAAO,MAAM,EACb,WAAU,MAAsB,KAC/B,OAA+C,CAAA;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,UAAU,EAAE,WAAU,MAAsB,KAAG,OACvB,CAAA"}
|
|
@@ -21,6 +21,7 @@ import * as Data from "effect/Data";
|
|
|
21
21
|
import * as Effect from "effect/Effect";
|
|
22
22
|
import * as FileSystem from "effect/FileSystem";
|
|
23
23
|
import * as Schema from "effect/Schema";
|
|
24
|
+
import { unsafeCurrentTimeMillis } from "../internal/legacyWallClock.js";
|
|
24
25
|
import {} from "./ConfigPaths.js";
|
|
25
26
|
import { ensureConfigDir, getAuthPath, getOAuthConfigPath, writeSecureFile } from "./ConfigPaths.js";
|
|
26
27
|
import { OAuthConfigSchema, OAuthTokenSchema } from "./OAuthSchemas.js";
|
|
@@ -53,7 +54,7 @@ export class FileSystemError extends Data.TaggedError("FileSystemError") {
|
|
|
53
54
|
export const loadToken = (toolName) => Effect.gen(function* () {
|
|
54
55
|
const fs = yield* FileSystem.FileSystem;
|
|
55
56
|
const tokenPath = yield* getAuthPath(toolName);
|
|
56
|
-
const exists = yield* fs.exists(tokenPath).pipe(Effect.
|
|
57
|
+
const exists = yield* fs.exists(tokenPath).pipe(Effect.catch(() => Effect.succeed(false)));
|
|
57
58
|
if (!exists) {
|
|
58
59
|
return null;
|
|
59
60
|
}
|
|
@@ -63,7 +64,7 @@ export const loadToken = (toolName) => Effect.gen(function* () {
|
|
|
63
64
|
yield* Effect.logWarning(`Corrupted auth.json at ${tokenPath} — could not parse JSON`);
|
|
64
65
|
return null;
|
|
65
66
|
}
|
|
66
|
-
return yield* Schema.decodeUnknownEffect(OAuthTokenSchema)(parsed).pipe(Effect.
|
|
67
|
+
return yield* Schema.decodeUnknownEffect(OAuthTokenSchema)(parsed).pipe(Effect.catch((e) => Effect.logWarning(`Invalid token schema in ${tokenPath}: ${e}`).pipe(Effect.map(() => null))));
|
|
67
68
|
});
|
|
68
69
|
/**
|
|
69
70
|
* Save OAuth token to disk with secure permissions.
|
|
@@ -89,7 +90,7 @@ export const saveToken = (toolName, token) => Effect.gen(function* () {
|
|
|
89
90
|
export const deleteToken = (toolName) => Effect.gen(function* () {
|
|
90
91
|
const fs = yield* FileSystem.FileSystem;
|
|
91
92
|
const tokenPath = yield* getAuthPath(toolName);
|
|
92
|
-
yield* fs.remove(tokenPath).pipe(Effect.
|
|
93
|
+
yield* fs.remove(tokenPath).pipe(Effect.catch(() => Effect.void));
|
|
93
94
|
});
|
|
94
95
|
/**
|
|
95
96
|
* Load OAuth client configuration from disk.
|
|
@@ -102,7 +103,7 @@ export const deleteToken = (toolName) => Effect.gen(function* () {
|
|
|
102
103
|
export const loadOAuthConfig = (toolName) => Effect.gen(function* () {
|
|
103
104
|
const fs = yield* FileSystem.FileSystem;
|
|
104
105
|
const configPath = yield* getOAuthConfigPath(toolName);
|
|
105
|
-
const exists = yield* fs.exists(configPath).pipe(Effect.
|
|
106
|
+
const exists = yield* fs.exists(configPath).pipe(Effect.catch(() => Effect.succeed(false)));
|
|
106
107
|
if (!exists) {
|
|
107
108
|
return null;
|
|
108
109
|
}
|
|
@@ -112,7 +113,7 @@ export const loadOAuthConfig = (toolName) => Effect.gen(function* () {
|
|
|
112
113
|
yield* Effect.logWarning(`Corrupted oauth config at ${configPath} — could not parse JSON`);
|
|
113
114
|
return null;
|
|
114
115
|
}
|
|
115
|
-
return yield* Schema.decodeUnknownEffect(OAuthConfigSchema)(parsed).pipe(Effect.
|
|
116
|
+
return yield* Schema.decodeUnknownEffect(OAuthConfigSchema)(parsed).pipe(Effect.catch((e) => Effect.logWarning(`Invalid OAuth config schema in ${configPath}: ${e}`).pipe(Effect.map(() => null))));
|
|
116
117
|
});
|
|
117
118
|
/**
|
|
118
119
|
* Save OAuth client configuration to disk with secure permissions.
|
|
@@ -137,5 +138,13 @@ export const saveOAuthConfig = (toolName, config) => Effect.gen(function* () {
|
|
|
137
138
|
*
|
|
138
139
|
* @category Utilities
|
|
139
140
|
*/
|
|
140
|
-
export const
|
|
141
|
+
export const isTokenExpiredAt = (token, nowMs, bufferMs = 5 * 60 * 1000) => nowMs >= token.expires_at - bufferMs;
|
|
142
|
+
/**
|
|
143
|
+
* Check token expiration using the host clock.
|
|
144
|
+
*
|
|
145
|
+
* @deprecated Effect workflows should call {@link isTokenExpiredAt} with
|
|
146
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
147
|
+
* public API until the next major release.
|
|
148
|
+
*/
|
|
149
|
+
export const isTokenExpired = (token, bufferMs = 5 * 60 * 1000) => isTokenExpiredAt(token, unsafeCurrentTimeMillis(), bufferMs);
|
|
141
150
|
//# sourceMappingURL=TokenStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenStorage.js","sourceRoot":"","sources":["../../src/config/TokenStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAG/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAkD,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,EAAoB,iBAAiB,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE1G,MAAM,eAAe,GAAG,CAAC,OAAe,EAAkB,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAIrE;IACA,IAAa,OAAO;QAClB,OAAO,aAAa,IAAI,CAAC,SAAS,YAAY,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3D,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAgB,EAKhB,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAE9C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC7C,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"TokenStorage.js","sourceRoot":"","sources":["../../src/config/TokenStorage.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { ensureConfigDir, getAuthPath, getConfigDir, getOAuthConfigPath, getProfilesPath, type HomeDirectory, HomeDirectoryError, HomeDirectoryLive, HomeDirectoryTag, writeSecureFile } from "./ConfigPaths.js";
|
|
7
7
|
export { type AtlassianSite, AtlassianSiteSchema, type AtlassianUser, AtlassianUserSchema, type OAuthConfig, OAuthConfigSchema, type OAuthToken, OAuthTokenSchema, type OAuthUser, OAuthUserSchema } from "./OAuthSchemas.js";
|
|
8
|
-
export { deleteToken, FileSystemError, isTokenExpired, loadOAuthConfig, loadToken, saveOAuthConfig, saveToken } from "./TokenStorage.js";
|
|
8
|
+
export { deleteToken, FileSystemError, isTokenExpired, isTokenExpiredAt, loadOAuthConfig, loadToken, saveOAuthConfig, saveToken } from "./TokenStorage.js";
|
|
9
9
|
export { type AuthProfile, AuthProfileSchema, type AuthProfilesFile, AuthProfilesFileSchema, deleteActiveProfile, deleteProfile, deleteProfileBySelector, findProfile, loadActiveProfile, loadActiveProfileToken, loadProfiles, profileFromToken, profileIdFromToken, profileNameFromToken, saveProfiles, saveProfileToken, setActiveProfile, setActiveProfileBySelector } from "./AuthProfiles.js";
|
|
10
|
-
export { ATLASSIAN_TOOLS, type AtlassianToolDefinition, CONFLUENCE_REQUIRED_SCOPES, inspectAllToolProfiles, inspectToolProfiles, JIRA_REQUIRED_SCOPES, migrateLegacyProfiles, MissingOAuthConfigError, missingScopes, ProfileNotFoundError, type ProfileTokenStatus, refreshActiveProfiles, tokenScopes, type ToolProfileStatus, useProfileForAllTools } from "./ProfileManager.js";
|
|
10
|
+
export { ATLASSIAN_TOOLS, type AtlassianToolDefinition, CONFLUENCE_REQUIRED_SCOPES, inspectAllToolProfiles, inspectToolProfiles, JIRA_PROPOSAL_REQUIRED_SCOPES, JIRA_REQUIRED_SCOPES, migrateLegacyProfiles, MissingOAuthConfigError, missingScopes, ProfileNotFoundError, type ProfileTokenStatus, refreshActiveProfiles, tokenScopes, type ToolProfileStatus, useProfileForAllTools } from "./ProfileManager.js";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,KAAK,aAAa,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,UAAU,EACf,gBAAgB,EAChB,KAAK,SAAS,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,eAAe,EACf,SAAS,EACV,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,eAAe,EACf,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,WAAW,EACX,KAAK,iBAAiB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,KAAK,aAAa,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,UAAU,EACf,gBAAgB,EAChB,KAAK,SAAS,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,eAAe,EACf,SAAS,EACV,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,eAAe,EACf,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,WAAW,EACX,KAAK,iBAAiB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA"}
|
package/dist/config/index.js
CHANGED
|
@@ -8,9 +8,9 @@ export { ensureConfigDir, getAuthPath, getConfigDir, getOAuthConfigPath, getProf
|
|
|
8
8
|
// OAuth schemas
|
|
9
9
|
export { AtlassianSiteSchema, AtlassianUserSchema, OAuthConfigSchema, OAuthTokenSchema, OAuthUserSchema } from "./OAuthSchemas.js";
|
|
10
10
|
// Token storage
|
|
11
|
-
export { deleteToken, FileSystemError, isTokenExpired, loadOAuthConfig, loadToken, saveOAuthConfig, saveToken } from "./TokenStorage.js";
|
|
11
|
+
export { deleteToken, FileSystemError, isTokenExpired, isTokenExpiredAt, loadOAuthConfig, loadToken, saveOAuthConfig, saveToken } from "./TokenStorage.js";
|
|
12
12
|
// Auth profiles
|
|
13
13
|
export { AuthProfileSchema, AuthProfilesFileSchema, deleteActiveProfile, deleteProfile, deleteProfileBySelector, findProfile, loadActiveProfile, loadActiveProfileToken, loadProfiles, profileFromToken, profileIdFromToken, profileNameFromToken, saveProfiles, saveProfileToken, setActiveProfile, setActiveProfileBySelector } from "./AuthProfiles.js";
|
|
14
14
|
// Unified profile manager
|
|
15
|
-
export { ATLASSIAN_TOOLS, CONFLUENCE_REQUIRED_SCOPES, inspectAllToolProfiles, inspectToolProfiles, JIRA_REQUIRED_SCOPES, migrateLegacyProfiles, MissingOAuthConfigError, missingScopes, ProfileNotFoundError, refreshActiveProfiles, tokenScopes, useProfileForAllTools } from "./ProfileManager.js";
|
|
15
|
+
export { ATLASSIAN_TOOLS, CONFLUENCE_REQUIRED_SCOPES, inspectAllToolProfiles, inspectToolProfiles, JIRA_PROPOSAL_REQUIRED_SCOPES, JIRA_REQUIRED_SCOPES, migrateLegacyProfiles, MissingOAuthConfigError, missingScopes, ProfileNotFoundError, refreshActiveProfiles, tokenScopes, useProfileForAllTools } from "./ProfileManager.js";
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAEf,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,gBAAgB;AAChB,OAAO,EAEL,mBAAmB,EAEnB,mBAAmB,EAEnB,iBAAiB,EAEjB,gBAAgB,EAEhB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAE1B,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,eAAe,EACf,SAAS,EACV,MAAM,mBAAmB,CAAA;AAE1B,gBAAgB;AAChB,OAAO,EAEL,iBAAiB,EAEjB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAA;AAE1B,0BAA0B;AAC1B,OAAO,EACL,eAAe,EAEf,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EACrB,WAAW,EAEX,qBAAqB,EACtB,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAEf,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,gBAAgB;AAChB,OAAO,EAEL,mBAAmB,EAEnB,mBAAmB,EAEnB,iBAAiB,EAEjB,gBAAgB,EAEhB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAE1B,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,eAAe,EACf,SAAS,EACV,MAAM,mBAAmB,CAAA;AAE1B,gBAAgB;AAChB,OAAO,EAEL,iBAAiB,EAEjB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAA;AAE1B,0BAA0B;AAC1B,OAAO,EACL,eAAe,EAEf,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EACrB,WAAW,EAEX,qBAAqB,EACtB,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility boundary for legacy synchronous OAuth helpers.
|
|
3
|
+
*
|
|
4
|
+
* New Effect workflows must obtain time from `Clock.currentTimeMillis` and call
|
|
5
|
+
* the corresponding `*At` helper. This host-clock read remains only so the
|
|
6
|
+
* existing synchronous public API does not change without a major release.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare const unsafeCurrentTimeMillis: () => number;
|
|
11
|
+
//# sourceMappingURL=legacyWallClock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyWallClock.d.ts","sourceRoot":"","sources":["../../src/internal/legacyWallClock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,QAAO,MAAoB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility boundary for legacy synchronous OAuth helpers.
|
|
3
|
+
*
|
|
4
|
+
* New Effect workflows must obtain time from `Clock.currentTimeMillis` and call
|
|
5
|
+
* the corresponding `*At` helper. This host-clock read remains only so the
|
|
6
|
+
* existing synchronous public API does not change without a major release.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export const unsafeCurrentTimeMillis = () => Date.now();
|
|
11
|
+
//# sourceMappingURL=legacyWallClock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyWallClock.js","sourceRoot":"","sources":["../../src/internal/legacyWallClock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -82,6 +82,22 @@ export const JIRA_SCOPES = [
|
|
|
82
82
|
"offline_access"
|
|
83
83
|
]
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Legacy proposal-only Jira scopes retained for public API compatibility.
|
|
87
|
+
*
|
|
88
|
+
* Control Center owns a separate least-privilege release-publication scope set;
|
|
89
|
+
* {@link JIRA_SCOPES} remains the legacy write-capable set for other consumers,
|
|
90
|
+
* while proposal-only integrations may continue using this read-only set.
|
|
91
|
+
*
|
|
92
|
+
* @category Scopes
|
|
93
|
+
*/
|
|
94
|
+
export const JIRA_PROPOSAL_SCOPES = [
|
|
95
|
+
"read:jira-work",
|
|
96
|
+
"read:jira-user",
|
|
97
|
+
"read:me",
|
|
98
|
+
"offline_access"
|
|
99
|
+
]
|
|
100
|
+
|
|
85
101
|
/**
|
|
86
102
|
* Options for building OAuth2 authorization URL.
|
|
87
103
|
*
|
|
@@ -23,6 +23,7 @@ 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 { type OAuthConfig, type OAuthToken } 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
29
|
import {
|
|
@@ -260,14 +261,15 @@ export const revokeToken = (
|
|
|
260
261
|
*
|
|
261
262
|
* @category Utilities
|
|
262
263
|
*/
|
|
263
|
-
export const
|
|
264
|
+
export const buildOAuthTokenAt = (
|
|
264
265
|
tokenResponse: TokenResponse,
|
|
265
266
|
site: AccessibleResource,
|
|
266
|
-
user: UserInfo
|
|
267
|
+
user: UserInfo,
|
|
268
|
+
nowMs: number
|
|
267
269
|
): OAuthToken => ({
|
|
268
270
|
access_token: tokenResponse.access_token,
|
|
269
271
|
refresh_token: tokenResponse.refresh_token,
|
|
270
|
-
expires_at:
|
|
272
|
+
expires_at: nowMs + tokenResponse.expires_in * 1000,
|
|
271
273
|
scope: tokenResponse.scope,
|
|
272
274
|
cloud_id: site.id,
|
|
273
275
|
site_url: site.url,
|
|
@@ -277,3 +279,16 @@ export const buildOAuthToken = (
|
|
|
277
279
|
email: user.email
|
|
278
280
|
}
|
|
279
281
|
})
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Build an OAuth token using the host clock.
|
|
285
|
+
*
|
|
286
|
+
* @deprecated Effect workflows should call {@link buildOAuthTokenAt} with
|
|
287
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
288
|
+
* public API until the next major release.
|
|
289
|
+
*/
|
|
290
|
+
export const buildOAuthToken = (
|
|
291
|
+
tokenResponse: TokenResponse,
|
|
292
|
+
site: AccessibleResource,
|
|
293
|
+
user: UserInfo
|
|
294
|
+
): OAuthToken => buildOAuthTokenAt(tokenResponse, site, user, unsafeCurrentTimeMillis())
|
package/src/auth/index.ts
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
// Endpoints and
|
|
7
|
+
// Endpoints and legacy public scope sets. Control Center owns a separate
|
|
8
|
+
// least-privilege release-publication set; proposal-only consumers can use
|
|
9
|
+
// JIRA_PROPOSAL_SCOPES and other write-capable consumers can use JIRA_SCOPES.
|
|
8
10
|
export {
|
|
9
11
|
AUTH_URL,
|
|
10
12
|
buildAuthUrl,
|
|
@@ -12,6 +14,7 @@ export {
|
|
|
12
14
|
computeCodeChallenge,
|
|
13
15
|
CONFLUENCE_SCOPES,
|
|
14
16
|
generateCodeVerifier,
|
|
17
|
+
JIRA_PROPOSAL_SCOPES,
|
|
15
18
|
JIRA_SCOPES,
|
|
16
19
|
ME_URL,
|
|
17
20
|
RESOURCES_URL,
|
|
@@ -25,6 +28,7 @@ export { AuthMissingError, OAuthError, OAuthNotConfiguredError, type OAuthStep }
|
|
|
25
28
|
// Operations
|
|
26
29
|
export {
|
|
27
30
|
buildOAuthToken,
|
|
31
|
+
buildOAuthTokenAt,
|
|
28
32
|
exchangeCodeForTokens,
|
|
29
33
|
type ExchangeCodeOptions,
|
|
30
34
|
getAccessibleResources,
|
package/src/bin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { NodeHttpClient, NodeRuntime, NodeServices } from "@effect/platform-node"
|
|
3
3
|
import * as Console from "effect/Console"
|
|
4
4
|
import * as Effect from "effect/Effect"
|
|
5
5
|
import * as Layer from "effect/Layer"
|
|
@@ -99,12 +99,9 @@ const program = Effect.gen(function*() {
|
|
|
99
99
|
const args = yield* stdio.args
|
|
100
100
|
return yield* cli(args)
|
|
101
101
|
}).pipe(
|
|
102
|
-
Effect.provide(NodeStdio.layer),
|
|
103
102
|
Effect.provide(
|
|
104
103
|
Layer.mergeAll(
|
|
105
104
|
NodeServices.layer,
|
|
106
|
-
NodeFileSystem.layer,
|
|
107
|
-
NodePath.layer,
|
|
108
105
|
NodeHttpClient.layerFetch,
|
|
109
106
|
HomeDirectoryLive
|
|
110
107
|
)
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
import * as Clock from "effect/Clock"
|
|
6
7
|
import * as Data from "effect/Data"
|
|
7
8
|
import * as Effect from "effect/Effect"
|
|
8
9
|
import * as FileSystem from "effect/FileSystem"
|
|
@@ -22,7 +23,7 @@ import {
|
|
|
22
23
|
} from "./AuthProfiles.js"
|
|
23
24
|
import { getProfilesPath, type HomeDirectoryError, HomeDirectoryTag } from "./ConfigPaths.js"
|
|
24
25
|
import { type OAuthToken, OAuthTokenSchema } from "./OAuthSchemas.js"
|
|
25
|
-
import { FileSystemError,
|
|
26
|
+
import { FileSystemError, isTokenExpiredAt, loadOAuthConfig } from "./TokenStorage.js"
|
|
26
27
|
|
|
27
28
|
export interface AtlassianToolDefinition {
|
|
28
29
|
readonly toolName: string
|
|
@@ -42,6 +43,14 @@ export const JIRA_REQUIRED_SCOPES: ReadonlyArray<string> = [
|
|
|
42
43
|
"offline_access"
|
|
43
44
|
]
|
|
44
45
|
|
|
46
|
+
/** Legacy read-only Jira requirements retained for proposal-only consumers. */
|
|
47
|
+
export const JIRA_PROPOSAL_REQUIRED_SCOPES: ReadonlyArray<string> = [
|
|
48
|
+
"read:jira-work",
|
|
49
|
+
"read:jira-user",
|
|
50
|
+
"read:me",
|
|
51
|
+
"offline_access"
|
|
52
|
+
]
|
|
53
|
+
|
|
45
54
|
export const CONFLUENCE_REQUIRED_SCOPES: ReadonlyArray<string> = [
|
|
46
55
|
"read:page:confluence",
|
|
47
56
|
"write:page:confluence",
|
|
@@ -135,7 +144,7 @@ const loadLegacyToken = (
|
|
|
135
144
|
)
|
|
136
145
|
const parsed = yield* Effect.try({
|
|
137
146
|
try: () => JSON.parse(content),
|
|
138
|
-
catch: (
|
|
147
|
+
catch: (): "invalid-json" => "invalid-json"
|
|
139
148
|
}).pipe(Effect.catch(() => Effect.succeed(null)))
|
|
140
149
|
if (parsed === null) return null
|
|
141
150
|
return yield* Schema.decodeUnknownEffect(OAuthTokenSchema)(parsed).pipe(
|
|
@@ -166,12 +175,15 @@ export const inspectToolProfiles = (
|
|
|
166
175
|
const [store, config] = yield* Effect.all([loadProfiles(storeName), loadOAuthConfig(storeName)])
|
|
167
176
|
const activeProfile = store.profiles.find((profile) => profile.id === store.activeProfileId) ?? store.profiles[0] ??
|
|
168
177
|
null
|
|
178
|
+
const nowMs = yield* Clock.currentTimeMillis
|
|
169
179
|
return {
|
|
170
180
|
tool,
|
|
171
181
|
authStoreName: storeName,
|
|
172
182
|
activeProfile,
|
|
173
183
|
profiles: store.profiles,
|
|
174
|
-
tokenStatus: activeProfile === null ? "missing" :
|
|
184
|
+
tokenStatus: activeProfile === null ? "missing" : isTokenExpiredAt(activeProfile.token, nowMs, 0)
|
|
185
|
+
? "expired"
|
|
186
|
+
: "valid",
|
|
175
187
|
missingScopes: activeProfile === null ? [] : missingScopes(activeProfile.token, tool.requiredScopes),
|
|
176
188
|
oauthConfigured: config !== null
|
|
177
189
|
}
|
|
@@ -268,7 +280,8 @@ export const refreshActiveProfiles = (
|
|
|
268
280
|
const store = yield* loadProfiles(storeName)
|
|
269
281
|
const active = store.profiles.find((profile) => profile.id === store.activeProfileId) ?? store.profiles[0] ??
|
|
270
282
|
null
|
|
271
|
-
|
|
283
|
+
const nowMs = yield* Clock.currentTimeMillis
|
|
284
|
+
if (!active || !isTokenExpiredAt(active.token, nowMs, 0)) return
|
|
272
285
|
const config = yield* loadOAuthConfig(storeName)
|
|
273
286
|
if (!config) {
|
|
274
287
|
return yield* Effect.fail(new MissingOAuthConfigError({ authStoreName: storeName, profileId: active.id }))
|
|
@@ -23,6 +23,7 @@ import * as FileSystem from "effect/FileSystem"
|
|
|
23
23
|
import type * as Path from "effect/Path"
|
|
24
24
|
import type * as PlatformError from "effect/PlatformError"
|
|
25
25
|
import * as Schema from "effect/Schema"
|
|
26
|
+
import { unsafeCurrentTimeMillis } from "../internal/legacyWallClock.js"
|
|
26
27
|
import { type HomeDirectoryError, type HomeDirectoryTag } from "./ConfigPaths.js"
|
|
27
28
|
import { ensureConfigDir, getAuthPath, getOAuthConfigPath, writeSecureFile } from "./ConfigPaths.js"
|
|
28
29
|
import { type OAuthConfig, OAuthConfigSchema, type OAuthToken, OAuthTokenSchema } from "./OAuthSchemas.js"
|
|
@@ -70,7 +71,7 @@ export const loadToken = (
|
|
|
70
71
|
const tokenPath = yield* getAuthPath(toolName)
|
|
71
72
|
|
|
72
73
|
const exists = yield* fs.exists(tokenPath).pipe(
|
|
73
|
-
Effect.
|
|
74
|
+
Effect.catch(() => Effect.succeed(false))
|
|
74
75
|
)
|
|
75
76
|
if (!exists) {
|
|
76
77
|
return null
|
|
@@ -87,7 +88,7 @@ export const loadToken = (
|
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
return yield* Schema.decodeUnknownEffect(OAuthTokenSchema)(parsed).pipe(
|
|
90
|
-
Effect.
|
|
91
|
+
Effect.catch((e) =>
|
|
91
92
|
Effect.logWarning(`Invalid token schema in ${tokenPath}: ${e}`).pipe(
|
|
92
93
|
Effect.map(() => null)
|
|
93
94
|
)
|
|
@@ -136,7 +137,7 @@ export const deleteToken = (
|
|
|
136
137
|
const tokenPath = yield* getAuthPath(toolName)
|
|
137
138
|
|
|
138
139
|
yield* fs.remove(tokenPath).pipe(
|
|
139
|
-
Effect.
|
|
140
|
+
Effect.catch(() => Effect.void)
|
|
140
141
|
)
|
|
141
142
|
})
|
|
142
143
|
|
|
@@ -160,7 +161,7 @@ export const loadOAuthConfig = (
|
|
|
160
161
|
const configPath = yield* getOAuthConfigPath(toolName)
|
|
161
162
|
|
|
162
163
|
const exists = yield* fs.exists(configPath).pipe(
|
|
163
|
-
Effect.
|
|
164
|
+
Effect.catch(() => Effect.succeed(false))
|
|
164
165
|
)
|
|
165
166
|
if (!exists) {
|
|
166
167
|
return null
|
|
@@ -177,7 +178,7 @@ export const loadOAuthConfig = (
|
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
return yield* Schema.decodeUnknownEffect(OAuthConfigSchema)(parsed).pipe(
|
|
180
|
-
Effect.
|
|
181
|
+
Effect.catch((e) =>
|
|
181
182
|
Effect.logWarning(`Invalid OAuth config schema in ${configPath}: ${e}`).pipe(
|
|
182
183
|
Effect.map(() => null)
|
|
183
184
|
)
|
|
@@ -220,5 +221,18 @@ export const saveOAuthConfig = (
|
|
|
220
221
|
*
|
|
221
222
|
* @category Utilities
|
|
222
223
|
*/
|
|
224
|
+
export const isTokenExpiredAt = (
|
|
225
|
+
token: OAuthToken,
|
|
226
|
+
nowMs: number,
|
|
227
|
+
bufferMs: number = 5 * 60 * 1000
|
|
228
|
+
): boolean => nowMs >= token.expires_at - bufferMs
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Check token expiration using the host clock.
|
|
232
|
+
*
|
|
233
|
+
* @deprecated Effect workflows should call {@link isTokenExpiredAt} with
|
|
234
|
+
* `Clock.currentTimeMillis`. This wrapper preserves the existing synchronous
|
|
235
|
+
* public API until the next major release.
|
|
236
|
+
*/
|
|
223
237
|
export const isTokenExpired = (token: OAuthToken, bufferMs: number = 5 * 60 * 1000): boolean =>
|
|
224
|
-
|
|
238
|
+
isTokenExpiredAt(token, unsafeCurrentTimeMillis(), bufferMs)
|
package/src/config/index.ts
CHANGED
|
@@ -37,6 +37,7 @@ export {
|
|
|
37
37
|
deleteToken,
|
|
38
38
|
FileSystemError,
|
|
39
39
|
isTokenExpired,
|
|
40
|
+
isTokenExpiredAt,
|
|
40
41
|
loadOAuthConfig,
|
|
41
42
|
loadToken,
|
|
42
43
|
saveOAuthConfig,
|
|
@@ -72,6 +73,7 @@ export {
|
|
|
72
73
|
CONFLUENCE_REQUIRED_SCOPES,
|
|
73
74
|
inspectAllToolProfiles,
|
|
74
75
|
inspectToolProfiles,
|
|
76
|
+
JIRA_PROPOSAL_REQUIRED_SCOPES,
|
|
75
77
|
JIRA_REQUIRED_SCOPES,
|
|
76
78
|
migrateLegacyProfiles,
|
|
77
79
|
MissingOAuthConfigError,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility boundary for legacy synchronous OAuth helpers.
|
|
3
|
+
*
|
|
4
|
+
* New Effect workflows must obtain time from `Clock.currentTimeMillis` and call
|
|
5
|
+
* the corresponding `*At` helper. This host-clock read remains only so the
|
|
6
|
+
* existing synchronous public API does not change without a major release.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export const unsafeCurrentTimeMillis = (): number => Date.now()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { JIRA_PROPOSAL_SCOPES, JIRA_SCOPES } from "../src/auth/index.js"
|
|
2
|
+
import { JIRA_PROPOSAL_REQUIRED_SCOPES, JIRA_REQUIRED_SCOPES } from "../src/config/index.js"
|
|
3
|
+
|
|
4
|
+
describe("public compatibility exports", () => {
|
|
5
|
+
it("retains proposal-only Jira scopes beside the write-capable release scopes", () => {
|
|
6
|
+
expect(JIRA_PROPOSAL_SCOPES).toEqual([
|
|
7
|
+
"read:jira-work",
|
|
8
|
+
"read:jira-user",
|
|
9
|
+
"read:me",
|
|
10
|
+
"offline_access"
|
|
11
|
+
])
|
|
12
|
+
expect(JIRA_PROPOSAL_REQUIRED_SCOPES).toEqual(JIRA_PROPOSAL_SCOPES)
|
|
13
|
+
expect(JIRA_SCOPES).toContain("manage:jira-configuration")
|
|
14
|
+
expect(JIRA_REQUIRED_SCOPES).toContain("manage:jira-project")
|
|
15
|
+
})
|
|
16
|
+
})
|