@doany-ai/sdk 0.1.0 → 0.2.1

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 (46) hide show
  1. package/dist/client.d.ts +28 -28
  2. package/dist/client.js +45 -37
  3. package/dist/client.types.d.ts +11 -11
  4. package/dist/index.d.ts +4 -4
  5. package/dist/index.js +2 -2
  6. package/dist/modules/agents.types.d.ts +12 -12
  7. package/dist/modules/ai-gateway.types.d.ts +12 -12
  8. package/dist/modules/analytics.d.ts +1 -1
  9. package/dist/modules/analytics.js +1 -1
  10. package/dist/modules/analytics.types.d.ts +4 -4
  11. package/dist/modules/app-logs.d.ts +1 -1
  12. package/dist/modules/app-logs.js +1 -1
  13. package/dist/modules/app-logs.types.d.ts +3 -3
  14. package/dist/modules/auth.d.ts +1 -1
  15. package/dist/modules/auth.js +4 -4
  16. package/dist/modules/auth.types.d.ts +32 -32
  17. package/dist/modules/connectors.d.ts +1 -1
  18. package/dist/modules/connectors.js +1 -1
  19. package/dist/modules/connectors.types.d.ts +18 -18
  20. package/dist/modules/custom-integrations.d.ts +1 -1
  21. package/dist/modules/custom-integrations.js +1 -1
  22. package/dist/modules/custom-integrations.types.d.ts +5 -5
  23. package/dist/modules/entities.d.ts +1 -1
  24. package/dist/modules/entities.js +4 -4
  25. package/dist/modules/entities.types.d.ts +36 -36
  26. package/dist/modules/functions.d.ts +1 -1
  27. package/dist/modules/functions.js +1 -1
  28. package/dist/modules/functions.types.d.ts +8 -8
  29. package/dist/modules/integrations.d.ts +1 -1
  30. package/dist/modules/integrations.js +1 -1
  31. package/dist/modules/integrations.types.d.ts +27 -27
  32. package/dist/modules/sso.d.ts +1 -1
  33. package/dist/modules/sso.js +1 -1
  34. package/dist/modules/sso.types.d.ts +7 -7
  35. package/dist/modules/users.d.ts +1 -1
  36. package/dist/modules/users.js +1 -1
  37. package/dist/types.d.ts +5 -5
  38. package/dist/utils/auth-utils.d.ts +7 -7
  39. package/dist/utils/auth-utils.js +10 -10
  40. package/dist/utils/auth-utils.types.d.ts +7 -7
  41. package/dist/utils/axios-client.d.ts +10 -10
  42. package/dist/utils/axios-client.js +14 -14
  43. package/dist/utils/axios-client.types.d.ts +4 -4
  44. package/dist/utils/sharedInstance.js +6 -6
  45. package/dist/utils/socket-utils.js +1 -1
  46. package/package.json +1 -1
package/dist/client.d.ts CHANGED
@@ -1,18 +1,18 @@
1
- import type { Base44Client, CreateClientConfig, CreateClientOptions } from "./client.types.js";
2
- export type { Base44Client, CreateClientConfig, CreateClientOptions };
1
+ import type { DoanyClient, CreateClientConfig, CreateClientOptions } from "./client.types.js";
2
+ export type { DoanyClient, CreateClientConfig, CreateClientOptions };
3
3
  /**
4
- * Creates a Base44 client.
4
+ * Creates a Doany client.
5
5
  *
6
- * This is the main entry point for the Base44 SDK. It creates a client that provides access to the SDK's modules, such as {@linkcode EntitiesModule | entities}, {@linkcode AuthModule | auth}, and {@linkcode FunctionsModule | functions}.
6
+ * This is the main entry point for the Doany SDK. It creates a client that provides access to the SDK's modules, such as {@linkcode EntitiesModule | entities}, {@linkcode AuthModule | auth}, and {@linkcode FunctionsModule | functions}.
7
7
  *
8
8
  * How you get a client depends on your context:
9
- * - **Inside a Base44 app:** The client is automatically created and configured for you. Import it from `@/api/base44Client`.
10
- * - **External app using Base44 as a backend:** Call `createClient()` directly in your code to create and configure the client.
9
+ * - **Inside a Doany app:** The client is automatically created and configured for you. Import it from `@/api/doanyClient`.
10
+ * - **External app using Doany as a backend:** Call `createClient()` directly in your code to create and configure the client.
11
11
  *
12
12
  * The client supports three authentication modes:
13
- * - **Anonymous**: Access modules without authentication using `base44.moduleName`. Operations are scoped to public data and permissions.
14
- * - **User authentication**: Access modules with user-level permissions using `base44.moduleName`. Operations are scoped to the authenticated user's data and permissions. Use `base44.auth.loginViaEmailPassword()` or other auth methods to get a token.
15
- * - **Service role authentication**: Access modules with elevated permissions using `base44.asServiceRole.moduleName`. Operations bypass entity access rules and field-level security, giving full read and write access to all of the app's data. Only available in Base44-hosted backend functions. Create a client with service role authentication using {@linkcode createClientFromRequest | createClientFromRequest()}.
13
+ * - **Anonymous**: Access modules without authentication using `doany.moduleName`. Operations are scoped to public data and permissions.
14
+ * - **User authentication**: Access modules with user-level permissions using `doany.moduleName`. Operations are scoped to the authenticated user's data and permissions. Use `doany.auth.loginViaEmailPassword()` or other auth methods to get a token.
15
+ * - **Service role authentication**: Access modules with elevated permissions using `doany.asServiceRole.moduleName`. Operations bypass entity access rules and field-level security, giving full read and write access to all of the app's data. Only available in Doany-hosted backend functions. Create a client with service role authentication using {@linkcode createClientFromRequest | createClientFromRequest()}.
16
16
  *
17
17
  * For example, when using the {@linkcode EntitiesModule | entities} module:
18
18
  * - **Anonymous**: Can only read public data.
@@ -22,50 +22,50 @@ export type { Base44Client, CreateClientConfig, CreateClientOptions };
22
22
  * Most modules are available in all three modes, but with different permission levels. However, some modules are only available in specific authentication modes.
23
23
  *
24
24
  * @param config - Configuration object for the client.
25
- * @returns A configured Base44 client instance with access to all SDK modules.
25
+ * @returns A configured Doany client instance with access to all SDK modules.
26
26
  *
27
27
  * @example
28
28
  * ```typescript
29
29
  * // Create a client for your app
30
- * import { createClient } from '@base44/sdk';
30
+ * import { createClient } from '@doany/sdk';
31
31
  *
32
- * const base44 = createClient({
32
+ * const doany = createClient({
33
33
  * appId: 'my-app-id'
34
34
  * });
35
35
  *
36
36
  * // Use the client to access your data
37
- * const products = await base44.entities.Products.list();
37
+ * const products = await doany.entities.Products.list();
38
38
  * ```
39
39
  */
