@buildspacestudio/sdk 0.1.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.
Files changed (65) hide show
  1. package/dist/auth/client.d.ts +16 -0
  2. package/dist/auth/client.d.ts.map +1 -0
  3. package/dist/auth/client.js +31 -0
  4. package/dist/auth/client.js.map +1 -0
  5. package/dist/auth/index.d.ts +4 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +3 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/auth/server.d.ts +26 -0
  10. package/dist/auth/server.d.ts.map +1 -0
  11. package/dist/auth/server.js +53 -0
  12. package/dist/auth/server.js.map +1 -0
  13. package/dist/client/index.d.ts +21 -0
  14. package/dist/client/index.d.ts.map +1 -0
  15. package/dist/client/index.js +51 -0
  16. package/dist/client/index.js.map +1 -0
  17. package/dist/config.d.ts +30 -0
  18. package/dist/config.d.ts.map +1 -0
  19. package/dist/config.js +27 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/errors.d.ts +13 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +13 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/events/client.d.ts +15 -0
  26. package/dist/events/client.d.ts.map +1 -0
  27. package/dist/events/client.js +56 -0
  28. package/dist/events/client.js.map +1 -0
  29. package/dist/events/index.d.ts +4 -0
  30. package/dist/events/index.d.ts.map +1 -0
  31. package/dist/events/index.js +3 -0
  32. package/dist/events/index.js.map +1 -0
  33. package/dist/events/server.d.ts +19 -0
  34. package/dist/events/server.d.ts.map +1 -0
  35. package/dist/events/server.js +33 -0
  36. package/dist/events/server.js.map +1 -0
  37. package/dist/http.d.ts +29 -0
  38. package/dist/http.d.ts.map +1 -0
  39. package/dist/http.js +62 -0
  40. package/dist/http.js.map +1 -0
  41. package/dist/index.d.ts +30 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +54 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/notifications/index.d.ts +3 -0
  46. package/dist/notifications/index.d.ts.map +1 -0
  47. package/dist/notifications/index.js +2 -0
  48. package/dist/notifications/index.js.map +1 -0
  49. package/dist/notifications/server.d.ts +25 -0
  50. package/dist/notifications/server.d.ts.map +1 -0
  51. package/dist/notifications/server.js +35 -0
  52. package/dist/notifications/server.js.map +1 -0
  53. package/dist/storage/client.d.ts +32 -0
  54. package/dist/storage/client.d.ts.map +1 -0
  55. package/dist/storage/client.js +63 -0
  56. package/dist/storage/client.js.map +1 -0
  57. package/dist/storage/index.d.ts +5 -0
  58. package/dist/storage/index.d.ts.map +1 -0
  59. package/dist/storage/index.js +3 -0
  60. package/dist/storage/index.js.map +1 -0
  61. package/dist/storage/server.d.ts +43 -0
  62. package/dist/storage/server.d.ts.map +1 -0
  63. package/dist/storage/server.js +54 -0
  64. package/dist/storage/server.js.map +1 -0
  65. package/package.json +47 -0
