@alpacakit/integrations 0.1.0-beta.30 → 0.1.0-beta.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,3 +11,8 @@ connection settings and projects them back to a repository reference, while
11
11
  the connection-level `RepositoryHost` finds or creates repositories.
12
12
  Repository-scoped issue, pull-request, and file operations remain on
13
13
  `Repository`.
14
+
15
+ Hosts that must end outstanding provider I/O explicitly can supply
16
+ `createAbortableHttpClient()` through the runtime's `ports.http` option and
17
+ call `close()` during shutdown. `parseRepositoryRef()` parses the shared
18
+ `owner/name` model, preserving nested owner paths such as GitLab groups.
@@ -0,0 +1,17 @@
1
+ import type { HttpClient } from "./ports.js";
2
+ export declare const ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE = "Integration HTTP client is closed.";
3
+ export interface AbortableHttpClient extends HttpClient {
4
+ /** Aborts every in-flight request and refuses new requests. */
5
+ close(): void;
6
+ readonly isClosed: boolean;
7
+ }
8
+ export type AbortableHttpClientOptions = {
9
+ readonly fetch?: HttpClient["fetch"];
10
+ readonly requestDeadlineMs?: number;
11
+ };
12
+ /**
13
+ * A host-owned HTTP client whose lifetime can end independently of the
14
+ * integration runtime using it.
15
+ */
16
+ export declare function createAbortableHttpClient(options?: AbortableHttpClientOptions): AbortableHttpClient;
17
+ //# sourceMappingURL=abortable-http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortable-http-client.d.ts","sourceRoot":"","sources":["../src/abortable-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,oCAAoC,uCACX,CAAC;AAEvC,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,+DAA+D;IAC/D,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CA6BrB"}
@@ -0,0 +1,32 @@
1
+ export const ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE = "Integration HTTP client is closed.";
2
+ /**
3
+ * A host-owned HTTP client whose lifetime can end independently of the
4
+ * integration runtime using it.
5
+ */
6
+ export function createAbortableHttpClient(options = {}) {
7
+ const send = options.fetch ?? globalThis.fetch;
8
+ const lifetime = new AbortController();
9
+ return {
10
+ get isClosed() {
11
+ return lifetime.signal.aborted;
12
+ },
13
+ fetch: async (url, init) => {
14
+ if (lifetime.signal.aborted) {
15
+ throw new Error(ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE);
16
+ }
17
+ const deadlineSignal = options.requestDeadlineMs === undefined
18
+ ? null
19
+ : AbortSignal.timeout(options.requestDeadlineMs);
20
+ const signals = [init?.signal, deadlineSignal, lifetime.signal].filter((signal) => signal !== null && signal !== undefined);
21
+ return await send(url, {
22
+ ...init,
23
+ signal: AbortSignal.any(signals),
24
+ });
25
+ },
26
+ close: () => {
27
+ if (lifetime.signal.aborted)
28
+ return;
29
+ lifetime.abort(new Error(ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE));
30
+ },
31
+ };
32
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/code-hosts/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,cAAc,EAEf,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACZ,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,cAAc,CAqBhB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAEzE;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,YAAY,GACvB,aAAa,CA8Bf;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,iBAAiB,CAkCnB;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,iBAAiB,CASjE;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,aAAa,GACxB,kBAAkB,CAapB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMnD;AAiDD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI3C"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/code-hosts/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,cAAc,EAEf,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACZ,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,cAAc,CAqBhB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAEzE;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,YAAY,GACvB,aAAa,CA8Bf;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,uBAAuB,GAClC,iBAAiB,CAkCnB;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,iBAAiB,CASjE;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,aAAa,GACxB,kBAAkB,CAapB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMnD;AA2CD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI3C"}
@@ -1,4 +1,5 @@
1
1
  import { commentRef, pullRequestRef, workItemRef, } from "../ids.js";
2
+ import { parseRepositoryRef } from "../repository-ref.js";
2
3
  import { COMMENT_KIND, COMMENT_SIDE, PULL_REQUEST_STATE, WORK_ITEM_KIND, WORK_ITEM_STATE, } from "../values.js";
3
4
  const REVIEW_TYPE_MARKER = "review";
4
5
  const DIFF_TYPE_MARKER = "diff";
@@ -147,13 +148,7 @@ function repositoryFromFullName(value) {
147
148
  return owner === undefined || name === undefined ? null : { owner, name };
148
149
  }
149
150
  function repositoryFromPath(value) {
150
- if (value === null) {
151
- return null;
152
- }
153
- const separator = value.lastIndexOf("/");
154
- return separator <= 0 || separator === value.length - 1
155
- ? null
156
- : { owner: value.slice(0, separator), name: value.slice(separator + 1) };
151
+ return value === null ? null : parseRepositoryRef(value);
157
152
  }