40
- export declare function createClient(config: CreateClientConfig): Base44Client;
40
+ export declare function createClient(config: CreateClientConfig): DoanyClient;
41
41
  /**
42
- * Creates a Base44 client from an HTTP request.
42
+ * Creates a Doany client from an HTTP request.
43
43
  *
44
- * This function is designed for use in Base44-hosted backend functions. For frontends and external backends, use {@linkcode createClient | createClient()} instead.
44
+ * This function is designed for use in Doany-hosted backend functions. For frontends and external backends, use {@linkcode createClient | createClient()} instead.
45
45
  *
46
- * When used in a Base44-hosted backend function, `createClientFromRequest()` automatically extracts authentication tokens from the request headers that Base44 injects when forwarding requests. The returned client includes service role access using `base44.asServiceRole`, which bypasses entity access rules and field-level security.
46
+ * When used in a Doany-hosted backend function, `createClientFromRequest()` automatically extracts authentication tokens from the request headers that Doany injects when forwarding requests. The returned client includes service role access using `doany.asServiceRole`, which bypasses entity access rules and field-level security.
47
47
  *
48
- * To learn more about the Base44 client, see {@linkcode createClient | createClient()}.
48
+ * To learn more about the Doany client, see {@linkcode createClient | createClient()}.
49
49
  *
50
- * @param request - The incoming HTTP request object containing Base44 authentication headers.
51
- * @returns A configured Base44 client instance with authentication from the incoming request.
50
+ * @param request - The incoming HTTP request object containing Doany authentication headers.
51
+ * @returns A configured Doany client instance with authentication from the incoming request.
52
52
  *
53
53
  * @example
54
54
  * ```typescript
55
55
  * // User authentication in backend function
56
- * import { createClientFromRequest } from 'npm:@base44/sdk';
56
+ * import { createClientFromRequest } from 'npm:@doany/sdk';
57
57
  *
58
58
  * Deno.serve(async (req) => {
59
59
  * try {
60
- * const base44 = createClientFromRequest(req);
61
- * const user = await base44.auth.me();
60
+ * const doany = createClientFromRequest(req);
61
+ * const user = await doany.auth.me();
62
62
  *
63
63
  * if (!user) {
64
64
  * return Response.json({ error: 'Unauthorized' }, { status: 401 });
65
65
  * }
66
66
  *
67
67
  * // Access user's data
68
- * const userOrders = await base44.entities.Orders.filter({ userId: user.id });
68
+ * const userOrders = await doany.entities.Orders.filter({ userId: user.id });
69
69
  * return Response.json({ orders: userOrders });
70
70
  * } catch (error) {
71
71
  * return Response.json({ error: error.message }, { status: 500 });
@@ -76,14 +76,14 @@ export declare function createClient(config: CreateClientConfig): Base44Client;
76
76
  * @example
77
77
  * ```typescript
78
78
  * // Service role authentication in backend function
79
- * import { createClientFromRequest } from 'npm:@base44/sdk';
79
+ * import { createClientFromRequest } from 'npm:@doany/sdk';
80
80
  *
81
81
  * Deno.serve(async (req) => {
82
82
  * try {
83
- * const base44 = createClientFromRequest(req);
83
+ * const doany = createClientFromRequest(req);
84
84
  *
85
85
  * // Read across all users, bypassing the Orders entity's access rules
86
- * const recentOrders = await base44.asServiceRole.entities.Orders.list('-created_at', 50);
86
+ * const recentOrders = await doany.asServiceRole.entities.Orders.list('-created_at', 50);
87
87
  *
88
88
  * return Response.json({ orders: recentOrders });
89
89
  * } catch (error) {
@@ -93,4 +93,4 @@ export declare function createClient(config: CreateClientConfig): Base44Client;
93
93
  * ```
94
94
  *
95
95
  */