@@ -0,0 +1,16 @@
1
+ import type { HttpTransport } from "../http";
2
+ export declare class AuthClientNamespace {
3
+ private readonly transport;
4
+ constructor(transport: HttpTransport);
5
+ getSignInUrl(opts: {
6
+ appSlug?: string;
7
+ env?: "dev" | "prod";
8
+ redirectUri: string;
9
+ }): string;
10
+ getSignUpUrl(opts: {
11
+ appSlug?: string;
12
+ env?: "dev" | "prod";
13
+ redirectUri: string;
14
+ }): string;
15
+ }
16
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/auth/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,SAAS,EAAE,aAAa;IAIpC,YAAY,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAiB3F,YAAY,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAgB5F"}
@@ -0,0 +1,31 @@
1
+ export class AuthClientNamespace {
2
+ transport;
3
+ constructor(transport) {
4
+ this.transport = transport;
5
+ }
6
+ getSignInUrl(opts) {
7
+ const url = new URL("/sign-in", this.transport.loginUrl);
8
+ if (opts.appSlug) {
9
+ url.searchParams.set("app", opts.appSlug);
10
+ }
11
+ url.searchParams.set("redirect_uri", opts.redirectUri);
12
+ url.searchParams.set("client_id", this.transport.key);
13
+ if (opts.env) {
14
+ url.searchParams.set("env", opts.env);
15
+ }
16
+ return url.toString();
17
+ }
18
+ getSignUpUrl(opts) {
19
+ const url = new URL("/sign-up", this.transport.loginUrl);
20
+ if (opts.appSlug) {
21
+ url.searchParams.set("app", opts.appSlug);
22
+ }
23
+ url.searchParams.set("redirect_uri", opts.redirectUri);
24
+ url.searchParams.set("client_id", this.transport.key);
25
+ if (opts.env) {
26
+ url.searchParams.set("env", opts.env);
27
+ }
28
+ return url.toString();
29
+ }
30
+ }
31
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/auth/client.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IACb,SAAS,CAAgB;IAE1C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,IAAqE;QAChF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,IAAqE;QAChF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { AuthClientNamespace } from "./client";
2
+ export type { AuthSession, AuthUser, TokenResponse } from "./server";
3
+ export { AuthServerNamespace } from "./server";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AuthClientNamespace } from "./client";
2
+ export { AuthServerNamespace } from "./server";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { HttpTransport } from "../http";
2
+ export interface AuthUser {
3
+ email: string;
4
+ id: string;
5
+ name: string | null;
6
+ }
7
+ export interface AuthSession {
8
+ appId: string | null;
9
+ user: AuthUser;
10
+ }
11
+ export interface TokenResponse {
12
+ access_token: string;
13
+ expires_in: number;
14
+ token_type: string;
15
+ user: AuthUser;
16
+ }
17
+ export declare class AuthServerNamespace {
18
+ private readonly transport;
19
+ constructor(transport: HttpTransport);
20
+ getSession(sessionToken: string): Promise<AuthSession | null>;
21
+ handleCallback(request: Request | URL | string, opts?: {
22
+ redirectUri?: string;
23
+ }): Promise<TokenResponse>;
24
+ revokeSession(sessionToken: string): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/auth/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,SAAS,EAAE,aAAa;IAI9B,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAYnE,cAAc,CACZ,OAAO,EAAE,OAAO,GAAG,GAAG,GAAG,MAAM,EAC/B,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC,aAAa,CAAC;IA4BnB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQzD"}
@@ -0,0 +1,53 @@
1
+ export class AuthServerNamespace {
2
+ transport;
3
+ constructor(transport) {
4
+ this.transport = transport;
5
+ }
6
+ async getSession(sessionToken) {
7
+ try {
8
+ return await this.transport.request({
9
+ service: "auth",
10
+ path: "/v1/auth/session",
11
+ headers: { "X-Session-Token": sessionToken },
12
+ });
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ handleCallback(request, opts) {
19
+ let url;
20
+ if (typeof request === "string") {
21
+ url = new URL(request);
22
+ }
23
+ else if (request instanceof URL) {
24
+ url = request;
25
+ }
26
+ else {
27
+ url = new URL(request.url);
28
+ }
29
+ const code = url.searchParams.get("code");
30
+ if (!code) {
31
+ throw new Error("No auth code found in callback URL. Expected ?code= parameter.");
32
+ }
33
+ const redirectUri = opts?.redirectUri ?? `${url.origin}${url.pathname}`;
34
+ return this.transport.request({
35
+ service: "auth",
36
+ path: "/v1/auth/token",
37
+ method: "POST",
38
+ body: {
39
+ code,
40
+ redirect_uri: redirectUri,
41
+ },
42
+ });
43
+ }
44
+ async revokeSession(sessionToken) {
45
+ await this.transport.request({
46
+ service: "auth",
47
+ path: "/v1/auth/session",
48
+ method: "DELETE",
49
+ headers: { "X-Session-Token": sessionToken },
50
+ });
51
+ }
52
+ }
53
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/auth/server.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,mBAAmB;IACb,SAAS,CAAgB;IAE1C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAoB;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAc;gBAC/C,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,cAAc,CACZ,OAA+B,EAC/B,IAA+B;QAE/B,IAAI,GAAQ,CAAC;QACb,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,OAAO,YAAY,GAAG,EAAE,CAAC;YAClC,GAAG,GAAG,OAAO,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAExE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAgB;YAC3C,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,IAAI;gBACJ,YAAY,EAAE,WAAW;aAC1B;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,YAAoB;QACtC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAO;YACjC,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import { AuthClientNamespace } from "../auth";
2
+ import { type BuildspaceClientConfig } from "../config";
3
+ import { EventsClientNamespace } from "../events";
4
+ import { StorageClientNamespace } from "../storage";
5
+ declare class BuildspaceClient {
6
+ private readonly transport;
7
+ private readonly config;
8
+ private _auth;
9
+ private _events;
10
+ private _storage;
11
+ constructor(publishableKey: string, config?: BuildspaceClientConfig);
12
+ get auth(): AuthClientNamespace;
13
+ get events(): EventsClientNamespace;
14
+ get storage(): StorageClientNamespace;
15
+ get notifications(): never;
16
+ clearSession(): void;
17
+ setSession(sessionToken: string): void;
18
+ }
19
+ export declare function createClient(publishableKey: string, config?: BuildspaceClientConfig): BuildspaceClient;
20
+ export { BuildspaceClient };
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,KAAK,sBAAsB,EAAiB,MAAM,WAAW,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,cAAM,gBAAgB;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,QAAQ,CAAuC;gBAE3C,cAAc,EAAE,MAAM,EAAE,MAAM,GAAE,sBAA2B;IAQvE,IAAI,IAAI,IAAI,mBAAmB,CAG9B;IAED,IAAI,MAAM,IAAI,qBAAqB,CAGlC;IAED,IAAI,OAAO,IAAI,sBAAsB,CAGpC;IAED,IAAI,aAAa,IAAI,KAAK,CAQzB;IAED,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAGvC;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,sBAA2B,GAClC,gBAAgB,CAElB;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { AuthClientNamespace } from "../auth";
2
+ import { resolveConfig } from "../config";
3
+ import { BuildspaceError } from "../errors";
4
+ import { EventsClientNamespace } from "../events";
5
+ import { HttpTransport } from "../http";
6
+ import { StorageClientNamespace } from "../storage";
7
+ class BuildspaceClient {
8
+ transport;
9
+ config;
10
+ _auth = null;
11
+ _events = null;
12
+ _storage = null;
13
+ constructor(publishableKey, config = {}) {
14
+ this.config = config;
15
+ this.transport = new HttpTransport({
16
+ key: publishableKey,
17
+ resolvedConfig: resolveConfig("client", config),
18
+ });
19
+ }
20
+ get auth() {
21
+ this._auth ??= new AuthClientNamespace(this.transport);
22
+ return this._auth;
23
+ }
24
+ get events() {
25
+ this._events ??= new EventsClientNamespace(this.transport, this.config.events);
26
+ return this._events;
27
+ }
28
+ get storage() {
29
+ this._storage ??= new StorageClientNamespace(this.transport);
30
+ return this._storage;
31
+ }
32
+ get notifications() {
33
+ throw new BuildspaceError({
34
+ service: "notifications",
35
+ status: 400,
36
+ code: "notifications/server-only",
37
+ message: "Notifications require a secret key. Use the server SDK via new Buildspace() from '@buildspacestudio/sdk'.",
38
+ });
39
+ }
40
+ clearSession() {
41
+ this.transport.clearSession();
42
+ }
43
+ setSession(sessionToken) {
44
+ this.transport.setSession(sessionToken);
45
+ }
46
+ }
47
+ export function createClient(publishableKey, config = {}) {
48
+ return new BuildspaceClient(publishableKey, config);
49
+ }
50
+ export { BuildspaceClient };
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAA+B,aAAa,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,gBAAgB;IACH,SAAS,CAAgB;IACzB,MAAM,CAAyB;IACxC,KAAK,GAA+B,IAAI,CAAC;IACzC,OAAO,GAAiC,IAAI,CAAC;IAC7C,QAAQ,GAAkC,IAAI,CAAC;IAEvD,YAAY,cAAsB,EAAE,SAAiC,EAAE;QACrE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC;YACjC,GAAG,EAAE,cAAc;YACnB,cAAc,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI;QACN,IAAI,CAAC,KAAK,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,IAAI,CAAC,OAAO,KAAK,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,IAAI,CAAC,QAAQ,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,MAAM,IAAI,eAAe,CAAC;YACxB,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,2BAA2B;YACjC,OAAO,EACL,2GAA2G;SAC9G,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,YAAoB;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,cAAsB,EACtB,SAAiC,EAAE;IAEnC,OAAO,IAAI,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare const DEFAULT_BASE_URL = "https://api.buildspace.studio";
2
+ export declare const DEFAULT_LOGIN_URL = "https://login.buildspace.studio";
3
+ export declare const DEFAULT_API_VERSION = "2025-06-01";
4
+ export type ClientMode = "server" | "client";
5
+ export interface BuildspaceConfig {
6
+ baseUrl?: string;
7
+ fetch?: typeof fetch;
8
+ loginUrl?: string;
9
+ version?: string;
10
+ }
11
+ export interface EventsBatchingConfig {
12
+ flushInterval?: number;
13
+ maxBatchSize?: number;
14
+ }
15
+ export interface BuildspaceClientConfig extends BuildspaceConfig {
16
+ events?: EventsBatchingConfig;
17
+ }
18
+ export interface ResolvedConfig {
19
+ baseUrl: string;
20
+ fetch: typeof fetch;
21
+ loginUrl: string;
22
+ mode: ClientMode;
23
+ version: string;
24
+ }
25
+ export declare function resolveConfig(mode: ClientMode, config?: BuildspaceConfig): ResolvedConfig;
26
+ export declare function validateApiKey({ mode, key }: {
27
+ key: string;
28
+ mode: ClientMode;
29
+ }): void;
30
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAChE,eAAO,MAAM,iBAAiB,oCAAoC,CAAC;AACnE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,gBAAqB,GAAG,cAAc,CAQ7F;AAMD,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAgBrF"}
package/dist/config.js ADDED
@@ -0,0 +1,27 @@
1
+ export const DEFAULT_BASE_URL = "https://api.buildspace.studio";
2
+ export const DEFAULT_LOGIN_URL = "https://login.buildspace.studio";
3
+ export const DEFAULT_API_VERSION = "2025-06-01";
4
+ export function resolveConfig(mode, config = {}) {
5
+ return {
6
+ mode,
7
+ baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,
8
+ loginUrl: config.loginUrl ?? DEFAULT_LOGIN_URL,
9
+ version: config.version ?? DEFAULT_API_VERSION,
10
+ fetch: config.fetch ?? fetch,
11
+ };
12
+ }
13
+ function formatMode(mode) {
14
+ return mode === "server" ? "server SDK" : "client SDK";
15
+ }
16
+ export function validateApiKey({ mode, key }) {
17
+ if (!key) {
18
+ throw new Error(`Missing API key. The ${formatMode(mode)} requires a valid Buildspace key.`);
19
+ }
20
+ if (mode === "server" && !key.startsWith("bs_sec_")) {
21
+ throw new Error("The server SDK requires a secret key (bs_sec_*). Use createClient() from '@buildspacestudio/sdk/client' for browser usage with publishable keys.");
22
+ }
23
+ if (mode === "client" && !key.startsWith("bs_pub_")) {
24
+ throw new Error("The client SDK requires a publishable key (bs_pub_*). Use new Buildspace() from '@buildspacestudio/sdk' for server usage with secret keys.");
25
+ }
26
+ }
27
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AA4BhD,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,SAA2B,EAAE;IAC3E,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,gBAAgB;QAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,iBAAiB;QAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,mBAAmB;QAC9C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB;IAClC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,EAAqC;IAC7E,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,kJAAkJ,CACnJ,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,4IAA4I,CAC7I,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type BuildspaceService = "auth" | "events" | "notifications" | "storage";
2
+ export declare class BuildspaceError extends Error {
3
+ readonly code: string;
4
+ readonly service: BuildspaceService;
5
+ readonly status: number;
6
+ constructor({ code, message, service, status, }: {
7
+ code: string;
8
+ message: string;
9
+ service: BuildspaceService;
10
+ status: number;
11
+ });
12
+ }
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;AAEhF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,EACV,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,iBAAiB,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;KAChB;CAOF"}
package/dist/errors.js ADDED
@@ -0,0 +1,13 @@
1
+ export class BuildspaceError extends Error {
2
+ code;
3
+ service;
4
+ status;
5
+ constructor({ code, message, service, status, }) {
6
+ super(message);
7
+ this.name = "BuildspaceError";
8
+ this.code = code;
9
+ this.service = service;
10
+ this.status = status;
11
+ }
12
+ }
13
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAS;IACb,OAAO,CAAoB;IAC3B,MAAM,CAAS;IAExB,YAAY,EACV,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,GAMP;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { HttpTransport } from "../http";
2
+ export declare class EventsClientNamespace {
3
+ private readonly queue;
4
+ private readonly transport;
5
+ private timer;
6
+ constructor(transport: HttpTransport, config?: {
7
+ flushInterval?: number;
8
+ maxBatchSize?: number;
9
+ });
10
+ private readonly maxBatchSize;
11
+ track(event: string, properties?: Record<string, unknown>, actorId?: string): void;
12
+ flush(): Promise<void>;
13
+ shutdown(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/events/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAS7C,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,KAAK,CAA+C;gBAG1D,SAAS,EAAE,aAAa,EACxB,MAAM,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO;IAYhE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAe5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC"}
@@ -0,0 +1,56 @@
1
+ export class EventsClientNamespace {
2
+ queue = [];
3
+ transport;
4
+ timer = null;
5
+ constructor(transport, config = {}) {
6
+ this.transport = transport;
7
+ const flushInterval = config.flushInterval ?? 5000;
8
+ this.maxBatchSize = config.maxBatchSize ?? 20;
9
+ this.timer = setInterval(() => {
10
+ this.flush().catch(() => {
11
+ // best effort flush for background timer
12
+ });
13
+ }, flushInterval);
14
+ }
15
+ maxBatchSize;
16
+ track(event, properties, actorId) {
17
+ this.queue.push({
18
+ event,
19
+ properties,
20
+ actor_id: actorId,
21
+ timestamp: new Date().toISOString(),
22
+ });
23
+ if (this.queue.length >= this.maxBatchSize) {
24
+ this.flush().catch(() => {
25
+ // best effort flush on max batch size
26
+ });
27
+ }
28
+ }
29
+ async flush() {
30
+ if (this.queue.length === 0) {
31
+ return;
32
+ }
33
+ const batch = this.queue.splice(0, this.queue.length);
34
+ try {
35
+ await this.transport.request({
36
+ service: "events",
37
+ path: "/v1/events/batch",
38
+ method: "POST",
39
+ keepalive: true,
40
+ body: { events: batch },
41
+ });
42
+ }
43
+ catch {
44
+ this.queue.unshift(...batch);
45
+ throw new Error("Failed to flush events batch.");
46
+ }
47
+ }
48
+ async shutdown() {
49
+ if (this.timer) {
50
+ clearInterval(this.timer);
51
+ this.timer = null;
52
+ }
53
+ await this.flush();
54
+ }
55
+ }
56
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/events/client.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,qBAAqB;IACf,KAAK,GAAkB,EAAE,CAAC;IAC1B,SAAS,CAAgB;IAClC,KAAK,GAA0C,IAAI,CAAC;IAE5D,YACE,SAAwB,EACxB,SAA4D,EAAE;QAE9D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB,yCAAyC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,aAAa,CAAC,CAAC;IACpB,CAAC;IAEgB,YAAY,CAAS;IAEtC,KAAK,CAAC,KAAa,EAAE,UAAoC,EAAE,OAAgB;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK;YACL,UAAU;YACV,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB,sCAAsC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAO;gBACjC,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { EventsClientNamespace } from "./client";
2
+ export type { ServerTrackedEvent } from "./server";
3
+ export { EventsServerNamespace } from "./server";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { EventsClientNamespace } from "./client";
2
+ export { EventsServerNamespace } from "./server";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { HttpTransport } from "../http";
2
+ export interface ServerTrackedEvent {
3
+ actor_id?: string;
4
+ event: string;
5
+ properties?: Record<string, unknown>;
6
+ timestamp?: string;
7
+ }
8
+ export declare class EventsServerNamespace {
9
+ private readonly transport;
10
+ constructor(transport: HttpTransport);
11
+ track(event: string, properties?: Record<string, unknown>, actorId?: string): Promise<{
12
+ event_id: string;
13
+ }>;
14
+ batchTrack(events: ServerTrackedEvent[]): Promise<{
15
+ count: number;
16
+ event_ids: string[];
17
+ }>;
18
+ }
19
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/events/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,SAAS,EAAE,aAAa;IAIpC,KAAK,CACH,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAchC,UAAU,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAa1F"}
@@ -0,0 +1,33 @@
1
+ export class EventsServerNamespace {
2
+ transport;
3
+ constructor(transport) {
4
+ this.transport = transport;
5
+ }
6
+ track(event, properties, actorId) {
7
+ return this.transport.request({
8
+ service: "events",
9
+ path: "/v1/events",
10
+ method: "POST",
11
+ body: {
12
+ event,
13
+ properties,
14
+ actor_id: actorId,
15
+ timestamp: new Date().toISOString(),
16
+ },
17
+ });
18
+ }
19
+ batchTrack(events) {
20
+ return this.transport.request({
21
+ service: "events",
22
+ path: "/v1/events/batch",
23
+ method: "POST",
24
+ body: {
25
+ events: events.map((event) => ({
26
+ ...event,
27
+ timestamp: event.timestamp ?? new Date().toISOString(),
28
+ })),
29
+ },
30
+ });
31
+ }
32
+ }
33
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/events/server.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,qBAAqB;IACf,SAAS,CAAgB;IAE1C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CACH,KAAa,EACb,UAAoC,EACpC,OAAgB;QAEhB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAuB;YAClD,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,KAAK;gBACL,UAAU;gBACV,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAA4B;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAyC;YACpE,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC7B,GAAG,KAAK;oBACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACvD,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ import { type ClientMode, type ResolvedConfig } from "./config";
2
+ import { type BuildspaceService } from "./errors";
3
+ interface RequestOptions {
4
+ body?: unknown;
5
+ headers?: Record<string, string>;
6
+ keepalive?: boolean;
7
+ method?: string;
8
+ path: string;
9
+ query?: Record<string, string | number | boolean | undefined>;
10
+ service: BuildspaceService;
11
+ }
12
+ export declare class HttpTransport {
13
+ readonly baseUrl: string;
14
+ readonly fetcher: typeof fetch;
15
+ readonly key: string;
16
+ readonly loginUrl: string;
17
+ readonly mode: ClientMode;
18
+ readonly version: string;
19
+ private sessionToken;
20
+ constructor({ key, resolvedConfig }: {
21
+ key: string;
22
+ resolvedConfig: ResolvedConfig;
23
+ });
24
+ clearSession(): void;
25
+ setSession(sessionToken: string): void;
26
+ request<T>({ service, path, method, query, body, headers, keepalive, }: RequestOptions): Promise<T>;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAkB,MAAM,UAAU,CAAC;AAChF,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEnE,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,YAAY,CAAuB;gBAE/B,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE;IAUpF,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIhC,OAAO,CAAC,CAAC,EAAE,EACf,OAAO,EACP,IAAI,EACJ,MAAc,EACd,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,GACV,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;CA6C/B"}
package/dist/http.js ADDED
@@ -0,0 +1,62 @@
1
+ import { validateApiKey } from "./config";
2
+ import { BuildspaceError } from "./errors";
3
+ export class HttpTransport {
4
+ baseUrl;
5
+ fetcher;
6
+ key;
7
+ loginUrl;
8
+ mode;
9
+ version;
10
+ sessionToken = null;
11
+ constructor({ key, resolvedConfig }) {
12
+ validateApiKey({ mode: resolvedConfig.mode, key });
13
+ this.key = key;
14
+ this.mode = resolvedConfig.mode;
15
+ this.baseUrl = resolvedConfig.baseUrl;
16
+ this.loginUrl = resolvedConfig.loginUrl;
17
+ this.version = resolvedConfig.version;
18
+ this.fetcher = resolvedConfig.fetch;
19
+ }
20
+ clearSession() {
21
+ this.sessionToken = null;
22
+ }
23
+ setSession(sessionToken) {
24
+ this.sessionToken = sessionToken;
25
+ }
26
+ async request({ service, path, method = "GET", query, body, headers, keepalive, }) {
27
+ const url = new URL(path, this.baseUrl);
28
+ if (query) {
29
+ for (const [key, value] of Object.entries(query)) {
30
+ if (value !== undefined) {
31
+ url.searchParams.set(key, String(value));
32
+ }
33
+ }
34
+ }
35
+ const response = await this.fetcher(url.toString(), {
36
+ method,
37
+ keepalive,
38
+ headers: {
39
+ Authorization: `Bearer ${this.key}`,
40
+ "Content-Type": "application/json",
41
+ "X-Buildspace-Version": this.version,
42
+ ...(this.sessionToken ? { "X-Session-Token": this.sessionToken } : {}),
43
+ ...headers,
44
+ },
45
+ body: body === undefined ? undefined : JSON.stringify(body),
46
+ });
47
+ if (!response.ok) {
48
+ const payload = (await response.json().catch(() => null));
49
+ throw new BuildspaceError({
50
+ service,
51
+ status: response.status,
52
+ code: payload?.code ?? `${service}/http-${response.status}`,
53
+ message: payload?.error ?? payload?.message ?? response.statusText,
54
+ });
55
+ }
56
+ if (response.status === 204) {
57
+ return undefined;
58
+ }
59
+ return response.json();
60
+ }
61
+ }
62
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,cAAc,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAC;AAYnE,MAAM,OAAO,aAAa;IACf,OAAO,CAAS;IAChB,OAAO,CAAe;IACtB,GAAG,CAAS;IACZ,QAAQ,CAAS;IACjB,IAAI,CAAa;IACjB,OAAO,CAAS;IACjB,YAAY,GAAkB,IAAI,CAAC;IAE3C,YAAY,EAAE,GAAG,EAAE,cAAc,EAAmD;QAClF,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,YAAoB;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,EACf,OAAO,EACP,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,GACM;QACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YAClD,MAAM;YACN,SAAS;YACT,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE;gBACnC,cAAc,EAAE,kBAAkB;gBAClC,sBAAsB,EAAE,IAAI,CAAC,OAAO;gBACpC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,OAAO;aACX;YACD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAIhD,CAAC;YAET,MAAM,IAAI,eAAe,CAAC;gBACxB,OAAO;gBACP,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG,OAAO,SAAS,QAAQ,CAAC,MAAM,EAAE;gBAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,UAAU;aACnE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,SAAc,CAAC;QACxB,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import { AuthClientNamespace, AuthServerNamespace } from "./auth";
2
+ import { type BuildspaceConfig } from "./config";
3
+ import { EventsServerNamespace } from "./events";
4
+ import { NotificationsServerNamespace } from "./notifications";
5
+ import { StorageServerNamespace } from "./storage";
6
+ export * from "./auth";
7
+ export type { BuildspaceClientConfig, BuildspaceConfig } from "./config";
8
+ export { BuildspaceError } from "./errors";
9
+ export * from "./events";
10
+ export * from "./notifications";
11
+ export * from "./storage";
12
+ declare class Buildspace {
13
+ private readonly transport;
14
+ private _auth;
15
+ private _events;
16
+ private _notifications;
17
+ private _publicAuth;
18
+ private _storage;
19
+ constructor(secretKey: string, config?: BuildspaceConfig);
20
+ get auth(): AuthServerNamespace;
21
+ get authClient(): AuthClientNamespace;
22
+ get events(): EventsServerNamespace;
23
+ get storage(): StorageServerNamespace;
24
+ get notifications(): NotificationsServerNamespace;
25
+ clearSession(): void;
26
+ setSession(sessionToken: string): void;
27
+ }
28
+ export { Buildspace };
29
+ export default Buildspace;
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,cAAc,QAAQ,CAAC;AACvB,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAE1B,cAAM,UAAU;IACd,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,QAAQ,CAAuC;gBAE3C,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,gBAAqB;IAO5D,IAAI,IAAI,IAAI,mBAAmB,CAG9B;IAED,IAAI,UAAU,IAAI,mBAAmB,CAGpC;IAED,IAAI,MAAM,IAAI,qBAAqB,CAGlC;IAED,IAAI,OAAO,IAAI,sBAAsB,CAGpC;IAED,IAAI,aAAa,IAAI,4BAA4B,CAGhD;IAED,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAGvC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,54 @@
1
+ import { AuthClientNamespace, AuthServerNamespace } from "./auth";
2
+ import { resolveConfig } from "./config";
3
+ import { EventsServerNamespace } from "./events";
4
+ import { HttpTransport } from "./http";
5
+ import { NotificationsServerNamespace } from "./notifications";
6
+ import { StorageServerNamespace } from "./storage";
7
+ export * from "./auth";
8
+ export { BuildspaceError } from "./errors";
9
+ export * from "./events";
10
+ export * from "./notifications";
11
+ export * from "./storage";
12
+ class Buildspace {
13
+ transport;
14
+ _auth = null;
15
+ _events = null;
16
+ _notifications = null;
17
+ _publicAuth = null;
18
+ _storage = null;
19
+ constructor(secretKey, config = {}) {
20
+ this.transport = new HttpTransport({
21
+ key: secretKey,
22
+ resolvedConfig: resolveConfig("server", config),
23
+ });
24
+ }
25
+ get auth() {
26
+ this._auth ??= new AuthServerNamespace(this.transport);
27
+ return this._auth;
28
+ }
29
+ get authClient() {
30
+ this._publicAuth ??= new AuthClientNamespace(this.transport);
31
+ return this._publicAuth;
32
+ }
33
+ get events() {
34
+ this._events ??= new EventsServerNamespace(this.transport);
35
+ return this._events;
36
+ }
37
+ get storage() {
38
+ this._storage ??= new StorageServerNamespace(this.transport);
39
+ return this._storage;
40
+ }
41
+ get notifications() {
42
+ this._notifications ??= new NotificationsServerNamespace(this.transport);
43
+ return this._notifications;
44
+ }
45
+ clearSession() {
46
+ this.transport.clearSession();
47
+ }
48
+ setSession(sessionToken) {
49
+ this.transport.setSession(sessionToken);
50
+ }
51
+ }
52
+ export { Buildspace };
53
+ export default Buildspace;
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAyB,aAAa,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAE1B,MAAM,UAAU;IACG,SAAS,CAAgB;IAClC,KAAK,GAA+B,IAAI,CAAC;IACzC,OAAO,GAAiC,IAAI,CAAC;IAC7C,cAAc,GAAwC,IAAI,CAAC;IAC3D,WAAW,GAA+B,IAAI,CAAC;IAC/C,QAAQ,GAAkC,IAAI,CAAC;IAEvD,YAAY,SAAiB,EAAE,SAA2B,EAAE;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC;YACjC,GAAG,EAAE,SAAS;YACd,cAAc,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI;QACN,IAAI,CAAC,KAAK,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,CAAC,WAAW,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,IAAI,CAAC,OAAO,KAAK,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,IAAI,CAAC,QAAQ,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,CAAC,cAAc,KAAK,IAAI,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,YAAoB;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { SendOptions, SendResult, SendTemplateOptions } from "./server";
2
+ export { NotificationsServerNamespace } from "./server";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { NotificationsServerNamespace } from "./server";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { HttpTransport } from "../http";
2
+ export interface SendOptions {
3
+ html: string;
4
+ metadata?: Record<string, unknown>;
5
+ replyTo?: string;
6
+ subject: string;
7
+ text?: string;
8
+ to: string | string[];
9
+ }
10
+ export interface SendTemplateOptions {
11
+ metadata?: Record<string, unknown>;
12
+ to: string | string[];
13
+ variables?: Record<string, string>;
14
+ }
15
+ export interface SendResult {
16
+ id: string;
17
+ providerMessageId?: string;
18
+ }
19
+ export declare class NotificationsServerNamespace {
20
+ private readonly transport;
21
+ constructor(transport: HttpTransport);
22
+ send(opts: SendOptions): Promise<SendResult>;
23
+ sendTemplate(templateSlug: string, opts: SendTemplateOptions): Promise<SendResult>;
24
+ }
25
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/notifications/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,SAAS,EAAE,aAAa;IAIpC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB5C,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;CAanF"}
@@ -0,0 +1,35 @@
1
+ export class NotificationsServerNamespace {
2
+ transport;
3
+ constructor(transport) {
4
+ this.transport = transport;
5
+ }
6
+ send(opts) {
7
+ return this.transport.request({
8
+ service: "notifications",
9
+ path: "/v1/notifications/send",
10
+ method: "POST",
11
+ body: {
12
+ to: opts.to,
13
+ subject: opts.subject,
14
+ html: opts.html,
15
+ text: opts.text,
16
+ reply_to: opts.replyTo,
17
+ metadata: opts.metadata,
18
+ },
19
+ });
20
+ }
21
+ sendTemplate(templateSlug, opts) {
22
+ return this.transport.request({
23
+ service: "notifications",
24
+ path: "/v1/notifications/send-template",
25
+ method: "POST",
26
+ body: {
27
+ template: templateSlug,
28
+ to: opts.to,
29
+ variables: opts.variables,
30
+ metadata: opts.metadata,
31
+ },
32
+ });
33
+ }
34
+ }
35
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/notifications/server.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,4BAA4B;IACtB,SAAS,CAAgB;IAE1C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,IAAiB;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAa;YACxC,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,YAAoB,EAAE,IAAyB;QAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAa;YACxC,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,iCAAiC;YACvC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,QAAQ,EAAE,YAAY;gBACtB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import type { HttpTransport } from "../http";
2
+ import type { StorageObject } from "./server";
3
+ export interface UploadOptions {
4
+ contentType?: string;
5
+ path: string;
6
+ }
7
+ export interface UploadResponse {
8
+ key: string;
9
+ size: number;
10
+ url: string;
11
+ }
12
+ export interface GetUrlResponse {
13
+ expiresIn?: number;
14
+ key: string;
15
+ url: string;
16
+ }
17
+ export declare class StorageClientNamespace {
18
+ private readonly transport;
19
+ constructor(transport: HttpTransport);
20
+ upload(file: File | Blob, opts: UploadOptions): Promise<UploadResponse>;
21
+ getUrl(key: string, opts?: {
22
+ expiresIn?: number;
23
+ }): Promise<GetUrlResponse>;
24
+ list(prefix?: string, opts?: {
25
+ limit?: number;
26
+ offset?: number;
27
+ }): Promise<{
28
+ objects: StorageObject[];
29
+ }>;
30
+ delete(key: string): Promise<void>;
31
+ }
32
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/storage/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,SAAS,EAAE,aAAa;IAI9B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAkC7E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAW3E,IAAI,CACF,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IAYlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQzC"}
@@ -0,0 +1,63 @@
1
+ export class StorageClientNamespace {
2
+ transport;
3
+ constructor(transport) {
4
+ this.transport = transport;
5
+ }
6
+ async upload(file, opts) {
7
+ const contentType = opts.contentType ?? (file instanceof File ? file.type : "application/octet-stream");
8
+ const signed = await this.transport.request({
9
+ service: "storage",
10
+ path: "/v1/storage/upload",
11
+ method: "POST",
12
+ body: {
13
+ path: opts.path,
14
+ content_type: contentType,
15
+ size: file.size,
16
+ },
17
+ });
18
+ const response = await this.transport.fetcher(signed.upload_url, {
19
+ method: "PUT",
20
+ headers: { "Content-Type": contentType },
21
+ body: file,
22
+ });
23
+ if (!response.ok) {
24
+ throw new Error(`Direct upload failed: ${response.statusText}`);
25
+ }
26
+ const { url } = await this.getUrl(signed.key);
27
+ return {
28
+ key: signed.key,
29
+ size: file.size,
30
+ url,
31
+ };
32
+ }
33
+ getUrl(key, opts) {
34
+ return this.transport.request({
35
+ service: "storage",
36
+ path: "/v1/storage/url",
37
+ query: {
38
+ key,
39
+ expires_in: opts?.expiresIn,
40
+ },
41
+ });
42
+ }
43
+ list(prefix, opts) {
44
+ return this.transport.request({
45
+ service: "storage",
46
+ path: "/v1/storage/objects",
47
+ query: {
48
+ prefix,
49
+ limit: opts?.limit,
50
+ offset: opts?.offset,
51
+ },
52
+ });
53
+ }
54
+ async delete(key) {
55
+ await this.transport.request({
56
+ service: "storage",
57
+ path: "/v1/storage/object",
58
+ method: "DELETE",
59
+ body: { key },
60
+ });
61
+ }
62
+ }
63
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/storage/client.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,sBAAsB;IAChB,SAAS,CAAgB;IAE1C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAiB,EAAE,IAAmB;QACjD,MAAM,WAAW,GACf,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAEtF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAsC;YAC/E,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;YAC/D,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YACxC,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE9C,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG;SACJ,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,IAA6B;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAiB;YAC5C,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE;gBACL,GAAG;gBACH,UAAU,EAAE,IAAI,EAAE,SAAS;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CACF,MAAe,EACf,IAA0C;QAE1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAA+B;YAC1D,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE;gBACL,MAAM;gBACN,KAAK,EAAE,IAAI,EAAE,KAAK;gBAClB,MAAM,EAAE,IAAI,EAAE,MAAM;aACrB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAO;YACjC,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,EAAE,GAAG,EAAE;SACd,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export type { GetUrlResponse, UploadOptions, UploadResponse } from "./client";
2
+ export { StorageClientNamespace } from "./client";
3
+ export type { ServerUploadOptions, StorageObject } from "./server";
4
+ export { StorageServerNamespace } from "./server";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { StorageClientNamespace } from "./client";
2
+ export { StorageServerNamespace } from "./server";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { HttpTransport } from "../http";
2
+ export interface ServerUploadOptions {
3
+ contentType: string;
4
+ key: string;
5
+ size: number;
6
+ }
7
+ export interface StorageObject {
8
+ contentType: string;
9
+ createdAt: string;
10
+ id: string;
11
+ key: string;
12
+ size: number;
13
+ uploadedBy: string | null;
14
+ }
15
+ export declare class StorageServerNamespace {
16
+ private readonly transport;
17
+ constructor(transport: HttpTransport);
18
+ getUploadUrl(opts: ServerUploadOptions): Promise<{
19
+ expires_in: number;
20
+ key: string;
21
+ upload_url: string;
22
+ }>;
23
+ getSignedUrl(key: string, opts?: {
24
+ expiresIn?: number;
25
+ }): Promise<{
26
+ expiresIn?: number;
27
+ key: string;
28
+ url: string;
29
+ }>;
30
+ list(prefix?: string, opts?: {
31
+ limit?: number;
32
+ offset?: number;
33
+ }): Promise<{
34
+ objects: StorageObject[];
35
+ }>;
36
+ delete(key: string): Promise<void>;
37
+ getUsage(): Promise<{
38
+ maxStorageBytes: number;
39
+ objectCount: number;
40
+ storageBytes: number;
41
+ }>;
42
+ }
43
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/storage/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,SAAS,EAAE,aAAa;IAIpC,YAAY,CACV,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAanE,YAAY,CACV,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,IAAI,CACF,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IAYlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxC,QAAQ,IAAI,OAAO,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CAUH"}
@@ -0,0 +1,54 @@
1
+ export class StorageServerNamespace {
2
+ transport;
3
+ constructor(transport) {
4
+ this.transport = transport;
5
+ }
6
+ getUploadUrl(opts) {
7
+ return this.transport.request({
8
+ service: "storage",
9
+ path: "/v1/storage/upload",
10
+ method: "POST",
11
+ body: {
12
+ path: opts.key,
13
+ content_type: opts.contentType,
14
+ size: opts.size,
15
+ },
16
+ });
17
+ }
18
+ getSignedUrl(key, opts) {
19
+ return this.transport.request({
20
+ service: "storage",
21
+ path: "/v1/storage/url",
22
+ query: {
23
+ key,
24
+ expires_in: opts?.expiresIn,
25
+ },
26
+ });
27
+ }
28
+ list(prefix, opts) {
29
+ return this.transport.request({
30
+ service: "storage",
31
+ path: "/v1/storage/objects",
32
+ query: {
33
+ prefix,
34
+ limit: opts?.limit,
35
+ offset: opts?.offset,
36
+ },
37
+ });
38
+ }
39
+ async delete(key) {
40
+ await this.transport.request({
41
+ service: "storage",
42
+ path: "/v1/storage/object",
43
+ method: "DELETE",
44
+ body: { key },
45
+ });
46
+ }
47
+ getUsage() {
48
+ return this.transport.request({
49
+ service: "storage",
50
+ path: "/v1/storage/usage",
51
+ });
52
+ }
53
+ }
54
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/storage/server.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,sBAAsB;IAChB,SAAS,CAAgB;IAE1C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,YAAY,CACV,IAAyB;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAA0D;YACrF,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CACV,GAAW,EACX,IAA6B;QAE7B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAmD;YAC9E,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE;gBACL,GAAG;gBACH,UAAU,EAAE,IAAI,EAAE,SAAS;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CACF,MAAe,EACf,IAA0C;QAE1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAA+B;YAC1D,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE;gBACL,MAAM;gBACN,KAAK,EAAE,IAAI,EAAE,KAAK;gBAClB,MAAM,EAAE,IAAI,EAAE,MAAM;aACrB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAO;YACjC,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,EAAE,GAAG,EAAE;SACd,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QAKN,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAI1B;YACD,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,mBAAmB;SAC1B,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@buildspacestudio/sdk",
3
+ "version": "0.1.0",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "sideEffects": false,
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./client": {
13
+ "types": "./dist/client/index.d.ts",
14
+ "default": "./dist/client/index.js"
15
+ },
16
+ "./auth": {
17
+ "types": "./dist/auth/index.d.ts",
18
+ "default": "./dist/auth/index.js"
19
+ },
20
+ "./events": {
21
+ "types": "./dist/events/index.d.ts",
22
+ "default": "./dist/events/index.js"
23
+ },
24
+ "./storage": {
25
+ "types": "./dist/storage/index.d.ts",
26
+ "default": "./dist/storage/index.js"
27
+ },
28
+ "./notifications": {
29
+ "types": "./dist/notifications/index.d.ts",
30
+ "default": "./dist/notifications/index.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "license": "MIT",
37
+ "scripts": {
38
+ "build": "tsc",
39
+ "check-types": "tsc --noEmit",
40
+ "test": "bun run --bun vitest run",
41
+ "test:watch": "bun run --bun vitest"
42
+ },
43
+ "devDependencies": {
44
+ "typescript": "^5",
45
+ "vitest": "^4.0.18"
46
+ }
47
+ }