@alpic-ai/sdk 0.0.0-dev.gc47cbb1 → 0.0.0-dev.ge127a8f
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/auth/index.d.ts +8 -0
- package/dist/auth/index.js +7 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/client.d.ts +1 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/lib/emitter.d.ts +7 -0
- package/dist/lib/emitter.js +31 -0
- package/dist/lib/emitter.js.map +1 -0
- package/package.json +8 -2
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { type LoginOptions } from "./login.js";
|
|
2
2
|
import { type Credentials } from "./store.js";
|
|
3
3
|
export type { Credentials, LoginOptions };
|
|
4
|
+
export type AuthEvents = {
|
|
5
|
+
authenticated: {
|
|
6
|
+
sub: string;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
4
9
|
export declare class AlpicAuth {
|
|
10
|
+
#private;
|
|
11
|
+
on: <K extends "authenticated">(event: K, listener: import("../lib/emitter.js").Listener<AuthEvents[K]>) => void;
|
|
12
|
+
off: <K extends "authenticated">(event: K, listener: import("../lib/emitter.js").Listener<AuthEvents[K]>) => void;
|
|
5
13
|
getValidAccessToken(): Promise<Credentials | null>;
|
|
6
14
|
isAuthenticated(): Promise<boolean>;
|
|
7
15
|
getToken(): Promise<string | undefined>;
|
package/dist/auth/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { createEmitter } from "../lib/emitter.js";
|
|
1
2
|
import { oauthLogin } from "./login.js";
|
|
2
3
|
import { getOAuthClient } from "./oauth-client.js";
|
|
3
4
|
import { globalStore } from "./store.js";
|
|
4
5
|
export class AlpicAuth {
|
|
6
|
+
#events = createEmitter();
|
|
7
|
+
on = this.#events.on;
|
|
8
|
+
off = this.#events.off;
|
|
5
9
|
async getValidAccessToken() {
|
|
6
10
|
return getOAuthClient().getValidAccessToken();
|
|
7
11
|
}
|
|
@@ -12,7 +16,9 @@ export class AlpicAuth {
|
|
|
12
16
|
return process.env.ALPIC_API_KEY ?? (await getOAuthClient().getValidAccessToken())?.access_token;
|
|
13
17
|
}
|
|
14
18
|
async login(opts) {
|
|
15
|
-
|
|
19
|
+
const result = await oauthLogin(opts);
|
|
20
|
+
this.#events.emit("authenticated", { sub: result.sub });
|
|
21
|
+
return result;
|
|
16
22
|
}
|
|
17
23
|
async logout() {
|
|
18
24
|
globalStore.clearCredentials();
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ3D,MAAM,OAAO,SAAS;IACpB,OAAO,GAA6B,aAAa,EAAc,CAAC;IAEhE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACrB,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAEvB,KAAK,CAAC,mBAAmB;QACvB,OAAO,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAmB;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;CACF"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type AlpicApi } from "./api/client.js";
|
|
2
2
|
import { AlpicAuth } from "./auth/index.js";
|
|
3
|
-
import { createTunnel
|
|
3
|
+
import { createTunnel } from "./tunnel/tunnel.js";
|
|
4
4
|
export type AlpicClientOptions = {
|
|
5
5
|
apiBaseUrl?: string;
|
|
6
6
|
};
|
|
@@ -10,4 +10,3 @@ export declare class AlpicClient {
|
|
|
10
10
|
readonly tunnel: ReturnType<typeof createTunnel>;
|
|
11
11
|
constructor(opts?: AlpicClientOptions);
|
|
12
12
|
}
|
|
13
|
-
export type { TunnelHandle };
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,OAAO,WAAW;IACb,IAAI,CAAY;IAChB,GAAG,CAAW;IACd,MAAM,CAAkC;IAEjD,YAAY,IAAyB;QACnC,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAE9D,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC;YACzB,UAAU;YACV,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;gBACtD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;oBACtC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,KAAK,CAAC,YAAY,CAAC;YAC5B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export type { AlpicApi } from "./api/client.js";
|
|
2
|
-
export type { Credentials, LoginOptions } from "./auth/index.js";
|
|
2
|
+
export type { AuthEvents, Credentials, LoginOptions } from "./auth/index.js";
|
|
3
3
|
export { AlpicAuth } from "./auth/index.js";
|
|
4
4
|
export { getOAuthClient } from "./auth/oauth-client.js";
|
|
5
5
|
export { GlobalStore, globalStore } from "./auth/store.js";
|
|
6
|
-
export type { AlpicClientOptions
|
|
6
|
+
export type { AlpicClientOptions } from "./client.js";
|
|
7
7
|
export { AlpicClient } from "./client.js";
|
|
8
|
-
export type { OpenTunnelOptions, TunnelRequest } from "./tunnel/tunnel.js";
|
|
8
|
+
export type { OpenTunnelOptions, TunnelHandle, TunnelRequest } from "./tunnel/tunnel.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type Listener<T> = (payload: T) => void;
|
|
2
|
+
export type TypedEmitter<EventMap extends Record<string, unknown>> = {
|
|
3
|
+
on<K extends keyof EventMap>(event: K, listener: Listener<EventMap[K]>): void;
|
|
4
|
+
off<K extends keyof EventMap>(event: K, listener: Listener<EventMap[K]>): void;
|
|
5
|
+
emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
|
|
6
|
+
};
|
|
7
|
+
export declare function createEmitter<EventMap extends Record<string, unknown>>(): TypedEmitter<EventMap>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Minimal typed emitter for SDK lifecycle hooks. Unlike node's EventEmitter it
|
|
2
|
+
// never throws on an unlistened "error" event, and swallows listener errors so
|
|
3
|
+
// observability can never break the operation that emitted the event.
|
|
4
|
+
export function createEmitter() {
|
|
5
|
+
const listeners = new Map();
|
|
6
|
+
return {
|
|
7
|
+
on(event, listener) {
|
|
8
|
+
const set = listeners.get(event) ?? new Set();
|
|
9
|
+
set.add(listener);
|
|
10
|
+
listeners.set(event, set);
|
|
11
|
+
},
|
|
12
|
+
off(event, listener) {
|
|
13
|
+
listeners.get(event)?.delete(listener);
|
|
14
|
+
},
|
|
15
|
+
emit(event, payload) {
|
|
16
|
+
const set = listeners.get(event);
|
|
17
|
+
if (!set) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
for (const listener of set) {
|
|
21
|
+
try {
|
|
22
|
+
listener(payload);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Listener errors must never break the emitting operation.
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/lib/emitter.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,+EAA+E;AAC/E,sEAAsE;AACtE,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0C,CAAC;IAEpE,OAAO;QACL,EAAE,CAAC,KAAK,EAAE,QAAQ;YAChB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAqB,CAAC;YACjE,GAAG,CAAC,GAAG,CAAC,QAA6B,CAAC,CAAC;YACvC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,KAAK,EAAE,QAAQ;YACjB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAA6B,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,OAAO;YACjB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAkB,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alpic-ai/sdk",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.ge127a8f",
|
|
4
4
|
"description": "Programmatic SDK for Alpic (auth, API, tunnel)",
|
|
5
|
+
"homepage": "https://alpic.ai",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/alpic-ai/alpic.git",
|
|
9
|
+
"directory": "packages/sdk"
|
|
10
|
+
},
|
|
5
11
|
"type": "module",
|
|
6
12
|
"main": "./dist/index.js",
|
|
7
13
|
"types": "./dist/index.d.ts",
|
|
@@ -28,7 +34,7 @@
|
|
|
28
34
|
"open": "^11.0.0",
|
|
29
35
|
"openid-client": "^6.8.4",
|
|
30
36
|
"zod": "^4.4.3",
|
|
31
|
-
"@alpic-ai/api": "0.0.0-dev.
|
|
37
|
+
"@alpic-ai/api": "0.0.0-dev.ge127a8f"
|
|
32
38
|
},
|
|
33
39
|
"devDependencies": {
|
|
34
40
|
"@total-typescript/tsconfig": "^1.0.4",
|