96
- export declare function createClientFromRequest(request: Request): Base44Client;
96
+ export declare function createClientFromRequest(request: Request): DoanyClient;
package/dist/client.js CHANGED
@@ -13,18 +13,18 @@ import { createUsersModule } from "./modules/users.js";
13
13
  import { RoomsSocket } from "./utils/socket-utils.js";
14
14
  import { createAnalyticsModule } from "./modules/analytics.js";
15
15
  /**
16
- * Creates a Base44 client.
16
+ * Creates a Doany client.
17
17
  *
18
- * This is the main entry point for the Base44 SDK. It creates a client that provides access to the SDK's modules, such as {@linkcode EntitiesModule | entities}, {@linkcode AuthModule | auth}, and {@linkcode FunctionsModule | functions}.
18
+ * This is the main entry point for the Doany SDK. It creates a client that provides access to the SDK's modules, such as {@linkcode EntitiesModule | entities}, {@linkcode AuthModule | auth}, and {@linkcode FunctionsModule | functions}.
19
19
  *
20
20
  * How you get a client depends on your context:
21
- * - **Inside a Base44 app:** The client is automatically created and configured for you. Import it from `@/api/base44Client`.
22
- * - **External app using Base44 as a backend:** Call `createClient()` directly in your code to create and configure the client.
21
+ * - **Inside a Doany app:** The client is automatically created and configured for you. Import it from `@/api/doanyClient`.
22
+ * - **External app using Doany as a backend:** Call `createClient()` directly in your code to create and configure the client.
23
23
  *
24
24
  * The client supports three authentication modes:
25
- * - **Anonymous**: Access modules without authentication using `base44.moduleName`. Operations are scoped to public data and permissions.
26
- * - **User authentication**: Access modules with user-level permissions using `base44.moduleName`. Operations are scoped to the authenticated user's data and permissions. Use `base44.auth.loginViaEmailPassword()` or other auth methods to get a token.
27
- * - **Service role authentication**: Access modules with elevated permissions using `base44.asServiceRole.moduleName`. Operations bypass entity access rules and field-level security, giving full read and write access to all of the app's data. Only available in Base44-hosted backend functions. Create a client with service role authentication using {@linkcode createClientFromRequest | createClientFromRequest()}.
25
+ * - **Anonymous**: Access modules without authentication using `doany.moduleName`. Operations are scoped to public data and permissions.
26
+ * - **User authentication**: Access modules with user-level permissions using `doany.moduleName`. Operations are scoped to the authenticated user's data and permissions. Use `doany.auth.loginViaEmailPassword()` or other auth methods to get a token.
27
+ * - **Service role authentication**: Access modules with elevated permissions using `doany.asServiceRole.moduleName`. Operations bypass entity access rules and field-level security, giving full read and write access to all of the app's data. Only available in Doany-hosted backend functions. Create a client with service role authentication using {@linkcode createClientFromRequest | createClientFromRequest()}.
28
28
  *
29
29
  * For example, when using the {@linkcode EntitiesModule | entities} module:
30
30
  * - **Anonymous**: Can only read public data.
@@ -34,19 +34,19 @@ import { createAnalyticsModule } from "./modules/analytics.js";
34
34
  * Most modules are available in all three modes, but with different permission levels. However, some modules are only available in specific authentication modes.
35
35
  *
36
36
  * @param config - Configuration object for the client.
37
- * @returns A configured Base44 client instance with access to all SDK modules.
37
+ * @returns A configured Doany client instance with access to all SDK modules.
38
38
  *
39
39
  * @example
40
40
  * ```typescript
41
41
  * // Create a client for your app
42
- * import { createClient } from '@base44/sdk';
42
+ * import { createClient } from '@doany/sdk';
43
43
  *
44
- * const base44 = createClient({
44
+ * const doany = createClient({
45
45
  * appId: 'my-app-id'
46
46
  * });
47
47
  *
48
48
  * // Use the client to access your data
49
- * const products = await base44.entities.Products.list();
49
+ * const products = await doany.entities.Products.list();
50
50
  * ```
51
51
  */