158
153
  export function isBot(raw) {
159
154
  return (raw.type?.toLowerCase() === BOT_TYPE || raw.login.endsWith(BOT_LOGIN_SUFFIX));
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /** Provider-neutral development-management integration runtime. */
2
+ export { ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE, type AbortableHttpClient, type AbortableHttpClientOptions, createAbortableHttpClient, } from "./abortable-http-client.js";
2
3
  export { type AmbientAuthResolver, type Authorization, authorizationHeader, bearerMaterialHandlers, envResolver, type IntegrationAuthBinding, type IntegrationAuthCapability, type IntegrationAuthMaterial, type IntegrationAuthMaterialKind, type IntegrationAuthProfile, type MaterialHandler, type MaterialHandlers, requireSecret, type SecretRef, } from "./auth.js";
3
4
  export { createIntegrationDefinitionCatalog, type IntegrationDefinitionCatalog, } from "./catalog.js";
4
5
  export { BUILTIN_INTEGRATION_ID, type BuiltinIntegrationId, findGitCredentialScheme, gitCredentialScheme, templatePaths, } from "./code-hosts/builtin.js";
@@ -13,6 +14,7 @@ export { changeFeedCursor, commentReaction, commentRef, integrationAuthProfileId
13
14
  export type { DoctorCapability, DoctorCheck, DoctorCheckStatus, IntegrationLoginCapability, IntegrationLoginMethod, LoginContext, LoginEvent, LoginHandle, LoginHandler, LoginOutcome, LoginRequest, LoginRun, } from "./login.js";
14
15
  export * from "./model.js";
15
16
  export type { Clock, Exec, ExecChunk, ExecExit, ExecProcess, ExecSpawnOptions, HttpClient, HttpTelemetry, IntegrationPorts, Logger, SecretResolver, SecretResolvers, SessionPorts, TelemetrySink, } from "./ports.js";
17
+ export { parseRepositoryRef } from "./repository-ref.js";
16
18
  export { type ConnectionCheck, createIntegrationRuntime, type Integration, type IntegrationRuntime, type IntegrationRuntimeOptions, } from "./runtime.js";
17
19
  export { createOpaqueCursorCodec } from "./transport/cursor.js";
18
20
  export { HttpTransport, type HttpTransportOptions, } from "./transport/http-transport.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  /** Provider-neutral development-management integration runtime. */
2
+ export { ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE, createAbortableHttpClient, } from "./abortable-http-client.js";
2
3
  export { authorizationHeader, bearerMaterialHandlers, envResolver, requireSecret, } from "./auth.js";
3
4
  export { createIntegrationDefinitionCatalog, } from "./catalog.js";
4
5
  export { BUILTIN_INTEGRATION_ID, findGitCredentialScheme, gitCredentialScheme, templatePaths, } from "./code-hosts/builtin.js";
@@ -9,6 +10,7 @@ export { defineIntegration } from "./definition.js";
9
10
  export { AUTH_FAILURE_REASON, INTEGRATION_ERROR_CODE, IntegrationError, isIntegrationError, NOT_AVAILABLE_CAUSE, } from "./error.js";
10
11
  export { changeFeedCursor, commentReaction, commentRef, integrationAuthProfileId, integrationConnectionId, integrationId, milestoneRef, pullRequestRef, workItemRef, } from "./ids.js";
11
12
  export * from "./model.js";
13
+ export { parseRepositoryRef } from "./repository-ref.js";
12
14
  export { createIntegrationRuntime, } from "./runtime.js";
13
15
  export { createOpaqueCursorCodec } from "./transport/cursor.js";
14
16
  export { HttpTransport, } from "./transport/http-transport.js";
@@ -0,0 +1,4 @@
1
+ import type { RepositoryRef } from "./model.js";
2
+ /** Parses a provider-neutral `owner/name` path, including nested owners. */
3
+ export declare function parseRepositoryRef(input: string): RepositoryRef | null;
4
+ //# sourceMappingURL=repository-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-ref.d.ts","sourceRoot":"","sources":["../src/repository-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAOtE"}
@@ -0,0 +1,9 @@
1
+ /** Parses a provider-neutral `owner/name` path, including nested owners. */
2
+ export function parseRepositoryRef(input) {
3
+ const separator = input.lastIndexOf("/");
4
+ return separator <= 0 ||
5
+ separator === input.length - 1 ||
6
+ input.includes("//")
7
+ ? null
8
+ : { owner: input.slice(0, separator), name: input.slice(separator + 1) };
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpacakit/integrations",
3
- "version": "0.1.0-beta.30",
3
+ "version": "0.1.0-beta.31",
4
4
  "description": "Provider-neutral development-management integrations for issues, pull requests, and repositories.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "zod": "^4.3.6",
40
- "@alpacakit/core": "0.1.0-beta.30"
40
+ "@alpacakit/core": "0.1.0-beta.31"
41
41
  },
42
42
  "devDependencies": {
43
43
  "typescript": "^5.9.3",