database-petani-mobile/node_modules/@base44/sdk/dist/client.d.ts
2026-02-23 16:39:35 +07:00

97 lines
4.5 KiB
TypeScript

import type { Base44Client, CreateClientConfig, CreateClientOptions } from "./client.types.js";
export type { Base44Client, CreateClientConfig, CreateClientOptions };
/**
* Creates a Base44 client.
*
* 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}.
*
* How you get a client depends on your context:
* - **Inside a Base44 app:** The client is automatically created and configured for you. Import it from `@/api/base44Client`.
* - **External app using Base44 as a backend:** Call `createClient()` directly in your code to create and configure the client.
*
* The client supports three authentication modes:
* - **Anonymous**: Access modules without authentication using `base44.moduleName`. Operations are scoped to public data and permissions.
* - **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.
* - **Service role authentication**: Access modules with elevated permissions using `base44.asServiceRole.moduleName`. Operations can access any data available to the app's admin. Only available in Base44-hosted backend functions. Create a client with service role authentication using {@linkcode createClientFromRequest | createClientFromRequest()}.
*
* For example, when using the {@linkcode EntitiesModule | entities} module:
* - **Anonymous**: Can only read public data.
* - **User authentication**: Can access the current user's data.
* - **Service role authentication**: Can access all data that admins can access.
*
* Most modules are available in all three modes, but with different permission levels. However, some modules are only available in specific authentication modes.
*
* @param config - Configuration object for the client.
* @returns A configured Base44 client instance with access to all SDK modules.
*
* @example
* ```typescript
* // Create a client for your app
* import { createClient } from '@base44/sdk';
*
* const base44 = createClient({
* appId: 'my-app-id'
* });
*
* // Use the client to access your data
* const products = await base44.entities.Products.list();
* ```
*/
export declare function createClient(config: CreateClientConfig): Base44Client;
/**
* Creates a Base44 client from an HTTP request.
*
* This function is designed for use in Base44-hosted backend functions. For frontends and external backends, use {@linkcode createClient | createClient()} instead.
*
* 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 provides admin-level permissions.
*
* To learn more about the Base44 client, see {@linkcode createClient | createClient()}.
*
* @param request - The incoming HTTP request object containing Base44 authentication headers.
* @returns A configured Base44 client instance with authentication from the incoming request.
*
* @example
* ```typescript
* // User authentication in backend function
* import { createClientFromRequest } from 'npm:@base44/sdk';
*
* Deno.serve(async (req) => {
* try {
* const base44 = createClientFromRequest(req);
* const user = await base44.auth.me();
*
* if (!user) {
* return Response.json({ error: 'Unauthorized' }, { status: 401 });
* }
*
* // Access user's data
* const userOrders = await base44.entities.Orders.filter({ userId: user.id });
* return Response.json({ orders: userOrders });
* } catch (error) {
* return Response.json({ error: error.message }, { status: 500 });
* }
* });
* ```
*
* @example
* ```typescript
* // Service role authentication in backend function
* import { createClientFromRequest } from 'npm:@base44/sdk';
*
* Deno.serve(async (req) => {
* try {
* const base44 = createClientFromRequest(req);
*
* // Access admin data with service role permissions
* const recentOrders = await base44.asServiceRole.entities.Orders.list('-created_at', 50);
*
* return Response.json({ orders: recentOrders });
* } catch (error) {
* return Response.json({ error: error.message }, { status: 500 });
* }
* });
* ```
*
*/
export declare function createClientFromRequest(request: Request): Base44Client;