52
52
  export function createClient(config) {
@@ -77,7 +77,7 @@ export function createClient(config) {
77
77
  const functionHeaders = functionsVersion
78
78
  ? {
79
79
  ...headers,
80
- "Base44-Functions-Version": functionsVersion,
80
+ "Doany-Functions-Version": functionsVersion,
81
81
  }
82
82
  : headers;
83
83
  const axiosClient = createAxiosClient({
@@ -93,9 +93,17 @@ export function createClient(config) {
93
93
  interceptResponses: false,
94
94
  onError: options === null || options === void 0 ? void 0 : options.onError,
95
95
  });
96
+ // `on-behalf-of` names the USER a service-role call acts for, so only a user
97
+ // token belongs in it. In a backend function invoked with the app's own key,
98
+ // createClientFromRequest puts that key in `token` (the caller's
99
+ // Authorization is the user slot) — copying it here made the backend try to
100
+ // decode an app key as a JWT and answer 401 "Invalid token" on a request its
101
+ // Authorization had already authenticated. An app key names no user, so
102
+ // there is nobody to act on behalf of.
103
+ const actsForAUser = Boolean(token) && !token.startsWith("ak_");
96
104
  const serviceRoleHeaders = {
97
105
  ...headers,
98
- ...(token ? { "on-behalf-of": `Bearer ${token}` } : {}),
106
+ ...(actsForAUser ? { "on-behalf-of": `Bearer ${token}` } : {}),
99
107
  };
100
108
  const serviceRoleAxiosClient = createAxiosClient({
101
109
  baseURL: `${serverUrl}/api`,
@@ -229,11 +237,11 @@ export function createClient(config) {
229
237
  * @example
230
238
  * ```typescript
231
239
  * // Update token after login
232
- * const { access_token } = await base44.auth.loginViaEmailPassword(
240
+ * const { access_token } = await doany.auth.loginViaEmailPassword(
233
241
  * 'user@example.com',
234
242
  * 'password'
235
243
  * );
236
- * base44.setToken(access_token);
244
+ * doany.setToken(access_token);
237
245
  * ```
238
246
  */
239
247
  setToken(newToken) {
@@ -266,13 +274,13 @@ export function createClient(config) {
266
274
  *
267
275
  * @example
268
276
  * ```typescript
269
- * const base44 = createClient({
277
+ * const doany = createClient({
270
278
  * appId: 'my-app-id',
271
279
  * serviceToken: 'service-role-token'
272
280
  * });
273
281
  *
274
282
  * // Read every user record, bypassing the User entity's access rules
275
- * const allUsers = await base44.asServiceRole.entities.User.list();
283
+ * const allUsers = await doany.asServiceRole.entities.User.list();
276
284
  * ```
277
285
  */
278
286
  get asServiceRole() {
@@ -285,33 +293,33 @@ export function createClient(config) {
285
293
  return client;
286
294
  }
287
295
  /**
288
- * Creates a Base44 client from an HTTP request.
296
+ * Creates a Doany client from an HTTP request.
289
297
  *
290
- * This function is designed for use in Base44-hosted backend functions. For frontends and external backends, use {@linkcode createClient | createClient()} instead.
298
+ * This function is designed for use in Doany-hosted backend functions. For frontends and external backends, use {@linkcode createClient | createClient()} instead.
291
299
  *
292
- * When used in a Base44-hosted backend function, `createClientFromRequest()` automatically extracts authentication tokens from the request headers that Base44 injects when forwarding requests. The returned client includes service role access using `base44.asServiceRole`, which bypasses entity access rules and field-level security.
300
+ * When used in a Doany-hosted backend function, `createClientFromRequest()` automatically extracts authentication tokens from the request headers that Doany injects when forwarding requests. The returned client includes service role access using `doany.asServiceRole`, which bypasses entity access rules and field-level security.
293
301
  *
294
- * To learn more about the Base44 client, see {@linkcode createClient | createClient()}.
302
+ * To learn more about the Doany client, see {@linkcode createClient | createClient()}.
295
303
  *
296
- * @param request - The incoming HTTP request object containing Base44 authentication headers.
297
- * @returns A configured Base44 client instance with authentication from the incoming request.
304
+ * @param request - The incoming HTTP request object containing Doany authentication headers.
305
+ * @returns A configured Doany client instance with authentication from the incoming request.
298
306
  *
299
307
  * @example
300
308
  * ```typescript
301
309
  * // User authentication in backend function
302
- * import { createClientFromRequest } from 'npm:@base44/sdk';
310
+ * import { createClientFromRequest } from 'npm:@doany/sdk';
303
311
  *
304
312
  * Deno.serve(async (req) => {
305
313
  * try {
306
- * const base44 = createClientFromRequest(req);
307
- * const user = await base44.auth.me();
314
+ * const doany = createClientFromRequest(req);
315
+ * const user = await doany.auth.me();
308
316
  *
309
317
  * if (!user) {
310
318
  * return Response.json({ error: 'Unauthorized' }, { status: 401 });
311
319
  * }
312
320
  *
313
321
  * // Access user's data
314
- * const userOrders = await base44.entities.Orders.filter({ userId: user.id });
322
+ * const userOrders = await doany.entities.Orders.filter({ userId: user.id });
315
323
  * return Response.json({ orders: userOrders });
316
324
  * } catch (error) {
317
325
  * return Response.json({ error: error.message }, { status: 500 });
@@ -322,14 +330,14 @@ export function createClient(config) {
322
330
  * @example
323
331
  * ```typescript
324
332
  * // Service role authentication in backend function
325
- * import { createClientFromRequest } from 'npm:@base44/sdk';
333
+ * import { createClientFromRequest } from 'npm:@doany/sdk';
326
334
  *
327
335
  * Deno.serve(async (req) => {
328
336
  * try {
329
- * const base44 = createClientFromRequest(req);
337
+ * const doany = createClientFromRequest(req);
330
338
  *
331
339
  * // Read across all users, bypassing the Orders entity's access rules
332
- * const recentOrders = await base44.asServiceRole.entities.Orders.list('-created_at', 50);
340
+ * const recentOrders = await doany.asServiceRole.entities.Orders.list('-created_at', 50);
333
341
  *
334
342
  * return Response.json({ orders: recentOrders });
335
343
  * } catch (error) {
@@ -341,14 +349,14 @@ export function createClient(config) {
341
349
  */
342
350
  export function createClientFromRequest(request) {
343
351
  const authHeader = request.headers.get("Authorization");
344
- const serviceRoleAuthHeader = request.headers.get("Base44-Service-Authorization");
345
- const appId = request.headers.get("Base44-App-Id");
346
- const serverUrlHeader = request.headers.get("Base44-Api-Url");
347
- const functionsVersion = request.headers.get("Base44-Functions-Version");
348
- const stateHeader = request.headers.get("Base44-State");
352
+ const serviceRoleAuthHeader = request.headers.get("Doany-Service-Authorization");
353
+ const appId = request.headers.get("Doany-App-Id");
354
+ const serverUrlHeader = request.headers.get("Doany-Api-Url");
355
+ const functionsVersion = request.headers.get("Doany-Functions-Version");
356
+ const stateHeader = request.headers.get("Doany-State");
349
357
  const dataEnvHeader = request.headers.get("X-Data-Env");
350
358
  if (!appId) {
351
- throw new Error("Base44-App-Id header is required, but is was not found on the request");
359
+ throw new Error("Doany-App-Id header is required, but is was not found on the request");
352
360
  }
353
361
  // Validate authorization header formats
354
362
  let serviceRoleToken;
@@ -372,7 +380,7 @@ export function createClientFromRequest(request) {
372
380
  // Prepare additional headers to propagate
373
381
  const additionalHeaders = {};
374
382
  if (stateHeader) {
375
- additionalHeaders["Base44-State"] = stateHeader;
383
+ additionalHeaders["Doany-State"] = stateHeader;
376
384
  }
377
385
  // Propagate the data environment so entity operations from the function stay
378
386
  // in the same environment (e.g. test data) as the triggering request. This
@@ -9,7 +9,7 @@ import type { AiGatewayModule } from "./modules/ai-gateway.types.js";
9
9
  import type { AppLogsModule } from "./modules/app-logs.types.js";
10
10
  import type { AnalyticsModule } from "./modules/analytics.types.js";
11
11
  /**
12
- * Options for creating a Base44 client.
12
+ * Options for creating a Doany client.
13
13
  */
14
14
  export interface CreateClientOptions {
15
15
  /**
@@ -18,17 +18,17 @@ export interface CreateClientOptions {
18
18
  onError?: (error: Error) => void;
19
19
  }
20
20
  /**
21
- * Configuration for creating a Base44 client.
21
+ * Configuration for creating a Doany client.
22
22
  */
23
23
  export interface CreateClientConfig {
24
24
  /**
25
- * The Base44 server URL.
25
+ * The Doany server URL.
26
26
  *
27
- * You don't need to set this for production use. The SDK defaults to `https://base44.app`.
27
+ * You don't need to set this for production use. The SDK defaults to `https://api.doany.ai`.
28
28
  *
29
29
  * Set this when using a local development server to point SDK requests at your local machine instead of the hosted backend.
30
30
  *
31
- * @defaultValue `"https://base44.app"`
31
+ * @defaultValue `"https://api.doany.ai"`
32
32
  */
33
33
  serverUrl?: string;
34
34
  /**
@@ -37,7 +37,7 @@ export interface CreateClientConfig {
37
37
  */
38
38
  appBaseUrl?: string;
39
39
  /**
40
- * The Base44 app ID.
40
+ * The Doany app ID.
41
41
  *
42
42
  * You can find the `appId` in the browser URL when you're in the app editor.
43
43
  * It's the string between `/apps/` and `/editor/`.
@@ -46,11 +46,11 @@ export interface CreateClientConfig {
46
46
  /**
47
47
  * User authentication token. Used to authenticate as a specific user.
48
48
  *
49
- * Inside Base44 apps, the token is managed automatically. For external apps, use auth methods like {@linkcode AuthModule.loginViaEmailPassword | loginViaEmailPassword()} which set the token automatically.
49
+ * Inside Doany apps, the token is managed automatically. For external apps, use auth methods like {@linkcode AuthModule.loginViaEmailPassword | loginViaEmailPassword()} which set the token automatically.
50
50
  */
51
51
  token?: string;
52
52
  /**
53
- * Service role authentication token. Provides elevated permissions that bypass entity access rules and field-level security. Only available in Base44-hosted backend functions. Automatically added to clients created using {@linkcode createClientFromRequest | createClientFromRequest()}.
53
+ * Service role authentication token. Provides elevated permissions that bypass entity access rules and field-level security. Only available in Doany-hosted backend functions. Automatically added to clients created using {@linkcode createClientFromRequest | createClientFromRequest()}.
54
54
  * @internal
55
55
  */
56
56
  serviceToken?: string;
@@ -75,14 +75,14 @@ export interface CreateClientConfig {
75
75
  options?: CreateClientOptions;
76
76
  }
77
77
  /**
78
- * The Base44 client instance.
78
+ * The Doany client instance.
79
79
  *
80
80
  * Provides access to all SDK modules for interacting with the app.
81
81
  */
82
- export interface Base44Client {
82
+ export interface DoanyClient {
83
83
  /** {@link AgentsModule | Agents module} for managing AI agent conversations. */
84
84
  agents: AgentsModule;
85
- /** {@link AiGatewayModule | AI Gateway module} for connecting to the Base44 AI Gateway with your own SDK. */
85
+ /** {@link AiGatewayModule | AI Gateway module} for connecting to the Doany AI Gateway with your own SDK. */
86
86
  aiGateway: AiGatewayModule;
87
87
  /** {@link AnalyticsModule | Analytics module} for tracking custom events in your app. */
88
88
  analytics: AnalyticsModule;
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { createClient, createClientFromRequest, type Base44Client, type CreateClientConfig, type CreateClientOptions } from "./client.js";
2
- import { Base44Error, type Base44ErrorJSON } from "./utils/axios-client.js";
1
+ import { createClient, createClientFromRequest, type DoanyClient, type CreateClientConfig, type CreateClientOptions } from "./client.js";
2
+ import { DoanyError, type DoanyErrorJSON } from "./utils/axios-client.js";
3
3
  import { getAccessToken, saveAccessToken, removeAccessToken, getLoginUrl } from "./utils/auth-utils.js";
4
- export { createClient, createClientFromRequest, Base44Error, getAccessToken, saveAccessToken, removeAccessToken, getLoginUrl, };
5
- export type { Base44Client, CreateClientConfig, CreateClientOptions, Base44ErrorJSON, };
4
+ export { createClient, createClientFromRequest, DoanyError, getAccessToken, saveAccessToken, removeAccessToken, getLoginUrl, };
5
+ export type { DoanyClient, CreateClientConfig, CreateClientOptions, DoanyErrorJSON, };
6
6
  export * from "./types.js";
7
7
  export type { DeleteManyResult, DeleteResult, EntitiesModule, EntityFilterOperators, EntityFilterQuery, EntityFilterValue, EntityHandler, EntityRecord, EntityTypeRegistry, ImportResult, RealtimeEventType, RealtimeEvent, RealtimeCallback, SortField, UpdateManyResult, } from "./modules/entities.types.js";
8
8
  export type { AuthModule, LoginResponse, RegisterParams, VerifyOtpParams, ChangePasswordParams, ResetPasswordParams, User, } from "./modules/auth.types.js";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createClient, createClientFromRequest, } from "./client.js";
2
- import { Base44Error } from "./utils/axios-client.js";
2
+ import { DoanyError } from "./utils/axios-client.js";
3
3
  import { getAccessToken, saveAccessToken, removeAccessToken, getLoginUrl, } from "./utils/auth-utils.js";
4
- export { createClient, createClientFromRequest, Base44Error, getAccessToken, saveAccessToken, removeAccessToken, getLoginUrl, };
4
+ export { createClient, createClientFromRequest, DoanyError, getAccessToken, saveAccessToken, removeAccessToken, getLoginUrl, };
5
5
  export * from "./types.js";
@@ -13,7 +13,7 @@ export interface AgentNameRegistry {
13
13
  * ```typescript
14
14
  * // Using generated agent name types
15
15
  * // With generated types, you get autocomplete on agent names
16
- * const conversation = await base44.agents.createConversation({ agent_name: 'SupportBot' });
16
+ * const conversation = await doany.agents.createConversation({ agent_name: 'SupportBot' });
17
17
  * ```
18
18
  */
19
19
  export type AgentName = keyof AgentNameRegistry extends never ? string : keyof AgentNameRegistry;
@@ -193,8 +193,8 @@ export interface AgentsModuleConfig {
193
193
  *
194
194
  * This module is available to use with a client in all authentication modes:
195
195
  *
196
- * - **Anonymous or User authentication** (`base44.agents`): Access is scoped to the current user's permissions. Users must be authenticated to create and access conversations.
197
- * - **Service role authentication** (`base44.asServiceRole.agents`): Operations are invoked with the service role for backend code that needs elevated permissions.
196
+ * - **Anonymous or User authentication** (`doany.agents`): Access is scoped to the current user's permissions. Users must be authenticated to create and access conversations.
197
+ * - **Service role authentication** (`doany.asServiceRole.agents`): Operations are invoked with the service role for backend code that needs elevated permissions.
198
198
  *
199
199
  * ## Generated Types
200
200
  *
@@ -211,7 +211,7 @@ export interface AgentsModule {
211
211
  * @example
212
212
  * ```typescript
213
213
  * // Get all conversations
214
- * const conversations = await base44.agents.getConversations();
214
+ * const conversations = await doany.agents.getConversations();
215
215
  * console.log(`Total conversations: ${conversations.length}`);
216
216
  * ```
217
217
  *
@@ -233,7 +233,7 @@ export interface AgentsModule {
233
233
  * @example
234
234
  * ```typescript
235
235
  * // Get a specific conversation by ID
236
- * const conversation = await base44.agents.getConversation('conv-123');
236
+ * const conversation = await doany.agents.getConversation('conv-123');
237
237
  * if (conversation) {
238
238
  * console.log(`Conversation has ${conversation.messages.length} messages`);
239
239
  * }
@@ -254,7 +254,7 @@ export interface AgentsModule {
254
254
  * @example
255
255
  * ```typescript
256
256
  * // List recent conversations with pagination
257
- * const recentConversations = await base44.agents.listConversations({
257
+ * const recentConversations = await doany.agents.listConversations({
258
258
  * limit: 10,
259
259
  * sort: '-created_date'
260
260
  * });
@@ -263,7 +263,7 @@ export interface AgentsModule {
263
263
  * @example
264
264
  * ```typescript
265
265
  * // Filter by agent and metadata
266
- * const supportConversations = await base44.agents.listConversations({
266
+ * const supportConversations = await doany.agents.listConversations({
267
267
  * q: {
268
268
  * agent_name: 'support-agent',
269
269
  * 'metadata.priority': 'high'
@@ -286,7 +286,7 @@ export interface AgentsModule {
286
286
  * @example
287
287
  * ```typescript
288
288
  * // Create a new conversation with metadata
289
- * const conversation = await base44.agents.createConversation({
289
+ * const conversation = await doany.agents.createConversation({
290
290
  * agent_name: 'support-agent',
291
291
  * metadata: {
292
292
  * order_id: 'ORD-789',
@@ -311,7 +311,7 @@ export interface AgentsModule {
311
311
  * @example
312
312
  * ```typescript
313
313
  * // Send a message to the agent
314
- * const message = await base44.agents.addMessage(conversation, {
314
+ * const message = await doany.agents.addMessage(conversation, {
315
315
  * role: 'user',
316
316
  * content: 'Hello, I need help with my order #12345'
317
317
  * });
@@ -343,7 +343,7 @@ export interface AgentsModule {
343
343
  * @example
344
344
  * ```typescript
345
345
  * // Subscribe to realtime updates
346
- * const unsubscribe = base44.agents.subscribeToConversation(
346
+ * const unsubscribe = doany.agents.subscribeToConversation(
347
347
  * 'conv-123',
348
348
  * (updatedConversation) => {
349
349
  * const latestMessage = updatedConversation.messages[updatedConversation.messages.length - 1];
@@ -368,7 +368,7 @@ export interface AgentsModule {
368
368
  * @example
369
369
  * ```typescript
370
370
  * // Get WhatsApp connection URL
371
- * const whatsappUrl = base44.agents.getWhatsAppConnectURL('support-agent');
371
+ * const whatsappUrl = doany.agents.getWhatsAppConnectURL('support-agent');
372
372
  * console.log(`Connect through WhatsApp: ${whatsappUrl}`);
373
373
  * // User can open this URL to start a WhatsApp conversation
374
374
  * ```
@@ -388,7 +388,7 @@ export interface AgentsModule {
388
388
  * @example
389
389
  * ```typescript
390
390
  * // Get Telegram connection URL
391
- * const telegramUrl = base44.agents.getTelegramConnectURL('support-agent');
391
+ * const telegramUrl = doany.agents.getTelegramConnectURL('support-agent');
392
392
  * console.log(`Connect through Telegram: ${telegramUrl}`);
393
393
  * // User can open this URL to start a Telegram conversation
394
394
  * ```
@@ -1,8 +1,8 @@
1
1
  /**
2
- * A connection to the Base44 AI Gateway.
2
+ * A connection to the Doany AI Gateway.
3
3
  *
4
4
  * Contains the base URL and bearer token to use with any OpenAI-compatible
5
- * client pointed at the Base44 AI Gateway.
5
+ * client pointed at the Doany AI Gateway.
6
6
  */
7
7
  export interface AiGatewayConnection {
8
8
  /** Base URL of the gateway's OpenAI-compatible endpoint. */
@@ -23,24 +23,24 @@ export interface AiGatewayModuleConfig {
23
23
  appId: string;
24
24
  }
25
25
  /**
26
- * AI Gateway module for calling Base44's managed AI models from your own code.
26
+ * AI Gateway module for calling Doany's managed AI models from your own code.
27
27
  *
28
28
  * The gateway exposes an OpenAI-compatible Chat Completions endpoint, so any
29
29
  * OpenAI-compatible SDK works against it:
30
30
  * - Build custom AI agents or call models directly from your backend code
31
31
  * - Uses your app's models, billing, and credit quota, no API key to manage
32
32
  *
33
- * Available in user authentication mode (`base44.aiGateway`) and with the
34
- * service-role token via `base44.asServiceRole.aiGateway`.
33
+ * Available in user authentication mode (`doany.aiGateway`) and with the
34
+ * service-role token via `doany.asServiceRole.aiGateway`.
35
35
  */
36
36
  export interface AiGatewayModule {
37
37
  /**
38
- * Gets the connection details for the Base44 AI Gateway.
38
+ * Gets the connection details for the Doany AI Gateway.
39
39
  *
40
40
  * Returns the `baseURL` and `token` to pass to any OpenAI-compatible client.
41
41
  *
42
42
  * The `token` is the current caller's bearer token: the app user's token for
43
- * `base44.aiGateway`, or the service-role token for `base44.asServiceRole.aiGateway`.
43
+ * `doany.aiGateway`, or the service-role token for `doany.asServiceRole.aiGateway`.
44
44
  * When the caller is unauthenticated, `token` is an empty string.
45
45
  *
46
46
  * @returns The gateway {@linkcode AiGatewayConnection | connection} (`baseURL` and `token`).
@@ -51,10 +51,10 @@ export interface AiGatewayModule {
51
51
  * import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
52
52
  * import { z } from "zod";
53
53
  *
54
- * const request = await base44.entities.ReturnRequest.get(returnId);
55
- * const { baseURL, token } = base44.aiGateway.connection();
54
+ * const request = await doany.entities.ReturnRequest.get(returnId);
55
+ * const { baseURL, token } = doany.aiGateway.connection();
56
56
  * // Point any OpenAI-compatible client at `baseURL` with `apiKey: token`.
57
- * const models = createOpenAICompatible({ name: "base44", baseURL, apiKey: token });
57
+ * const models = createOpenAICompatible({ name: "doany", baseURL, apiKey: token });
58
58
  *
59
59
  * const agent = new ToolLoopAgent({
60
60
  * model: models("automatic"),
@@ -68,14 +68,14 @@ export interface AiGatewayModule {
68
68
  * execute: ({ status }) => {
69
69
  * const query = { customer_email: request.customer_email };
70
70
  * if (status) query.status = status;
71
- * return base44.entities.Order.filter(query, "-created_date", 50);
71
+ * return doany.entities.Order.filter(query, "-created_date", 50);
72
72
  * },
73
73
  * }),
74
74
  * submitVerdict: tool({
75
75
  * description: "Record the final verdict",
76
76
  * inputSchema: z.object({ decision: z.enum(["approved", "flagged"]), reason: z.string() }),
77
77
  * execute: ({ decision, reason }) =>
78
- * base44.entities.ReturnRequest.update(returnId, { status: decision, review_note: reason }),
78
+ * doany.entities.ReturnRequest.update(returnId, { status: decision, review_note: reason }),
79
79
  * }),
80
80
  * },
81
81
  * stopWhen: [stepCountIs(8), hasToolCall("submitVerdict")],
@@ -5,7 +5,7 @@ export declare const USER_HEARTBEAT_EVENT_NAME = "__user_heartbeat_event__";
5
5
  export declare const ANALYTICS_INITIALIZATION_EVENT_NAME = "__initialization_event__";
6
6
  export declare const ANALYTICS_SESSION_DURATION_EVENT_NAME = "__session_duration_event__";
7
7
  export declare const ANALYTICS_CONFIG_ENABLE_URL_PARAM_KEY = "analytics-enable";
8
- export declare const ANALYTICS_SESSION_ID_LOCAL_STORAGE_KEY = "base44_analytics_session_id";
8
+ export declare const ANALYTICS_SESSION_ID_LOCAL_STORAGE_KEY = "doany_analytics_session_id";
9
9
  export interface AnalyticsModuleArgs {
10
10
  axiosClient: AxiosInstance;
11
11
  serverUrl: string;
@@ -4,7 +4,7 @@ export const USER_HEARTBEAT_EVENT_NAME = "__user_heartbeat_event__";
4
4
  export const ANALYTICS_INITIALIZATION_EVENT_NAME = "__initialization_event__";
5
5
  export const ANALYTICS_SESSION_DURATION_EVENT_NAME = "__session_duration_event__";
6
6
  export const ANALYTICS_CONFIG_ENABLE_URL_PARAM_KEY = "analytics-enable";
7
- export const ANALYTICS_SESSION_ID_LOCAL_STORAGE_KEY = "base44_analytics_session_id";
7
+ export const ANALYTICS_SESSION_ID_LOCAL_STORAGE_KEY = "doany_analytics_session_id";
8
8
  const defaultConfiguration = {
9
9
  // default to enabled //
10
10
  enabled: true,
@@ -23,7 +23,7 @@ export type TrackEventParams = {
23
23
  *
24
24
  * @example
25
25
  * ```typescript
26
- * base44.analytics.track({
26
+ * doany.analytics.track({
27
27
  * eventName: 'add_to_cart',
28
28
  * properties: {
29
29
  * product_id: 'prod_123',
@@ -83,7 +83,7 @@ export type AnalyticsModuleOptions = {
83
83
  *
84
84
  * ## Authentication Modes
85
85
  *
86
- * This module is only available in user authentication mode (`base44.analytics`).
86
+ * This module is only available in user authentication mode (`doany.analytics`).
87
87
  */
88
88
  export interface AnalyticsModule {
89
89
  /**
@@ -98,7 +98,7 @@ export interface AnalyticsModule {
98
98
  * @example Track a button click
99
99
  * ```typescript
100
100
  * // Track a button click
101
- * base44.analytics.track({
101
+ * doany.analytics.track({
102
102
  * eventName: 'signup_button_click'
103
103
  * });
104
104
  * ```
@@ -106,7 +106,7 @@ export interface AnalyticsModule {
106
106
  * @example Track with properties
107
107
  * ```typescript
108
108
  * // Track with properties
109
- * base44.analytics.track({
109
+ * doany.analytics.track({
110
110
  * eventName: 'add_to_cart',
111
111
  * properties: {
112
112
  * product_id: 'prod_123',