@knpkv/control-center 0.1.0 → 0.2.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/dist/client/.vite/manifest.json +127 -125
- package/dist/client/assets/{ActiveWorkPage-Bvji6Tys.js → ActiveWorkPage-C6QwDV1Y.js} +2 -2
- package/dist/client/assets/{ActiveWorkPage-Bvji6Tys.js.map → ActiveWorkPage-C6QwDV1Y.js.map} +1 -1
- package/dist/client/assets/{AgentPage-Bom41la2.js → AgentPage-OqwP6uRi.js} +2 -2
- package/dist/client/assets/{AgentPage-Bom41la2.js.map → AgentPage-OqwP6uRi.js.map} +1 -1
- package/dist/client/assets/{AtlassianOAuthCallbackPage-dr-B9-DD.js → AtlassianOAuthCallbackPage-Bm7UhU-h.js} +2 -2
- package/dist/client/assets/{AtlassianOAuthCallbackPage-dr-B9-DD.js.map → AtlassianOAuthCallbackPage-Bm7UhU-h.js.map} +1 -1
- package/dist/client/assets/{AuthorizedSharePage-C-P-PNfm.js → AuthorizedSharePage-DblP3USU.js} +2 -2
- package/dist/client/assets/{AuthorizedSharePage-C-P-PNfm.js.map → AuthorizedSharePage-DblP3USU.js.map} +1 -1
- package/dist/client/assets/{BrowserCrypto-BPiuCuW-.js → BrowserCrypto-BGGRC6iW.js} +2 -2
- package/dist/client/assets/{BrowserCrypto-BPiuCuW-.js.map → BrowserCrypto-BGGRC6iW.js.map} +1 -1
- package/dist/client/assets/{BrowserSessionHydrator-C8F_LGhg.js → BrowserSessionHydrator-39UDbHf0.js} +2 -2
- package/dist/client/assets/{BrowserSessionHydrator-C8F_LGhg.js.map → BrowserSessionHydrator-39UDbHf0.js.map} +1 -1
- package/dist/client/assets/{CommandSearch-D6iFcdvj.js → CommandSearch-D4Fnjsl-.js} +2 -2
- package/dist/client/assets/{CommandSearch-D6iFcdvj.js.map → CommandSearch-D4Fnjsl-.js.map} +1 -1
- package/dist/client/assets/{ItemsPage-x39U11an.js → ItemsPage-BZQiTh9b.js} +2 -2
- package/dist/client/assets/{ItemsPage-x39U11an.js.map → ItemsPage-BZQiTh9b.js.map} +1 -1
- package/dist/client/assets/{PairPage-D5vlz4OG.js → PairPage-Dvfse5ky.js} +2 -2
- package/dist/client/assets/{PairPage-D5vlz4OG.js.map → PairPage-Dvfse5ky.js.map} +1 -1
- package/dist/client/assets/{PortfolioOverview-DSUabOmm.js → PortfolioOverview-DeJcfXcw.js} +2 -2
- package/dist/client/assets/{PortfolioOverview-DSUabOmm.js.map → PortfolioOverview-DeJcfXcw.js.map} +1 -1
- package/dist/client/assets/{ReleaseRoute-DyDm5s85.js → ReleaseRoute-D9q8_sCk.js} +2 -2
- package/dist/client/assets/{ReleaseRoute-DyDm5s85.js.map → ReleaseRoute-D9q8_sCk.js.map} +1 -1
- package/dist/client/assets/ReleaseWorkset-Bs_FXlbC.js +2 -0
- package/dist/client/assets/ReleaseWorkset-Bs_FXlbC.js.map +1 -0
- package/dist/client/assets/{ServicesPage-CoMVH2Si.js → ServicesPage-Co6GJHgc.js} +2 -2
- package/dist/client/assets/{ServicesPage-CoMVH2Si.js.map → ServicesPage-Co6GJHgc.js.map} +1 -1
- package/dist/client/assets/{TimelinePage-D8Fj_351.js → TimelinePage-CM2og72M.js} +2 -2
- package/dist/client/assets/{TimelinePage-D8Fj_351.js.map → TimelinePage-CM2og72M.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityLink-BRifdJHn.js → WorkspaceEntityLink-CTw_He-8.js} +2 -2
- package/dist/client/assets/{WorkspaceEntityLink-BRifdJHn.js.map → WorkspaceEntityLink-CTw_He-8.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityRoute-BwpujSqk.css → WorkspaceEntityRoute-Bdmv6ki4.css} +1 -1
- package/dist/client/assets/WorkspaceEntityRoute-BnsmaeS2.js +30 -0
- package/dist/client/assets/WorkspaceEntityRoute-BnsmaeS2.js.map +1 -0
- package/dist/client/assets/{WorkspaceReleaseLayout-DDLdY0rU.js → WorkspaceReleaseLayout-Ba6keUju.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-DDLdY0rU.js.map → WorkspaceReleaseLayout-Ba6keUju.js.map} +1 -1
- package/dist/client/assets/{authenticatedMutationClient-D5yD0rch.js → authenticatedMutationClient-CJklf3iD.js} +2 -2
- package/dist/client/assets/{authenticatedMutationClient-D5yD0rch.js.map → authenticatedMutationClient-CJklf3iD.js.map} +1 -1
- package/dist/client/assets/{authorizedShareTransport-Dyj53kJf.js → authorizedShareTransport-Xg20SHJ5.js} +2 -2
- package/dist/client/assets/{authorizedShareTransport-Dyj53kJf.js.map → authorizedShareTransport-Xg20SHJ5.js.map} +1 -1
- package/dist/client/assets/{client-OmvShYdC.js → client-P7FaPwzJ.js} +2 -2
- package/dist/client/assets/{client-OmvShYdC.js.map → client-P7FaPwzJ.js.map} +1 -1
- package/dist/client/assets/{connectionTestTransport-c25QXx7A.js → connectionTestTransport-C9iPOkKM.js} +2 -2
- package/dist/client/assets/{connectionTestTransport-c25QXx7A.js.map → connectionTestTransport-C9iPOkKM.js.map} +1 -1
- package/dist/client/assets/{index-DLoOV6Hp.js → index-DpW_ckau.js} +3 -3
- package/dist/client/assets/{index-DLoOV6Hp.js.map → index-DpW_ckau.js.map} +1 -1
- package/dist/client/assets/{patterns-DEbg7R-A-Cw0A2uKS.js → patterns-DEbg7R-A-BhsMyh9D.js} +2 -2
- package/dist/client/assets/{patterns-DEbg7R-A-Cw0A2uKS.js.map → patterns-DEbg7R-A-BhsMyh9D.js.map} +1 -1
- package/dist/client/assets/{presentPortfolio-CkRqd_zz.js → presentPortfolio-D-v615bg.js} +2 -2
- package/dist/client/assets/{presentPortfolio-CkRqd_zz.js.map → presentPortfolio-D-v615bg.js.map} +1 -1
- package/dist/client/assets/presentWorkspaceItems-IAp5SnpB.js +2 -0
- package/dist/client/assets/presentWorkspaceItems-IAp5SnpB.js.map +1 -0
- package/dist/client/assets/{releaseRoutes-DSWkTh-E.js → releaseRoutes-CfaNElmG.js} +2 -2
- package/dist/client/assets/{releaseRoutes-DSWkTh-E.js.map → releaseRoutes-CfaNElmG.js.map} +1 -1
- package/dist/client/assets/{serviceOnboarding-B9pvdyWf.js → serviceOnboarding-BZ2U_Ugw.js} +2 -2
- package/dist/client/assets/{serviceOnboarding-B9pvdyWf.js.map → serviceOnboarding-BZ2U_Ugw.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceItems-D0FuHGto.js → useWorkspaceItems-DQTYaq1R.js} +2 -2
- package/dist/client/assets/{useWorkspaceItems-D0FuHGto.js.map → useWorkspaceItems-DQTYaq1R.js.map} +1 -1
- package/dist/client/assets/workspaceEntityRoutes-Biw67kRR.js +2 -0
- package/dist/client/assets/workspaceEntityRoutes-Biw67kRR.js.map +1 -0
- package/dist/client/build-graph.json +32 -2
- package/dist/client/index.html +1 -1
- package/dist/server/api/deliveryGraph.d.ts +126 -0
- package/dist/server/api/deliveryGraph.d.ts.map +1 -1
- package/dist/server/api/index.js +2 -2
- package/dist/server/api/shares.d.ts +14 -0
- package/dist/server/api/shares.d.ts.map +1 -1
- package/dist/server/assets/{BindConfig-BjK10BEb.js → BindConfig-Dk3vjYZc.js} +7 -7
- package/dist/server/assets/{BindConfig-BjK10BEb.js.map → BindConfig-Dk3vjYZc.js.map} +1 -1
- package/dist/server/assets/{controlCenterApi-tZPvRPRH.js → controlCenterApi-Dsug4Rzi.js} +2 -2
- package/dist/server/assets/{controlCenterApi-tZPvRPRH.js.map → controlCenterApi-Dsug4Rzi.js.map} +1 -1
- package/dist/server/assets/{domainEvent-x7yeq-gU.js → domainEvent-CZLKMqgn.js} +13 -2
- package/dist/server/assets/{domainEvent-x7yeq-gU.js.map → domainEvent-CZLKMqgn.js.map} +1 -1
- package/dist/server/assets/{firstPartyServices-Y41P8uke.js → firstPartyServices-BWdrzdfD.js} +2 -2
- package/dist/server/assets/{firstPartyServices-Y41P8uke.js.map → firstPartyServices-BWdrzdfD.js.map} +1 -1
- package/dist/server/assets/{manualPluginSynchronization-C0aHB4UM.js → manualPluginSynchronization-CDnX9qXi.js} +64 -23
- package/dist/server/assets/manualPluginSynchronization-CDnX9qXi.js.map +1 -0
- package/dist/server/assets/{portfolioInvalidation-Ds9Xm4_P.js → portfolioInvalidation-iTUo5N4r.js} +26 -6
- package/dist/server/assets/portfolioInvalidation-iTUo5N4r.js.map +1 -0
- package/dist/server/assets/{readiness-CzU3vjYQ.js → readiness-CZBkcjLP.js} +2 -2
- package/dist/server/assets/{readiness-CzU3vjYQ.js.map → readiness-CZBkcjLP.js.map} +1 -1
- package/dist/server/build-graph.json +1 -0
- package/dist/server/domain/deliveryGraph.d.ts +14 -0
- package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
- package/dist/server/domain/index.js +3 -3
- package/dist/server/index.js +4 -4
- package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts +1 -1
- package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
- package/dist/server/server/cli.js +4 -4
- package/dist/server/server/index.js +3 -3
- package/dist/server/server/persistence/Persistence.d.ts +35 -0
- package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +56 -0
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +7 -0
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +35 -0
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +7 -0
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +14 -0
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +35 -0
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/client/assets/ReleaseWorkset-BhGacsgb.js +0 -2
- package/dist/client/assets/ReleaseWorkset-BhGacsgb.js.map +0 -1
- package/dist/client/assets/WorkspaceEntityRoute-DPci8Q8I.js +0 -30
- package/dist/client/assets/WorkspaceEntityRoute-DPci8Q8I.js.map +0 -1
- package/dist/client/assets/presentWorkspaceItems-BU__8LcC.js +0 -2
- package/dist/client/assets/presentWorkspaceItems-BU__8LcC.js.map +0 -1
- package/dist/client/assets/workspaceEntityRoutes-CRcfSq7c.js +0 -2
- package/dist/client/assets/workspaceEntityRoutes-CRcfSq7c.js.map +0 -1
- package/dist/server/assets/manualPluginSynchronization-C0aHB4UM.js.map +0 -1
- package/dist/server/assets/portfolioInvalidation-Ds9Xm4_P.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e,At as t,B as n,F as r,I as i,L as a,N as o,V as s,_ as c,dt as l,i as u,j as d,k as f,kt as p,n as m,pt as h,r as g,st as _,t as v,z as y}from"./client-
|
|
2
|
-
//# sourceMappingURL=connectionTestTransport-
|
|
1
|
+
import{A as e,At as t,B as n,F as r,I as i,L as a,N as o,V as s,_ as c,dt as l,i as u,j as d,k as f,kt as p,n as m,pt as h,r as g,st as _,t as v,z as y}from"./client-P7FaPwzJ.js";import{n as b,t as x}from"./BrowserCrypto-BGGRC6iW.js";import{t as S}from"./authenticatedMutationClient-CJklf3iD.js";var C=`cc_atlassian_oauth_setup_intent_state`,w=a(d({preferredSiteId:f(e.check(s(),n(),y(512))),providers:g})),T=e=>{let n=r(m)(e);return t(n)?n.success:null},E=e=>`cc_atlassian_oauth_setup_intent:${e}`,D=e=>{try{let t=new URL(e).searchParams.getAll(`state`);return t.length===1?T(t[0]??null):null}catch{return null}},O=(e,t)=>{let n=D(e),r=i(w)(t);if(n===null||p(r))return!1;try{let e=T(sessionStorage.getItem(C));return e!==null&&e!==n&&sessionStorage.removeItem(E(e)),sessionStorage.setItem(E(n),r.success),sessionStorage.setItem(C,n),!0}catch{try{sessionStorage.removeItem(E(n))}catch{}return!1}},k=e=>{let n=T(e);if(n===null)return null;try{let e=E(n),i=sessionStorage.getItem(e);if(i===null)return null;let a=r(w)(i);return t(a)?a.success:(sessionStorage.removeItem(e),sessionStorage.getItem(C)===n&&sessionStorage.removeItem(C),null)}catch{return null}},A=e=>{let t=T(e);if(t!==null)try{sessionStorage.removeItem(E(t)),sessionStorage.getItem(C)===t&&sessionStorage.removeItem(C)}catch{}},j={startAtlassianOAuthGrant:(e,t,n)=>h(_(function*(){return yield*(yield*S).plugins.createAtlassianOAuthGrant({payload:{providers:e,...n===void 0?{}:{configuration:n}}})}).pipe(l(u)),{signal:t}),exchangeAtlassianOAuthGrant:(e,t,n)=>h(_(function*(){return yield*(yield*S).plugins.exchangeAtlassianOAuthGrant({params:{grantId:e},payload:{code:t}})}).pipe(l(u)),{signal:n}),completeAtlassianOAuthGrant:(e,t,n)=>h(_(function*(){return yield*(yield*S).plugins.completeAtlassianOAuthGrant({params:{grantId:e},payload:{cloudId:t}})}).pipe(l(u)),{signal:n}),discoverAtlassianProfiles:e=>h(_(function*(){return yield*(yield*v()).plugins.discoverAtlassianProfiles()}).pipe(l(u)),{signal:e}),discoverAwsProfiles:e=>h(_(function*(){return yield*(yield*v()).plugins.discoverAwsProfiles()}).pipe(l(u)),{signal:e}),discoverAwsResources:(e,t)=>h(_(function*(){return yield*(yield*S).plugins.discoverAwsResources({payload:e})}).pipe(l(u)),{signal:t}),overview:e=>h(_(function*(){return yield*(yield*v()).plugins.overview()}).pipe(l(u)),{signal:e}),create:(e,t)=>h(_(function*(){return yield*(yield*S).plugins.createConnection({payload:e})}).pipe(l(u)),{signal:t}),createBatch:(e,t)=>h(_(function*(){return yield*(yield*S).plugins.createConnections({payload:e})}).pipe(l(u)),{signal:t}),makeConnectionId:()=>h(_(function*(){let e=yield*b;return yield*o(c)(yield*e.randomUUIDv7)}).pipe(l(x))),setEnabled:(e,t,n)=>h(_(function*(){return yield*(yield*S).plugins.setConnectionEnabled({params:{pluginConnectionId:e},payload:{isEnabled:t}})}).pipe(l(u)),{signal:n}),test:(e,t)=>h(_(function*(){return yield*(yield*S).plugins.testConnection({params:{pluginConnectionId:e}})}).pipe(l(u)),{signal:t}),synchronization:(e,t)=>h(_(function*(){return yield*(yield*v()).plugins.synchronization({params:{pluginConnectionId:e}})}).pipe(l(u)),{signal:t}),synchronize:(e,t)=>h(_(function*(){return yield*(yield*S).plugins.synchronizeConnection({params:{pluginConnectionId:e}})}).pipe(l(u)),{signal:t})};export{O as i,A as n,k as r,j as t};
|
|
2
|
+
//# sourceMappingURL=connectionTestTransport-C9iPOkKM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionTestTransport-c25QXx7A.js","names":[],"sources":["../../../src/client/services/atlassianOAuthSetupIntentStorage.ts","../../../src/client/services/connectionTestTransport.ts"],"sourcesContent":["import * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { AtlassianOAuthGrantId, AtlassianOAuthProviderIntent } from \"../../api/plugins.js\"\n\nconst activeGrantStorageKey = \"cc_atlassian_oauth_setup_intent_state\"\nconst StoredAtlassianOAuthSetupIntent = Schema.fromJsonString(Schema.Struct({\n preferredSiteId: Schema.NullOr(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))\n ),\n providers: AtlassianOAuthProviderIntent\n}))\n\n/** Bounded setup target that survives the same-tab OAuth redirect. */\nexport type AtlassianOAuthSetupIntent = typeof StoredAtlassianOAuthSetupIntent.Type\n\nconst decodedGrantId = (value: string | null): AtlassianOAuthGrantId | null => {\n const decoded = Schema.decodeUnknownResult(AtlassianOAuthGrantId)(value)\n return Result.isSuccess(decoded) ? decoded.success : null\n}\n\nconst setupIntentStorageKey = (grantId: AtlassianOAuthGrantId): string => `cc_atlassian_oauth_setup_intent:${grantId}`\n\nconst authorizationGrantId = (authorizationUrl: string): AtlassianOAuthGrantId | null => {\n try {\n const states = new URL(authorizationUrl).searchParams.getAll(\"state\")\n return states.length === 1 ? decodedGrantId(states[0] ?? null) : null\n } catch {\n return null\n }\n}\n\n/** Persist one bounded, schema-valid setup target for the next same-tab Atlassian redirect. */\nexport const rememberAtlassianOAuthSetupIntent = (\n authorizationUrl: string,\n intent: AtlassianOAuthSetupIntent\n): boolean => {\n const grantId = authorizationGrantId(authorizationUrl)\n const encoded = Schema.encodeUnknownResult(StoredAtlassianOAuthSetupIntent)(intent)\n if (grantId === null || Result.isFailure(encoded)) return false\n try {\n const previousGrantId = decodedGrantId(sessionStorage.getItem(activeGrantStorageKey))\n if (previousGrantId !== null && previousGrantId !== grantId) {\n sessionStorage.removeItem(setupIntentStorageKey(previousGrantId))\n }\n sessionStorage.setItem(setupIntentStorageKey(grantId), encoded.success)\n sessionStorage.setItem(activeGrantStorageKey, grantId)\n return true\n } catch {\n try {\n sessionStorage.removeItem(setupIntentStorageKey(grantId))\n } catch {\n // Storage is unavailable; the caller keeps the person on the setup form.\n }\n return false\n }\n}\n\n/** Read only a schema-valid setup target associated with the exact callback state. */\nexport const readAtlassianOAuthSetupIntent = (\n state: string | null\n): AtlassianOAuthSetupIntent | null => {\n const grantId = decodedGrantId(state)\n if (grantId === null) return null\n try {\n const key = setupIntentStorageKey(grantId)\n const source = sessionStorage.getItem(key)\n if (source === null) return null\n const decoded = Schema.decodeUnknownResult(StoredAtlassianOAuthSetupIntent)(source)\n if (Result.isSuccess(decoded)) return decoded.success\n sessionStorage.removeItem(key)\n if (sessionStorage.getItem(activeGrantStorageKey) === grantId) sessionStorage.removeItem(activeGrantStorageKey)\n return null\n } catch {\n return null\n }\n}\n\n/** Forget callback intent once navigation has safely encoded or discarded it. */\nexport const forgetAtlassianOAuthSetupIntent = (state: string | null): void => {\n const grantId = decodedGrantId(state)\n if (grantId === null) return\n try {\n sessionStorage.removeItem(setupIntentStorageKey(grantId))\n if (sessionStorage.getItem(activeGrantStorageKey) === grantId) sessionStorage.removeItem(activeGrantStorageKey)\n } catch {\n // Storage cleanup is best-effort in hardened browser contexts.\n }\n}\n","import * as BrowserCrypto from \"@effect/platform-browser/BrowserCrypto\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type {\n AtlassianOAuthClientConfiguration,\n AtlassianOAuthGrantExchangeResponse,\n AtlassianOAuthGrantId,\n AtlassianOAuthGrantStartResponse,\n AtlassianOAuthProviderIntent,\n AtlassianProfileDiscoveryResponse,\n AwsProfileDiscoveryResponse,\n AwsResourceDiscoveryRequest,\n AwsResourceDiscoveryResponse,\n CreatePluginConnectionRequest,\n CreatePluginConnectionResponse,\n CreatePluginConnectionsRequest,\n CreatePluginConnectionsResponse,\n PluginConnectionSummary,\n PluginConnectionTestResult,\n PluginOverviewResponse,\n PluginSynchronizationState\n} from \"../../api/index.js\"\nimport type { DiscoveredAtlassianProfile } from \"../../api/plugins.js\"\nimport { PluginConnectionId } from \"../../domain/identifiers.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Browser boundary for connection administration reads and live tests. */\nexport interface ConnectionTestTransport {\n /** Optional only for injected legacy/test transports; the browser transport always discovers profiles. */\n readonly discoverAwsProfiles?: (signal: AbortSignal) => Promise<AwsProfileDiscoveryResponse>\n readonly discoverAwsResources?: (\n request: AwsResourceDiscoveryRequest,\n signal: AbortSignal\n ) => Promise<AwsResourceDiscoveryResponse>\n readonly discoverAtlassianProfiles?: (signal: AbortSignal) => Promise<AtlassianProfileDiscoveryResponse>\n readonly startAtlassianOAuthGrant?: (\n providers: AtlassianOAuthProviderIntent,\n signal: AbortSignal,\n configuration?: AtlassianOAuthClientConfiguration\n ) => Promise<AtlassianOAuthGrantStartResponse>\n readonly exchangeAtlassianOAuthGrant?: (\n grantId: AtlassianOAuthGrantId,\n code: string,\n signal: AbortSignal\n ) => Promise<AtlassianOAuthGrantExchangeResponse>\n readonly completeAtlassianOAuthGrant?: (\n grantId: AtlassianOAuthGrantId,\n cloudId: string,\n signal: AbortSignal\n ) => Promise<DiscoveredAtlassianProfile>\n readonly overview: (signal: AbortSignal) => Promise<PluginOverviewResponse>\n readonly create: (\n request: CreatePluginConnectionRequest,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionResponse>\n readonly createBatch?: (\n request: CreatePluginConnectionsRequest,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionsResponse>\n readonly makeConnectionId: () => Promise<PluginConnectionId>\n readonly setEnabled: (\n pluginConnectionId: PluginConnectionId,\n isEnabled: boolean,\n signal: AbortSignal\n ) => Promise<PluginConnectionSummary>\n readonly test: (pluginConnectionId: PluginConnectionId, signal: AbortSignal) => Promise<PluginConnectionTestResult>\n readonly synchronization?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginSynchronizationState>\n readonly synchronize?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginSynchronizationState>\n}\n\n/** Generated-client transport carrying cookies and the current tab's mutation proof. */\nexport const browserConnectionTestTransport: ConnectionTestTransport = {\n startAtlassianOAuthGrant: (providers, signal, configuration) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createAtlassianOAuthGrant({\n payload: { providers, ...(configuration === undefined ? {} : { configuration }) }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n exchangeAtlassianOAuthGrant: (grantId, code, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.exchangeAtlassianOAuthGrant({\n params: { grantId },\n payload: { code }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n completeAtlassianOAuthGrant: (grantId, cloudId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.completeAtlassianOAuthGrant({\n params: { grantId },\n payload: { cloudId }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAtlassianProfiles: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.discoverAtlassianProfiles()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAwsProfiles: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.discoverAwsProfiles()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAwsResources: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.discoverAwsResources({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n overview: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.overview()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n create: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createConnection({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n createBatch: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createConnections({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeConnectionId: () =>\n Effect.runPromise(\n Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n return yield* Schema.decodeUnknownEffect(PluginConnectionId)(yield* cryptoService.randomUUIDv7)\n }).pipe(Effect.provide(BrowserCrypto.layer))\n ),\n setEnabled: (pluginConnectionId, isEnabled, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.setConnectionEnabled({\n params: { pluginConnectionId },\n payload: { isEnabled }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n test: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.testConnection({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n synchronization: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.synchronization({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n synchronize: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.synchronizeConnection({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connectionTestTransport-C9iPOkKM.js","names":[],"sources":["../../../src/client/services/atlassianOAuthSetupIntentStorage.ts","../../../src/client/services/connectionTestTransport.ts"],"sourcesContent":["import * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { AtlassianOAuthGrantId, AtlassianOAuthProviderIntent } from \"../../api/plugins.js\"\n\nconst activeGrantStorageKey = \"cc_atlassian_oauth_setup_intent_state\"\nconst StoredAtlassianOAuthSetupIntent = Schema.fromJsonString(Schema.Struct({\n preferredSiteId: Schema.NullOr(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))\n ),\n providers: AtlassianOAuthProviderIntent\n}))\n\n/** Bounded setup target that survives the same-tab OAuth redirect. */\nexport type AtlassianOAuthSetupIntent = typeof StoredAtlassianOAuthSetupIntent.Type\n\nconst decodedGrantId = (value: string | null): AtlassianOAuthGrantId | null => {\n const decoded = Schema.decodeUnknownResult(AtlassianOAuthGrantId)(value)\n return Result.isSuccess(decoded) ? decoded.success : null\n}\n\nconst setupIntentStorageKey = (grantId: AtlassianOAuthGrantId): string => `cc_atlassian_oauth_setup_intent:${grantId}`\n\nconst authorizationGrantId = (authorizationUrl: string): AtlassianOAuthGrantId | null => {\n try {\n const states = new URL(authorizationUrl).searchParams.getAll(\"state\")\n return states.length === 1 ? decodedGrantId(states[0] ?? null) : null\n } catch {\n return null\n }\n}\n\n/** Persist one bounded, schema-valid setup target for the next same-tab Atlassian redirect. */\nexport const rememberAtlassianOAuthSetupIntent = (\n authorizationUrl: string,\n intent: AtlassianOAuthSetupIntent\n): boolean => {\n const grantId = authorizationGrantId(authorizationUrl)\n const encoded = Schema.encodeUnknownResult(StoredAtlassianOAuthSetupIntent)(intent)\n if (grantId === null || Result.isFailure(encoded)) return false\n try {\n const previousGrantId = decodedGrantId(sessionStorage.getItem(activeGrantStorageKey))\n if (previousGrantId !== null && previousGrantId !== grantId) {\n sessionStorage.removeItem(setupIntentStorageKey(previousGrantId))\n }\n sessionStorage.setItem(setupIntentStorageKey(grantId), encoded.success)\n sessionStorage.setItem(activeGrantStorageKey, grantId)\n return true\n } catch {\n try {\n sessionStorage.removeItem(setupIntentStorageKey(grantId))\n } catch {\n // Storage is unavailable; the caller keeps the person on the setup form.\n }\n return false\n }\n}\n\n/** Read only a schema-valid setup target associated with the exact callback state. */\nexport const readAtlassianOAuthSetupIntent = (\n state: string | null\n): AtlassianOAuthSetupIntent | null => {\n const grantId = decodedGrantId(state)\n if (grantId === null) return null\n try {\n const key = setupIntentStorageKey(grantId)\n const source = sessionStorage.getItem(key)\n if (source === null) return null\n const decoded = Schema.decodeUnknownResult(StoredAtlassianOAuthSetupIntent)(source)\n if (Result.isSuccess(decoded)) return decoded.success\n sessionStorage.removeItem(key)\n if (sessionStorage.getItem(activeGrantStorageKey) === grantId) sessionStorage.removeItem(activeGrantStorageKey)\n return null\n } catch {\n return null\n }\n}\n\n/** Forget callback intent once navigation has safely encoded or discarded it. */\nexport const forgetAtlassianOAuthSetupIntent = (state: string | null): void => {\n const grantId = decodedGrantId(state)\n if (grantId === null) return\n try {\n sessionStorage.removeItem(setupIntentStorageKey(grantId))\n if (sessionStorage.getItem(activeGrantStorageKey) === grantId) sessionStorage.removeItem(activeGrantStorageKey)\n } catch {\n // Storage cleanup is best-effort in hardened browser contexts.\n }\n}\n","import * as BrowserCrypto from \"@effect/platform-browser/BrowserCrypto\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type {\n AtlassianOAuthClientConfiguration,\n AtlassianOAuthGrantExchangeResponse,\n AtlassianOAuthGrantId,\n AtlassianOAuthGrantStartResponse,\n AtlassianOAuthProviderIntent,\n AtlassianProfileDiscoveryResponse,\n AwsProfileDiscoveryResponse,\n AwsResourceDiscoveryRequest,\n AwsResourceDiscoveryResponse,\n CreatePluginConnectionRequest,\n CreatePluginConnectionResponse,\n CreatePluginConnectionsRequest,\n CreatePluginConnectionsResponse,\n PluginConnectionSummary,\n PluginConnectionTestResult,\n PluginOverviewResponse,\n PluginSynchronizationState\n} from \"../../api/index.js\"\nimport type { DiscoveredAtlassianProfile } from \"../../api/plugins.js\"\nimport { PluginConnectionId } from \"../../domain/identifiers.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Browser boundary for connection administration reads and live tests. */\nexport interface ConnectionTestTransport {\n /** Optional only for injected legacy/test transports; the browser transport always discovers profiles. */\n readonly discoverAwsProfiles?: (signal: AbortSignal) => Promise<AwsProfileDiscoveryResponse>\n readonly discoverAwsResources?: (\n request: AwsResourceDiscoveryRequest,\n signal: AbortSignal\n ) => Promise<AwsResourceDiscoveryResponse>\n readonly discoverAtlassianProfiles?: (signal: AbortSignal) => Promise<AtlassianProfileDiscoveryResponse>\n readonly startAtlassianOAuthGrant?: (\n providers: AtlassianOAuthProviderIntent,\n signal: AbortSignal,\n configuration?: AtlassianOAuthClientConfiguration\n ) => Promise<AtlassianOAuthGrantStartResponse>\n readonly exchangeAtlassianOAuthGrant?: (\n grantId: AtlassianOAuthGrantId,\n code: string,\n signal: AbortSignal\n ) => Promise<AtlassianOAuthGrantExchangeResponse>\n readonly completeAtlassianOAuthGrant?: (\n grantId: AtlassianOAuthGrantId,\n cloudId: string,\n signal: AbortSignal\n ) => Promise<DiscoveredAtlassianProfile>\n readonly overview: (signal: AbortSignal) => Promise<PluginOverviewResponse>\n readonly create: (\n request: CreatePluginConnectionRequest,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionResponse>\n readonly createBatch?: (\n request: CreatePluginConnectionsRequest,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionsResponse>\n readonly makeConnectionId: () => Promise<PluginConnectionId>\n readonly setEnabled: (\n pluginConnectionId: PluginConnectionId,\n isEnabled: boolean,\n signal: AbortSignal\n ) => Promise<PluginConnectionSummary>\n readonly test: (pluginConnectionId: PluginConnectionId, signal: AbortSignal) => Promise<PluginConnectionTestResult>\n readonly synchronization?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginSynchronizationState>\n readonly synchronize?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginSynchronizationState>\n}\n\n/** Generated-client transport carrying cookies and the current tab's mutation proof. */\nexport const browserConnectionTestTransport: ConnectionTestTransport = {\n startAtlassianOAuthGrant: (providers, signal, configuration) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createAtlassianOAuthGrant({\n payload: { providers, ...(configuration === undefined ? {} : { configuration }) }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n exchangeAtlassianOAuthGrant: (grantId, code, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.exchangeAtlassianOAuthGrant({\n params: { grantId },\n payload: { code }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n completeAtlassianOAuthGrant: (grantId, cloudId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.completeAtlassianOAuthGrant({\n params: { grantId },\n payload: { cloudId }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAtlassianProfiles: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.discoverAtlassianProfiles()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAwsProfiles: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.discoverAwsProfiles()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAwsResources: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.discoverAwsResources({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n overview: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.overview()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n create: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createConnection({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n createBatch: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createConnections({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeConnectionId: () =>\n Effect.runPromise(\n Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n return yield* Schema.decodeUnknownEffect(PluginConnectionId)(yield* cryptoService.randomUUIDv7)\n }).pipe(Effect.provide(BrowserCrypto.layer))\n ),\n setEnabled: (pluginConnectionId, isEnabled, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.setConnectionEnabled({\n params: { pluginConnectionId },\n payload: { isEnabled }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n test: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.testConnection({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n synchronization: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.synchronization({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n synchronize: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.synchronizeConnection({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n"],"mappings":"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"}
|