@cat-factory/gitlab 0.11.22 → 0.12.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/GitLabIdentityResolver.d.ts.map +1 -1
- package/dist/GitLabIdentityResolver.js +2 -1
- package/dist/GitLabIdentityResolver.js.map +1 -1
- package/dist/index.d.ts +25 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/tokenSource.d.ts +23 -1
- package/dist/tokenSource.d.ts.map +1 -1
- package/dist/tokenSource.js +32 -0
- package/dist/tokenSource.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitLabIdentityResolver.d.ts","sourceRoot":"","sources":["../src/GitLabIdentityResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"GitLabIdentityResolver.d.ts","sourceRoot":"","sources":["../src/GitLabIdentityResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAuB3E,MAAM,WAAW,6BAA6B;IAC5C,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,gGAAgG;IAChG,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAC7C;AAOD,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAqC;IAE7D,YAAY,OAAO,GAAE,6BAAkC,EAItD;IAEK,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA2BzD;IAoBK,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BlD;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VcsIdentityError } from '@cat-factory/kernel';
|
|
1
2
|
import { GITLAB_PUBLIC_API_BASE } from './tokenSource.js';
|
|
2
3
|
// Bound on group pagination for the PAT-login org allowlist: ~1000 groups (mirrors
|
|
3
4
|
// `FetchGitLabClient`'s cap). A user in more groups than this whose only allowlisted group
|
|
@@ -22,7 +23,7 @@ export class GitLabIdentityResolver {
|
|
|
22
23
|
});
|
|
23
24
|
if (!res.ok) {
|
|
24
25
|
const text = await res.text().catch(() => '');
|
|
25
|
-
throw new
|
|
26
|
+
throw new VcsIdentityError(`GitLab /user failed (HTTP ${res.status}): ${text.slice(0, 200)}`, res.status);
|
|
26
27
|
}
|
|
27
28
|
const user = (await res.json());
|
|
28
29
|
if (user.id == null || !user.username) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitLabIdentityResolver.js","sourceRoot":"","sources":["../src/GitLabIdentityResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AA8BzD,mFAAmF;AACnF,2FAA2F;AAC3F,oFAAoF;AACpF,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,MAAM,OAAO,sBAAsB;IAChB,OAAO,CAAQ;IACf,SAAS,CAAc;IACvB,MAAM,CAAsC;IAE7D,YAAY,OAAO,GAAkC,EAAE;QACrD,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC9E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,OAAO,EAAE;YACvD,OAAO,EAAE;gBACP,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,aAAa;aAC5B;SACF,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"GitLabIdentityResolver.js","sourceRoot":"","sources":["../src/GitLabIdentityResolver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Clock, GitHubClient, VcsProviderRegistry } from '@cat-factory/kernel';
|
|
1
|
+
import type { Clock, GitHubClient, GitHubInstallationRepository, SecretCipher, VcsProviderRegistry } from '@cat-factory/kernel';
|
|
2
2
|
import type { GitLabTokenSource } from './tokenSource.js';
|
|
3
3
|
export { FetchGitLabClient, GitLabApiError } from './FetchGitLabClient.js';
|
|
4
4
|
export { GitLabIdentityResolver, type GitLabIdentityResolverOptions, } from './GitLabIdentityResolver.js';
|
|
@@ -6,7 +6,7 @@ export type { FetchGitLabClientDependencies } from './FetchGitLabClient.js';
|
|
|
6
6
|
export { GitLabProvisioningClient } from './provisioning.js';
|
|
7
7
|
export type { GitLabProvisioningDependencies } from './provisioning.js';
|
|
8
8
|
export { GitLabWebhookMapper, GitLabWebhookVerifier } from './webhook.js';
|
|
9
|
-
export { type GitLabTokenSource, StaticGitLabTokenSource, GITLAB_PUBLIC_API_BASE, } from './tokenSource.js';
|
|
9
|
+
export { type GitLabTokenSource, StaticGitLabTokenSource, StoredGitLabTokenSource, GITLAB_PUBLIC_API_BASE, } from './tokenSource.js';
|
|
10
10
|
export * as gitlabProjection from './projection.js';
|
|
11
11
|
export { asGitHubClient, type VcsBackedGitHubClientOptions } from './vcsBackedGitHubClient.js';
|
|
12
12
|
export interface RegisterGitLabOptions {
|
|
@@ -44,4 +44,27 @@ export interface BuildGitLabEngineClientOptions {
|
|
|
44
44
|
* cannot drift in HOW they build it. The GitHub App client wins when both are configured.
|
|
45
45
|
*/
|
|
46
46
|
export declare function buildGitLabEngineClient(options: BuildGitLabEngineClientOptions): GitHubClient;
|
|
47
|
+
export interface BuildGitLabConnectClientOptions {
|
|
48
|
+
/** Reads the per-workspace `github_installations` row carrying the sealed PAT. */
|
|
49
|
+
installations: GitHubInstallationRepository;
|
|
50
|
+
/** Decrypts the sealed PAT at call time. */
|
|
51
|
+
cipher: SecretCipher;
|
|
52
|
+
/** REST v4 base for the deployment's GitLab instance. */
|
|
53
|
+
apiBase: string;
|
|
54
|
+
clock: Clock;
|
|
55
|
+
fetchImpl?: typeof fetch;
|
|
56
|
+
logger?: {
|
|
57
|
+
warn: (message: string) => void;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Build a GitLab-backed {@link GitHubClient} for the hosted per-workspace PAT connect flow: a
|
|
62
|
+
* {@link FetchGitLabClient} whose token source ({@link StoredGitLabTokenSource}) resolves and
|
|
63
|
+
* decrypts each connection's sealed PAT, bridged onto the `GitHubClient` port via
|
|
64
|
+
* {@link asGitHubClient}. This is the client the `github` module's sync / installation services
|
|
65
|
+
* read through for a workspace connected via GitLab — routed to per workspace by the
|
|
66
|
+
* provider-routing client when a GitHub App is also configured. Shared by every hosted facade
|
|
67
|
+
* so they cannot drift in HOW they build it.
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildGitLabConnectClient(options: BuildGitLabConnectClientOptions): GitHubClient;
|
|
47
70
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,4BAA4B,EAC5B,YAAY,EACZ,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAM5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAUzD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,gBAAgB,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,KAAK,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAE9F,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,wEAAwE;IACxE,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,qBAAqB,GAC7B,IAAI,CASN;AAED,MAAM,WAAW,8BAA8B;IAC7C,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,YAAY,CAS7F;AAED,MAAM,WAAW,+BAA+B;IAC9C,kFAAkF;IAClF,aAAa,EAAE,4BAA4B,CAAA;IAC3C,4CAA4C;IAC5C,MAAM,EAAE,YAAY,CAAA;IACpB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAC7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,YAAY,CAc/F"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FetchGitLabClient } from './FetchGitLabClient.js';
|
|
2
2
|
import { GitLabProvisioningClient } from './provisioning.js';
|
|
3
|
-
import { StaticGitLabTokenSource } from './tokenSource.js';
|
|
3
|
+
import { StaticGitLabTokenSource, StoredGitLabTokenSource } from './tokenSource.js';
|
|
4
4
|
import { asGitHubClient } from './vcsBackedGitHubClient.js';
|
|
5
5
|
import { GitLabWebhookMapper, GitLabWebhookVerifier } from './webhook.js';
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
@@ -14,7 +14,7 @@ export { FetchGitLabClient, GitLabApiError } from './FetchGitLabClient.js';
|
|
|
14
14
|
export { GitLabIdentityResolver, } from './GitLabIdentityResolver.js';
|
|
15
15
|
export { GitLabProvisioningClient } from './provisioning.js';
|
|
16
16
|
export { GitLabWebhookMapper, GitLabWebhookVerifier } from './webhook.js';
|
|
17
|
-
export { StaticGitLabTokenSource, GITLAB_PUBLIC_API_BASE, } from './tokenSource.js';
|
|
17
|
+
export { StaticGitLabTokenSource, StoredGitLabTokenSource, GITLAB_PUBLIC_API_BASE, } from './tokenSource.js';
|
|
18
18
|
export * as gitlabProjection from './projection.js';
|
|
19
19
|
export { asGitHubClient } from './vcsBackedGitHubClient.js';
|
|
20
20
|
/**
|
|
@@ -50,4 +50,28 @@ export function buildGitLabEngineClient(options) {
|
|
|
50
50
|
provider: 'gitlab',
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Build a GitLab-backed {@link GitHubClient} for the hosted per-workspace PAT connect flow: a
|
|
55
|
+
* {@link FetchGitLabClient} whose token source ({@link StoredGitLabTokenSource}) resolves and
|
|
56
|
+
* decrypts each connection's sealed PAT, bridged onto the `GitHubClient` port via
|
|
57
|
+
* {@link asGitHubClient}. This is the client the `github` module's sync / installation services
|
|
58
|
+
* read through for a workspace connected via GitLab — routed to per workspace by the
|
|
59
|
+
* provider-routing client when a GitHub App is also configured. Shared by every hosted facade
|
|
60
|
+
* so they cannot drift in HOW they build it.
|
|
61
|
+
*/
|
|
62
|
+
export function buildGitLabConnectClient(options) {
|
|
63
|
+
return asGitHubClient({
|
|
64
|
+
vcs: new FetchGitLabClient({
|
|
65
|
+
tokenSource: new StoredGitLabTokenSource({
|
|
66
|
+
installations: options.installations,
|
|
67
|
+
cipher: options.cipher,
|
|
68
|
+
apiBase: options.apiBase,
|
|
69
|
+
}),
|
|
70
|
+
clock: options.clock,
|
|
71
|
+
fetchImpl: options.fetchImpl,
|
|
72
|
+
logger: options.logger,
|
|
73
|
+
}),
|
|
74
|
+
provider: 'gitlab',
|
|
75
|
+
});
|
|
76
|
+
}
|
|
53
77
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGzE,8EAA8E;AAC9E,kFAAkF;AAClF,4FAA4F;AAC5F,wFAAwF;AACxF,4FAA4F;AAC5F,oGAAoG;AACpG,8EAA8E;AAE9E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAEL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,gBAAgB,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAqC,MAAM,4BAA4B,CAAA;AAa9F;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA6B,EAC7B,OAA8B;IAE9B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACxE,QAAQ,CAAC,QAAQ,CAAC;QAChB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,IAAI,iBAAiB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACxE,aAAa,EAAE,IAAI,mBAAmB,CAAC,KAAK,CAAC;QAC7C,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;QACrF,YAAY,EAAE,IAAI,wBAAwB,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;KACvE,CAAC,CAAA;AACJ,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuC;IAC7E,OAAO,cAAc,CAAC;QACpB,GAAG,EAAE,IAAI,iBAAiB,CAAC;YACzB,WAAW,EAAE,IAAI,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;YACxE,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;QACF,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAA;AACJ,CAAC;AAcD;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAwC;IAC/E,OAAO,cAAc,CAAC;QACpB,GAAG,EAAE,IAAI,iBAAiB,CAAC;YACzB,WAAW,EAAE,IAAI,uBAAuB,CAAC;gBACvC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;YACF,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACF,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/tokenSource.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VcsConnectionRef } from '@cat-factory/kernel';
|
|
1
|
+
import type { GitHubInstallationRepository, SecretCipher, VcsConnectionRef } from '@cat-factory/kernel';
|
|
2
2
|
export interface GitLabTokenSource {
|
|
3
3
|
/** The access token to send for calls on this connection (`PRIVATE-TOKEN` header). */
|
|
4
4
|
token(connection: VcsConnectionRef): Promise<string>;
|
|
@@ -22,4 +22,26 @@ export declare class StaticGitLabTokenSource implements GitLabTokenSource {
|
|
|
22
22
|
token(): Promise<string>;
|
|
23
23
|
apiBase(): string;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* A per-workspace token source for the hosted GitLab connect flow: it resolves the sealed PAT
|
|
27
|
+
* stored on the workspace's `github_installations` row (written by `VcsPatConnectionService`)
|
|
28
|
+
* and decrypts it with the deployment `SecretCipher` at call time. The connection is keyed by
|
|
29
|
+
* `connectionId = String(installationId)` (the synthetic id the connect flow derived from the
|
|
30
|
+
* workspace id), so `Number(connectionId)` reads the row back.
|
|
31
|
+
*
|
|
32
|
+
* The REST base is a single deployment-level value (`GITLAB_API_BASE`) — a deployment targets
|
|
33
|
+
* one GitLab instance for all its workspaces — supplied at construction. Unlike
|
|
34
|
+
* {@link StaticGitLabTokenSource}, the token differs per connection, so a workspace only
|
|
35
|
+
* authenticates with the credential it sealed.
|
|
36
|
+
*/
|
|
37
|
+
export declare class StoredGitLabTokenSource implements GitLabTokenSource {
|
|
38
|
+
private readonly deps;
|
|
39
|
+
constructor(deps: {
|
|
40
|
+
installations: GitHubInstallationRepository;
|
|
41
|
+
cipher: SecretCipher;
|
|
42
|
+
apiBase?: string;
|
|
43
|
+
});
|
|
44
|
+
token(connection: VcsConnectionRef): Promise<string>;
|
|
45
|
+
apiBase(): string;
|
|
46
|
+
}
|
|
25
47
|
//# sourceMappingURL=tokenSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenSource.d.ts","sourceRoot":"","sources":["../src/tokenSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tokenSource.d.ts","sourceRoot":"","sources":["../src/tokenSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAU5B,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,KAAK,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAAA;CAC9C;AAED,0CAA0C;AAC1C,eAAO,MAAM,sBAAsB,8BAA8B,CAAA;AAEjE;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAE7D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFvB,YACmB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,MAA+B,EACpD;IAEE,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAE7B;IAED,OAAO,IAAI,MAAM,CAEhB;CACF;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAE7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IADvB,YACmB,IAAI,EAAE;QACrB,aAAa,EAAE,4BAA4B,CAAA;QAC3C,MAAM,EAAE,YAAY,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,EACC;IAEE,KAAK,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYzD;IAED,OAAO,IAAI,MAAM,CAEhB;CACF"}
|
package/dist/tokenSource.js
CHANGED
|
@@ -18,4 +18,36 @@ export class StaticGitLabTokenSource {
|
|
|
18
18
|
return this.base;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* A per-workspace token source for the hosted GitLab connect flow: it resolves the sealed PAT
|
|
23
|
+
* stored on the workspace's `github_installations` row (written by `VcsPatConnectionService`)
|
|
24
|
+
* and decrypts it with the deployment `SecretCipher` at call time. The connection is keyed by
|
|
25
|
+
* `connectionId = String(installationId)` (the synthetic id the connect flow derived from the
|
|
26
|
+
* workspace id), so `Number(connectionId)` reads the row back.
|
|
27
|
+
*
|
|
28
|
+
* The REST base is a single deployment-level value (`GITLAB_API_BASE`) — a deployment targets
|
|
29
|
+
* one GitLab instance for all its workspaces — supplied at construction. Unlike
|
|
30
|
+
* {@link StaticGitLabTokenSource}, the token differs per connection, so a workspace only
|
|
31
|
+
* authenticates with the credential it sealed.
|
|
32
|
+
*/
|
|
33
|
+
export class StoredGitLabTokenSource {
|
|
34
|
+
deps;
|
|
35
|
+
constructor(deps) {
|
|
36
|
+
this.deps = deps;
|
|
37
|
+
}
|
|
38
|
+
async token(connection) {
|
|
39
|
+
const installationId = Number(connection.connectionId);
|
|
40
|
+
if (!Number.isFinite(installationId)) {
|
|
41
|
+
throw new Error(`GitLab connection has a non-numeric connectionId: ${connection.connectionId}`);
|
|
42
|
+
}
|
|
43
|
+
const installation = await this.deps.installations.getByInstallationId(installationId);
|
|
44
|
+
if (!installation || installation.deletedAt || !installation.accessToken) {
|
|
45
|
+
throw new Error(`No GitLab credential stored for connection ${connection.connectionId}`);
|
|
46
|
+
}
|
|
47
|
+
return this.deps.cipher.decrypt(installation.accessToken);
|
|
48
|
+
}
|
|
49
|
+
apiBase() {
|
|
50
|
+
return this.deps.apiBase ?? GITLAB_PUBLIC_API_BASE;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
21
53
|
//# sourceMappingURL=tokenSource.js.map
|
package/dist/tokenSource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenSource.js","sourceRoot":"","sources":["../src/tokenSource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tokenSource.js","sourceRoot":"","sources":["../src/tokenSource.ts"],"names":[],"mappings":"AAyBA,0CAA0C;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAA;AAEjE;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAEf,WAAW;IACX,IAAI;IAFvB,YACmB,WAAmB,EACnB,IAAI,GAAW,sBAAsB;2BADrC,WAAW;oBACX,IAAI;IACpB,CAAC;IAEJ,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,uBAAuB;IAEf,IAAI;IADvB,YACmB,IAIhB;oBAJgB,IAAI;IAKpB,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,UAA4B;QACtC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,qDAAqD,UAAU,CAAC,YAAY,EAAE,CAC/E,CAAA;QACH,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAA;QACtF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,sBAAsB,CAAA;IACpD,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/gitlab",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Opt-in GitLab VCS provider for cat-factory. Implements the provider-neutral VcsClient / webhook / provisioning ports against the GitLab REST v4 API and registers itself via registerVcsProvider('gitlab'). Depends only on @cat-factory/kernel + @cat-factory/contracts.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-factory/contracts": "0.
|
|
28
|
-
"@cat-factory/kernel": "0.
|
|
27
|
+
"@cat-factory/contracts": "0.161.0",
|
|
28
|
+
"@cat-factory/kernel": "0.155.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "7.0.2",
|